dinocollab-core 2.1.41 → 2.1.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/src/components/create.multi-select-dropdown.js +1 -1
  2. package/dist/src/components/create.multi-select-dropdown.js.map +1 -1
  3. package/dist/src/data-view/create.active-filters-panel.js +1 -1
  4. package/dist/src/data-view/create.active-filters-panel.js.map +1 -1
  5. package/dist/src/data-view/dino.js +1 -1
  6. package/dist/src/data-view/dino.js.map +1 -1
  7. package/dist/src/data-view/filter-store.js +1 -1
  8. package/dist/src/data-view/filter-store.js.map +1 -1
  9. package/dist/src/data-view/query-param-url.js +1 -1
  10. package/dist/src/data-view/query-param-url.js.map +1 -1
  11. package/dist/src/form/create.date-expired.js +1 -1
  12. package/dist/src/form/create.date-expired.js.map +1 -1
  13. package/dist/src/form/create.date-picker.js +1 -1
  14. package/dist/src/form/create.date-picker.js.map +1 -1
  15. package/dist/src/form/create.form-comfirm.js +1 -1
  16. package/dist/src/form/create.form-comfirm.js.map +1 -1
  17. package/dist/src/form/create.form-grid-layout.js +1 -1
  18. package/dist/src/form/create.form-grid-layout.js.map +1 -1
  19. package/dist/src/form/create.input-file.csv-local-parser.js +1 -1
  20. package/dist/src/form/create.input-file.csv-local-parser.js.map +1 -1
  21. package/dist/src/form/create.input.js +1 -1
  22. package/dist/src/form/create.input.js.map +1 -1
  23. package/dist/src/form/create.select-simple.js +1 -1
  24. package/dist/src/form/create.select-simple.js.map +1 -1
  25. package/dist/src/form/validator.js +1 -1
  26. package/dist/src/form/validator.js.map +1 -1
  27. package/dist/src/table/create.action-row.js +1 -1
  28. package/dist/src/table/create.action-row.js.map +1 -1
  29. package/dist/src/table/create.table.js +1 -1
  30. package/dist/src/table/create.table.js.map +1 -1
  31. package/dist/src/table/dino.js +1 -1
  32. package/dist/src/table/dino.js.map +1 -1
  33. package/dist/src/table/helpers.js +1 -1
  34. package/dist/src/table/helpers.js.map +1 -1
  35. package/dist/src/table/ui.units.js +1 -1
  36. package/dist/src/table/ui.units.js.map +1 -1
  37. package/dist/src/table-grid/create.table-grid.js +1 -1
  38. package/dist/src/table-grid/create.table-grid.js.map +1 -1
  39. package/dist/src/table-grid/url-query-param.js +1 -1
  40. package/dist/src/table-grid/url-query-param.js.map +1 -1
  41. package/dist/table/index.js +1 -1
  42. package/dist/types/table/create.table.d.ts +3 -3
  43. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import{defineProperty as n,slicedToArray as o,objectSpread2 as e,toConsumableArray as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,Fragment as i,jsx as r}from"react/jsx-runtime";import{useState as a,useCallback as c,useEffect as u}from"react";import{styled as s,Popover as d,Badge as p,badgeClasses as h,Box as m,Button as v,TextField as f,ToggleButtonGroup as g,ToggleButton as x,Typography as C,List as b,ListItem as y,FormControlLabel as P,Checkbox as w}from"@mui/material";import j from"@mui/icons-material/FilterAltOutlined";import{mergeObjects as z}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{HelpTooltip as A}from"./help-tooltip.js";function k(n){return function(s){var d,p,h,k,S,T,q,B,D,F,H,I,R,Y,_,E,M=a(""),W=o(M,2),X=W[0],G=W[1],J=a(null),K=o(J,2),Q=K[0],U=K[1],V=a(null!==(d=null!==(p=s.options)&&void 0!==p?p:n.options)&&void 0!==d?d:[]),Z=o(V,2),$=Z[0],nn=Z[1],on=a([]),en=o(on,2),ln=en[0],tn=en[1],rn=a(null!==(h=null===(k=s.slots)||void 0===k?void 0:k.defaultLogic)&&void 0!==h?h:"and"),an=o(rn,2),cn=an[0],un=an[1],sn={buttonProps:z(null==n?void 0:n.buttonProps,null===(S=s.slots)||void 0===S?void 0:S.buttonProps),contentProps:null!==(T=null!==(q=null===(B=s.slots)||void 0===B?void 0:B.contentPorps)&&void 0!==q?q:null==n?void 0:n.contentPorps)&&void 0!==T?T:{}},dn=c(function(){var n;s.value&&(un(null!==(n=s.value.logic)&&void 0!==n?n:"and"),tn(s.value.items))},[s.value]),pn=function(n,o){U(null),setTimeout(dn,300)};return u(function(){s.options&&s.options.length>0&&nn(s.options)},[s.options]),u(function(){dn()},[dn]),t(i,{children:[t(v,e(e({color:"inherit",endIcon:r(j,{}),disabled:$.length<1},sn.buttonProps),{},{onClick:function(n){U(n.currentTarget)},children:[n.btnText,r(L,{badgeContent:null===(D=s.value)||void 0===D?void 0:D.items.length,color:"error",overlap:"circular",sx:{transform:"translateY(-50%) translateX(24px)"}})]})),t(O,{open:Boolean(Q),anchorEl:Q,onClose:pn,anchorOrigin:{vertical:"bottom",horizontal:"left"},children:[t(N,{className:"top",children:[r(f,{size:"small",placeholder:null!==(F=n.placeholder)&&void 0!==F?F:"Search",fullWidth:!0,value:X,onChange:function(n){return G(n.target.value)}}),t(g,{size:"small",exclusive:!0,color:"primary",value:cn,onChange:function(n,o){o&&un(o)},children:[r(x,{value:"and",children:"AND"}),r(x,{value:"or",children:"OR"})]}),r(A,{title:"Filter Logic",small:!0,children:t(C,{variant:"body2",color:"text.secondary",children:["Choose how multiple categories are applied.",r("br",{}),r("strong",{children:" AND "})," requires all selected categories, while",r("br",{}),r("strong",{children:" OR "})," matches any."]})})]}),r(m,e(e({className:"menu-content"},sn.contentProps),{},{children:r(b,{children:(R=null!==(H=null===(I=s.value)||void 0===I?void 0:I.items)&&void 0!==H?H:[],Y=$.filter(function(n){return n.toLowerCase().includes(X.toLowerCase())}).sort(function(n,o){return n.localeCompare(o)}),_=Y.filter(function(n){return R.includes(n)}),E=Y.filter(function(n){return!R.includes(n)}),[].concat(l(_),l(E))).map(function(n){return r(y,{sx:{whiteSpace:"nowrap"},children:r(P,{label:n,control:r(w,{checked:ln.includes(n),onChange:function(){return o=n,void tn(function(n){return n.includes(o)?n.filter(function(n){return n!==o}):[].concat(l(n),[o])});var o}})})},n)})})})),t(N,{children:[r(v,{size:"small",onClick:function(){tn([]),s.onChange&&s.onChange({items:[],logic:cn})},color:"inherit",children:"Clear"}),r(m,{sx:{flex:1}}),r(v,{size:"small",onClick:function(){tn([]),pn()},color:"inherit",children:"Cancel"}),r(v,{size:"small",variant:"contained",onClick:function(){s.onChange&&s.onChange({items:ln,logic:cn}),pn()},children:"Apply"})]})]})]})}}var O=s(d)({".MuiPaper-root":{overflow:"hidden",position:"relative",width:"360px"},".menu-content":{overflowY:"auto",maxHeight:"".concat(290,"px"),margin:"2px 2px 2px 0"}}),L=s(p)(n({},"& .".concat(h.badge),{top:"-12px",right:"-6px"})),N=s(m)({alignItems:"center",display:"flex",gap:"6px",height:"58px",padding:"8px 10px",boxShadow:"rgba(99, 99, 99, 0.2) 0px 2px 8px 0px"});export{k as default};
1
+ import{defineProperty as n,slicedToArray as o,objectSpread2 as e,toConsumableArray as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,Fragment as i,jsx as r}from"react/jsx-runtime";import{useState as a,useCallback as c,useEffect as u}from"react";import{styled as s,Popover as d,Badge as p,badgeClasses as h,Box as m,Button as v,TextField as f,ToggleButtonGroup as g,ToggleButton as x,Typography as C,List as b,ListItem as P,FormControlLabel as w,Checkbox as y}from"@mui/material";import j from"@mui/icons-material/FilterAltOutlined";import{HelpTooltip as z}from"./help-tooltip.js";import{mergeObjects as A}from"../utils/helpers.js";function k(n){return function(s){var d,p,h,k,S,T,B,D,F,H,I,R,Y,_,q,E,M=a(""),W=o(M,2),X=W[0],G=W[1],J=a(null),K=o(J,2),Q=K[0],U=K[1],V=a(null!==(d=null!==(p=s.options)&&void 0!==p?p:n.options)&&void 0!==d?d:[]),Z=o(V,2),$=Z[0],nn=Z[1],on=a([]),en=o(on,2),ln=en[0],tn=en[1],rn=a(null!==(h=null===(k=s.slots)||void 0===k?void 0:k.defaultLogic)&&void 0!==h?h:"and"),an=o(rn,2),cn=an[0],un=an[1],sn={buttonProps:A(null==n?void 0:n.buttonProps,null===(S=s.slots)||void 0===S?void 0:S.buttonProps),contentProps:null!==(T=null!==(B=null===(D=s.slots)||void 0===D?void 0:D.contentPorps)&&void 0!==B?B:null==n?void 0:n.contentPorps)&&void 0!==T?T:{}},dn=c(function(){var n;s.value&&(un(null!==(n=s.value.logic)&&void 0!==n?n:"and"),tn(s.value.items))},[s.value]),pn=function(n,o){U(null),setTimeout(dn,300)};return u(function(){s.options&&s.options.length>0&&nn(s.options)},[s.options]),u(function(){dn()},[dn]),t(i,{children:[t(v,e(e({color:"inherit",endIcon:r(j,{}),disabled:$.length<1},sn.buttonProps),{},{onClick:function(n){U(n.currentTarget)},children:[n.btnText,r(L,{badgeContent:null===(F=s.value)||void 0===F?void 0:F.items.length,color:"error",overlap:"circular",sx:{transform:"translateY(-50%) translateX(24px)"}})]})),t(O,{open:Boolean(Q),anchorEl:Q,onClose:pn,anchorOrigin:{vertical:"bottom",horizontal:"left"},children:[t(N,{className:"top",children:[r(f,{size:"small",placeholder:null!==(H=n.placeholder)&&void 0!==H?H:"Search",fullWidth:!0,value:X,onChange:function(n){return G(n.target.value)}}),t(g,{size:"small",exclusive:!0,color:"primary",value:cn,onChange:function(n,o){o&&un(o)},children:[r(x,{value:"and",children:"AND"}),r(x,{value:"or",children:"OR"})]}),r(z,{title:"Filter Logic",small:!0,children:t(C,{variant:"body2",color:"text.secondary",children:["Choose how multiple categories are applied.",r("br",{}),r("strong",{children:" AND "})," requires all selected categories, while",r("br",{}),r("strong",{children:" OR "})," matches any."]})})]}),r(m,e(e({className:"menu-content"},sn.contentProps),{},{children:r(b,{children:(Y=null!==(I=null===(R=s.value)||void 0===R?void 0:R.items)&&void 0!==I?I:[],_=$.filter(function(n){return n.toLowerCase().includes(X.toLowerCase())}).sort(function(n,o){return n.localeCompare(o)}),q=_.filter(function(n){return Y.includes(n)}),E=_.filter(function(n){return!Y.includes(n)}),[].concat(l(q),l(E))).map(function(n){return r(P,{sx:{whiteSpace:"nowrap"},children:r(w,{label:n,control:r(y,{checked:ln.includes(n),onChange:function(){return o=n,void tn(function(n){return n.includes(o)?n.filter(function(n){return n!==o}):[].concat(l(n),[o])});var o}})})},n)})})})),t(N,{children:[r(v,{size:"small",onClick:function(){tn([]),s.onChange&&s.onChange({items:[],logic:cn})},color:"inherit",children:"Clear"}),r(m,{sx:{flex:1}}),r(v,{size:"small",onClick:function(){tn([]),pn()},color:"inherit",children:"Cancel"}),r(v,{size:"small",variant:"contained",onClick:function(){s.onChange&&s.onChange({items:ln,logic:cn}),pn()},children:"Apply"})]})]})]})}}var O=s(d)({".MuiPaper-root":{overflow:"hidden",position:"relative",width:"360px"},".menu-content":{overflowY:"auto",maxHeight:"".concat(290,"px"),margin:"2px 2px 2px 0"}}),L=s(p)(n({},"& .".concat(h.badge),{top:"-12px",right:"-6px"})),N=s(m)({alignItems:"center",display:"flex",gap:"6px",height:"58px",padding:"8px 10px",boxShadow:"rgba(99, 99, 99, 0.2) 0px 2px 8px 0px"});export{k as default};
2
2
  //# sourceMappingURL=create.multi-select-dropdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.multi-select-dropdown.js","sources":["../../../src/components/create.multi-select-dropdown.tsx"],"sourcesContent":["import React, { FC, useCallback, useEffect, useState } from 'react'\r\nimport { Badge, badgeClasses, Box, BoxProps, Button, ButtonProps, Checkbox } from '@mui/material'\r\nimport { FormControlLabel, List, ListItem, Popover, styled, TextField, ToggleButton, ToggleButtonGroup, Typography } from '@mui/material'\r\nimport FilterAltOutlinedIcon from '@mui/icons-material/FilterAltOutlined'\r\nimport { mergeObjects } from '../utils'\r\nimport HelpTooltip from './help-tooltip'\r\n\r\nexport type IMultiSelectDropdownFilterLogic = 'and' | 'or'\r\n\r\nexport interface IMultiSelectDropdownFilter {\r\n items: string[]\r\n logic?: IMultiSelectDropdownFilterLogic\r\n}\r\n\r\nexport type IMultiSelectDropdownChange = (value: IMultiSelectDropdownFilter) => void\r\n\r\nexport interface IMultiSelectDropdownSlots {\r\n buttonProps?: ButtonProps\r\n contentPorps?: BoxProps\r\n defaultLogic?: IMultiSelectDropdownFilterLogic\r\n}\r\n\r\nexport interface IMultiSelectDropdownProps {\r\n options?: string[]\r\n value?: IMultiSelectDropdownFilter\r\n onChange?: IMultiSelectDropdownChange\r\n slots?: IMultiSelectDropdownSlots\r\n}\r\n\r\nexport interface IMultiSelectDropdownParams extends IMultiSelectDropdownSlots {\r\n btnText: string\r\n options?: string[]\r\n placeholder?: string\r\n}\r\n\r\nfunction CreateMultiSelectDropdown(params: IMultiSelectDropdownParams) {\r\n const MenuSelectMultiple: FC<IMultiSelectDropdownProps> = (props) => {\r\n const [search, setSearch] = useState<string>('')\r\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\r\n const [options, setOptions] = useState<string[]>(props.options ?? params.options ?? [])\r\n const [itemSelecteds, setItemSelecteds] = useState<string[]>([])\r\n const [logic, setLogic] = useState(props.slots?.defaultLogic ?? 'and')\r\n\r\n const mergeConfig = {\r\n buttonProps: mergeObjects<ButtonProps>(params?.buttonProps, props.slots?.buttonProps),\r\n contentProps: props.slots?.contentPorps ?? params?.contentPorps ?? {}\r\n }\r\n\r\n const getOptions = () => {\r\n const values = props.value?.items ?? []\r\n const list = options.filter((x) => x.toLowerCase().includes(search.toLowerCase())).sort((a, b) => a.localeCompare(b))\r\n\r\n const prioritized = list.filter((x) => values.includes(x))\r\n const others = list.filter((x) => !values.includes(x))\r\n\r\n return [...prioritized, ...others]\r\n }\r\n\r\n const setValueWithProps = useCallback(() => {\r\n if (props.value) {\r\n setLogic(props.value.logic ?? 'and')\r\n setItemSelecteds(props.value.items)\r\n }\r\n }, [props.value])\r\n\r\n const handleOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n setAnchorEl(event.currentTarget)\r\n }\r\n\r\n const handleClose = (event?: {}, reason?: 'backdropClick' | 'escapeKeyDown') => {\r\n setAnchorEl(null)\r\n setTimeout(setValueWithProps, 300)\r\n }\r\n\r\n const handleToggle = (value: string) => {\r\n setItemSelecteds((prev) => (prev.includes(value) ? prev.filter((t) => t !== value) : [...prev, value]))\r\n }\r\n\r\n const handleClear = () => {\r\n setItemSelecteds([])\r\n props.onChange && props.onChange({ items: [], logic })\r\n }\r\n\r\n const handleCancel = () => {\r\n setItemSelecteds([])\r\n handleClose()\r\n }\r\n\r\n const handleApply = () => {\r\n props.onChange && props.onChange({ items: itemSelecteds, logic })\r\n handleClose()\r\n }\r\n\r\n const handleChangeLogic = (_: React.MouseEvent<HTMLElement>, value: any) => {\r\n if (value) setLogic(value)\r\n }\r\n\r\n useEffect(() => {\r\n if (props.options && props.options.length > 0) setOptions(props.options)\r\n }, [props.options])\r\n\r\n useEffect(() => {\r\n setValueWithProps()\r\n }, [setValueWithProps])\r\n\r\n return (\r\n <>\r\n <Button color='inherit' endIcon={<FilterAltOutlinedIcon />} disabled={options.length < 1} {...mergeConfig.buttonProps} onClick={handleOpen}>\r\n {params.btnText}\r\n <ButtonBadge\r\n badgeContent={props.value?.items.length}\r\n color='error'\r\n overlap='circular'\r\n sx={{ transform: 'translateY(-50%) translateX(24px)' }}\r\n />\r\n </Button>\r\n <CustomPopover open={Boolean(anchorEl)} anchorEl={anchorEl} onClose={handleClose} anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}>\r\n <WrapActions className='top'>\r\n <TextField\r\n size='small'\r\n placeholder={params.placeholder ?? 'Search'}\r\n fullWidth\r\n value={search}\r\n onChange={(e) => setSearch(e.target.value)}\r\n />\r\n <ToggleButtonGroup size='small' exclusive color='primary' value={logic} onChange={handleChangeLogic}>\r\n <ToggleButton value='and'>AND</ToggleButton>\r\n <ToggleButton value='or'>OR</ToggleButton>\r\n </ToggleButtonGroup>\r\n <HelpTooltip title='Filter Logic' small>\r\n <Typography variant='body2' color='text.secondary'>\r\n Choose how multiple categories are applied.\r\n <br />\r\n <strong> AND </strong> requires all selected categories, while\r\n <br />\r\n <strong> OR </strong> matches any.\r\n </Typography>\r\n </HelpTooltip>\r\n </WrapActions>\r\n <Box className='menu-content' {...mergeConfig.contentProps}>\r\n <List>\r\n {getOptions().map((x) => (\r\n <ListItem key={x} sx={{ whiteSpace: 'nowrap' }}>\r\n <FormControlLabel label={x} control={<Checkbox checked={itemSelecteds.includes(x)} onChange={() => handleToggle(x)} />} />\r\n </ListItem>\r\n ))}\r\n </List>\r\n </Box>\r\n <WrapActions>\r\n <Button size='small' onClick={handleClear} color='inherit'>\r\n Clear\r\n </Button>\r\n <Box sx={{ flex: 1 }} />\r\n <Button size='small' onClick={handleCancel} color='inherit'>\r\n Cancel\r\n </Button>\r\n <Button size='small' variant='contained' onClick={handleApply}>\r\n Apply\r\n </Button>\r\n </WrapActions>\r\n </CustomPopover>\r\n </>\r\n )\r\n }\r\n\r\n return MenuSelectMultiple\r\n}\r\n\r\nexport default CreateMultiSelectDropdown\r\n\r\nconst heightItem = 58\r\nconst CustomPopover = styled(Popover)({\r\n '.MuiPaper-root': {\r\n overflow: 'hidden',\r\n position: 'relative',\r\n width: '360px'\r\n },\r\n '.menu-content': {\r\n overflowY: 'auto',\r\n maxHeight: `${heightItem * 5}px`,\r\n margin: '2px 2px 2px 0'\r\n }\r\n})\r\n\r\nconst ButtonBadge = styled(Badge)({\r\n [`& .${badgeClasses.badge}`]: {\r\n top: '-12px',\r\n right: '-6px'\r\n }\r\n})\r\nconst WrapActions = styled(Box)({\r\n alignItems: 'center',\r\n display: 'flex',\r\n gap: '6px',\r\n height: '58px',\r\n padding: '8px 10px',\r\n boxShadow: 'rgba(99, 99, 99, 0.2) 0px 2px 8px 0px'\r\n})\r\n"],"names":["CreateMultiSelectDropdown","params","props","_ref","_props$options","_props$slots$defaultL","_props$slots","_props$slots2","_ref2","_props$slots$contentP","_props$slots3","_props$value2","_params$placeholder","_props$value$items","_props$value","values","list","prioritized","others","_useState","useState","_useState2","_slicedToArray","search","setSearch","_useState3","_useState4","anchorEl","setAnchorEl","_useState5","options","_useState6","setOptions","_useState7","_useState8","itemSelecteds","setItemSelecteds","_useState9","slots","defaultLogic","_useState0","logic","setLogic","mergeConfig","buttonProps","mergeObjects","contentProps","contentPorps","setValueWithProps","useCallback","_props$value$logic","value","items","handleClose","event","reason","setTimeout","useEffect","length","_jsxs","_Fragment","children","Button","_objectSpread","color","endIcon","_jsx","FilterAltOutlinedIcon","disabled","onClick","currentTarget","btnText","ButtonBadge","badgeContent","overlap","sx","transform","CustomPopover","open","Boolean","onClose","anchorOrigin","vertical","horizontal","WrapActions","className","TextField","size","placeholder","fullWidth","onChange","e","target","ToggleButtonGroup","exclusive","_","ToggleButton","HelpTooltip","title","small","Typography","variant","Box","List","filter","x","toLowerCase","includes","sort","a","b","localeCompare","concat","_toConsumableArray","map","ListItem","whiteSpace","FormControlLabel","label","control","Checkbox","checked","prev","t","flex","styled","Popover","overflow","position","width","overflowY","maxHeight","heightItem","margin","Badge","_defineProperty","badgeClasses","badge","top","right","alignItems","display","gap","height","padding","boxShadow"],"mappings":"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"}
1
+ {"version":3,"file":"create.multi-select-dropdown.js","sources":["../../../src/components/create.multi-select-dropdown.tsx"],"sourcesContent":["import React, { FC, useCallback, useEffect, useState } from 'react'\r\nimport { Badge, badgeClasses, Box, BoxProps, Button, ButtonProps, Checkbox } from '@mui/material'\r\nimport { FormControlLabel, List, ListItem, Popover, styled, TextField, ToggleButton, ToggleButtonGroup, Typography } from '@mui/material'\r\nimport FilterAltOutlinedIcon from '@mui/icons-material/FilterAltOutlined'\r\nimport { mergeObjects } from '../utils'\r\nimport HelpTooltip from './help-tooltip'\r\n\r\nexport type IMultiSelectDropdownFilterLogic = 'and' | 'or'\r\n\r\nexport interface IMultiSelectDropdownFilter {\r\n items: string[]\r\n logic?: IMultiSelectDropdownFilterLogic\r\n}\r\n\r\nexport type IMultiSelectDropdownChange = (value: IMultiSelectDropdownFilter) => void\r\n\r\nexport interface IMultiSelectDropdownSlots {\r\n buttonProps?: ButtonProps\r\n contentPorps?: BoxProps\r\n defaultLogic?: IMultiSelectDropdownFilterLogic\r\n}\r\n\r\nexport interface IMultiSelectDropdownProps {\r\n options?: string[]\r\n value?: IMultiSelectDropdownFilter\r\n onChange?: IMultiSelectDropdownChange\r\n slots?: IMultiSelectDropdownSlots\r\n}\r\n\r\nexport interface IMultiSelectDropdownParams extends IMultiSelectDropdownSlots {\r\n btnText: string\r\n options?: string[]\r\n placeholder?: string\r\n}\r\n\r\nfunction CreateMultiSelectDropdown(params: IMultiSelectDropdownParams) {\r\n const MenuSelectMultiple: FC<IMultiSelectDropdownProps> = (props) => {\r\n const [search, setSearch] = useState<string>('')\r\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\r\n const [options, setOptions] = useState<string[]>(props.options ?? params.options ?? [])\r\n const [itemSelecteds, setItemSelecteds] = useState<string[]>([])\r\n const [logic, setLogic] = useState(props.slots?.defaultLogic ?? 'and')\r\n\r\n const mergeConfig = {\r\n buttonProps: mergeObjects<ButtonProps>(params?.buttonProps, props.slots?.buttonProps),\r\n contentProps: props.slots?.contentPorps ?? params?.contentPorps ?? {}\r\n }\r\n\r\n const getOptions = () => {\r\n const values = props.value?.items ?? []\r\n const list = options.filter((x) => x.toLowerCase().includes(search.toLowerCase())).sort((a, b) => a.localeCompare(b))\r\n\r\n const prioritized = list.filter((x) => values.includes(x))\r\n const others = list.filter((x) => !values.includes(x))\r\n\r\n return [...prioritized, ...others]\r\n }\r\n\r\n const setValueWithProps = useCallback(() => {\r\n if (props.value) {\r\n setLogic(props.value.logic ?? 'and')\r\n setItemSelecteds(props.value.items)\r\n }\r\n }, [props.value])\r\n\r\n const handleOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n setAnchorEl(event.currentTarget)\r\n }\r\n\r\n const handleClose = (event?: {}, reason?: 'backdropClick' | 'escapeKeyDown') => {\r\n setAnchorEl(null)\r\n setTimeout(setValueWithProps, 300)\r\n }\r\n\r\n const handleToggle = (value: string) => {\r\n setItemSelecteds((prev) => (prev.includes(value) ? prev.filter((t) => t !== value) : [...prev, value]))\r\n }\r\n\r\n const handleClear = () => {\r\n setItemSelecteds([])\r\n props.onChange && props.onChange({ items: [], logic })\r\n }\r\n\r\n const handleCancel = () => {\r\n setItemSelecteds([])\r\n handleClose()\r\n }\r\n\r\n const handleApply = () => {\r\n props.onChange && props.onChange({ items: itemSelecteds, logic })\r\n handleClose()\r\n }\r\n\r\n const handleChangeLogic = (_: React.MouseEvent<HTMLElement>, value: any) => {\r\n if (value) setLogic(value)\r\n }\r\n\r\n useEffect(() => {\r\n if (props.options && props.options.length > 0) setOptions(props.options)\r\n }, [props.options])\r\n\r\n useEffect(() => {\r\n setValueWithProps()\r\n }, [setValueWithProps])\r\n\r\n return (\r\n <>\r\n <Button color='inherit' endIcon={<FilterAltOutlinedIcon />} disabled={options.length < 1} {...mergeConfig.buttonProps} onClick={handleOpen}>\r\n {params.btnText}\r\n <ButtonBadge\r\n badgeContent={props.value?.items.length}\r\n color='error'\r\n overlap='circular'\r\n sx={{ transform: 'translateY(-50%) translateX(24px)' }}\r\n />\r\n </Button>\r\n <CustomPopover open={Boolean(anchorEl)} anchorEl={anchorEl} onClose={handleClose} anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}>\r\n <WrapActions className='top'>\r\n <TextField\r\n size='small'\r\n placeholder={params.placeholder ?? 'Search'}\r\n fullWidth\r\n value={search}\r\n onChange={(e) => setSearch(e.target.value)}\r\n />\r\n <ToggleButtonGroup size='small' exclusive color='primary' value={logic} onChange={handleChangeLogic}>\r\n <ToggleButton value='and'>AND</ToggleButton>\r\n <ToggleButton value='or'>OR</ToggleButton>\r\n </ToggleButtonGroup>\r\n <HelpTooltip title='Filter Logic' small>\r\n <Typography variant='body2' color='text.secondary'>\r\n Choose how multiple categories are applied.\r\n <br />\r\n <strong> AND </strong> requires all selected categories, while\r\n <br />\r\n <strong> OR </strong> matches any.\r\n </Typography>\r\n </HelpTooltip>\r\n </WrapActions>\r\n <Box className='menu-content' {...mergeConfig.contentProps}>\r\n <List>\r\n {getOptions().map((x) => (\r\n <ListItem key={x} sx={{ whiteSpace: 'nowrap' }}>\r\n <FormControlLabel label={x} control={<Checkbox checked={itemSelecteds.includes(x)} onChange={() => handleToggle(x)} />} />\r\n </ListItem>\r\n ))}\r\n </List>\r\n </Box>\r\n <WrapActions>\r\n <Button size='small' onClick={handleClear} color='inherit'>\r\n Clear\r\n </Button>\r\n <Box sx={{ flex: 1 }} />\r\n <Button size='small' onClick={handleCancel} color='inherit'>\r\n Cancel\r\n </Button>\r\n <Button size='small' variant='contained' onClick={handleApply}>\r\n Apply\r\n </Button>\r\n </WrapActions>\r\n </CustomPopover>\r\n </>\r\n )\r\n }\r\n\r\n return MenuSelectMultiple\r\n}\r\n\r\nexport default CreateMultiSelectDropdown\r\n\r\nconst heightItem = 58\r\nconst CustomPopover = styled(Popover)({\r\n '.MuiPaper-root': {\r\n overflow: 'hidden',\r\n position: 'relative',\r\n width: '360px'\r\n },\r\n '.menu-content': {\r\n overflowY: 'auto',\r\n maxHeight: `${heightItem * 5}px`,\r\n margin: '2px 2px 2px 0'\r\n }\r\n})\r\n\r\nconst ButtonBadge = styled(Badge)({\r\n [`& .${badgeClasses.badge}`]: {\r\n top: '-12px',\r\n right: '-6px'\r\n }\r\n})\r\nconst WrapActions = styled(Box)({\r\n alignItems: 'center',\r\n display: 'flex',\r\n gap: '6px',\r\n height: '58px',\r\n padding: '8px 10px',\r\n boxShadow: 'rgba(99, 99, 99, 0.2) 0px 2px 8px 0px'\r\n})\r\n"],"names":["CreateMultiSelectDropdown","params","props","_ref","_props$options","_props$slots$defaultL","_props$slots","_props$slots2","_ref2","_props$slots$contentP","_props$slots3","_props$value2","_params$placeholder","_props$value$items","_props$value","values","list","prioritized","others","_useState","useState","_useState2","_slicedToArray","search","setSearch","_useState3","_useState4","anchorEl","setAnchorEl","_useState5","options","_useState6","setOptions","_useState7","_useState8","itemSelecteds","setItemSelecteds","_useState9","slots","defaultLogic","_useState0","logic","setLogic","mergeConfig","buttonProps","mergeObjects","contentProps","contentPorps","setValueWithProps","useCallback","_props$value$logic","value","items","handleClose","event","reason","setTimeout","useEffect","length","_jsxs","_Fragment","children","Button","_objectSpread","color","endIcon","_jsx","FilterAltOutlinedIcon","disabled","onClick","currentTarget","btnText","ButtonBadge","badgeContent","overlap","sx","transform","CustomPopover","open","Boolean","onClose","anchorOrigin","vertical","horizontal","WrapActions","className","TextField","size","placeholder","fullWidth","onChange","e","target","ToggleButtonGroup","exclusive","_","ToggleButton","HelpTooltip","title","small","Typography","variant","Box","List","filter","x","toLowerCase","includes","sort","a","b","localeCompare","concat","_toConsumableArray","map","ListItem","whiteSpace","FormControlLabel","label","control","Checkbox","checked","prev","t","flex","styled","Popover","overflow","position","width","overflowY","maxHeight","heightItem","margin","Badge","_defineProperty","badgeClasses","badge","top","right","alignItems","display","gap","height","padding","boxShadow"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as e,inherits as t,createClass as i,classCallCheck as r,callSuper as a}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,Fragment as l,jsxs as o}from"react/jsx-runtime";import{Component as c,Fragment as s}from"react";import{styled as d,Box as u,Collapse as m,Typography as v,Chip as f}from"@mui/material";import{createFilterStore as p}from"./filter-store.js";import{ClearAllButton as h,mapSortConfigs as x}from"./ui.units.js";import{mapDataViewContext as C}from"./context.js";import{formatDatetime as g}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{mapDateLogicText as S}from"./helpers.js";var w={root:"ActiveFiltersPanel-root",content:"ActiveFiltersPanel-content",item:"ActiveFiltersPanel-item",itemContent:"ActiveFiltersPanel-itemContent",itemChip:"ActiveFiltersPanel-itemChip",removeButton:"ActiveFiltersPanel-removeButton",overlay:"ActiveFiltersPanel-overlay"};function b(){return function(){function d(t){var i;return r(this,d),i=a(this,d,[t]),e(i,"handleAnimationExited",function(){i.setState({isClosing:!0})}),e(i,"renderItems",function(e){var t;return o(u,{className:w.item,children:[o(v,{variant:"caption",sx:{fontWeight:700},children:[e.label||(null===(t=e.field)||void 0===t?void 0:t.toString()),":"]}),n(u,{className:w.itemContent,children:e.items.map(function(t){return n(f,{clickable:!0,size:"small",label:t.label||t.value,className:w.itemChip,onDelete:function(){e.isQuickSearch?i.removeQuickSearch(t):e.field&&i.removeFilter(e.field,t)}},t.value)})})]})}),e(i,"renderFilters",function(){var e,t=(null===(e=i.dataViewContext.filterState)||void 0===e?void 0:e.filter)||{},r=Object.keys(t);return 0===r.length?n(l,{}):r.map(function(e){var r,a=(null!==(r=t[e])&&void 0!==r?r:[]).reduce(function(e,t){var i,r,a,n,l=t.label||(null===(i=t.value)||void 0===i?void 0:i.toString());"date"===t.type&&t.dateLogic&&(l="".concat(S[t.dateLogic]," ").concat(g(null!==(a=null===(n=t.value)||void 0===n?void 0:n.toString())&&void 0!==a?a:"","style2")));return t.value&&e.push({value:null===(r=t.value)||void 0===r?void 0:r.toString(),label:l}),e},[]);return n(s,{children:i.renderItems({field:e,label:e.toString(),items:a})},e.toString())})}),e(i,"renderSort",function(){var e,t,r=null===(e=i.dataViewContext.filterState)||void 0===e?void 0:e.sort;if(!r)return n(l,{});var a=null===(t=i.dataViewContext.filterBarConfigs.fields)||void 0===t?void 0:t[r.field],c=(null==a?void 0:a.label)||r.field.toString(),s=x[r.direction];return o(u,{className:w.item,children:[n(v,{variant:"caption",sx:{fontWeight:700},children:"Sort:"}),n(f,{clickable:!0,size:"small",label:o(u,{sx:{display:"flex",alignItems:"center",gap:.5},children:[n("span",{children:c}),s.icon]}),className:w.itemChip,onClick:i.toggleSortDirection,onDelete:function(){return i.removeSort()},title:"".concat(c," - ").concat(s.title)})]})}),e(i,"removeFilter",function(e,t){var r=p(i.dataViewContext.filterState).removeFilterItem(e,t.value,{reason:"filter"});i.dataViewContext.onFilterStateChange(r.build())}),e(i,"removeQuickSearch",function(e){var t=p(i.dataViewContext.filterState).removeQuickSearchItem(e.value,{reason:"quickSearch"});i.dataViewContext.onFilterStateChange(t.build())}),e(i,"removeSort",function(){var e=p(i.dataViewContext.filterState).removeSort({reason:"sort"});i.dataViewContext.onFilterStateChange(e.build())}),e(i,"toggleSortDirection",function(){var e=p(i.dataViewContext.filterState).toggleSortDirection({reason:"sort"});i.dataViewContext.onFilterStateChange(e.build())}),e(i,"handleClearAll",function(){var e=i.dataViewContext.filterBarConfigs.defaultValue||{},t=p(i.dataViewContext.filterState,e).reset();i.dataViewContext.onFilterStateChange(t.build())}),i.state={data:null,isClosing:!1},i}return t(d,c),i(d,[{key:"render",value:function(){var e=this;return C(function(t){if(e.dataViewContext=t,!e.dataViewContext)return n(l,{});var i=e.dataViewContext.filterBarConfigs.defaultValue,r=p(e.dataViewContext.filterState,i).isEmpty();return n(m,{in:!r,timeout:300,unmountOnExit:!0,orientation:"vertical",onExited:e.handleAnimationExited,children:o(k,{className:w.root,children:[o(u,{className:w.content,children:[e.renderSort(),e.renderQuickSearch(),e.renderFilters(),!r&&n(h,{className:w.removeButton,onClick:e.handleClearAll})]}),e.props.loading&&n(u,{className:w.overlay})]})})})}},{key:"renderQuickSearch",value:function(){var e,t=(null===(e=this.dataViewContext.filterState)||void 0===e?void 0:e.quickSearch)||[],i=(Array.isArray(t)?t:[t]).map(function(e){return{value:e}});return i&&0!==i.length?this.renderItems({label:"Quick search",items:i,isQuickSearch:!0}):n(l,{})}}])}()}var k=d(u)(e(e(e(e(e({position:"relative"},".".concat(w.content),{display:"flex",alignItems:"center",flexWrap:"wrap",gap:"8px"}),".".concat(w.item),{display:"flex",flexWrap:"wrap",border:"dashed 1px var(--color-divider, rgba(145 160 170 / 20%))",borderRadius:"4px",alignItems:"center",padding:"6px 8px",gap:"8px"}),".".concat(w.itemContent),{display:"flex",flexWrap:"wrap",gap:"4px"}),".".concat(w.itemChip),{borderRadius:"4px",height:"100%","& .MuiChip-label":{overflowWrap:"break-word",wordBreak:"break-word",whiteSpace:"normal",textOverflow:"clip"}}),".".concat(w.overlay),{position:"absolute",top:0,left:0,width:"100%",height:"100%",backdropFilter:"blur(1px)"}));export{w as activeFiltersPanelClasses,b as default};
1
+ import{defineProperty as e,inherits as t,createClass as i,classCallCheck as r,callSuper as a}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,Fragment as l,jsxs as o}from"react/jsx-runtime";import{Component as c,Fragment as s}from"react";import{styled as d,Box as u,Collapse as v,Typography as m,Chip as f}from"@mui/material";import{createFilterStore as p}from"./filter-store.js";import{ClearAllButton as h,mapSortConfigs as x}from"./ui.units.js";import{mapDataViewContext as C}from"./context.js";import{mapDateLogicText as g}from"./helpers.js";import{formatDatetime as S}from"../utils/helpers.js";var w={root:"ActiveFiltersPanel-root",content:"ActiveFiltersPanel-content",item:"ActiveFiltersPanel-item",itemContent:"ActiveFiltersPanel-itemContent",itemChip:"ActiveFiltersPanel-itemChip",removeButton:"ActiveFiltersPanel-removeButton",overlay:"ActiveFiltersPanel-overlay"};function b(){return function(){function d(t){var i;return r(this,d),i=a(this,d,[t]),e(i,"handleAnimationExited",function(){i.setState({isClosing:!0})}),e(i,"renderItems",function(e){var t;return o(u,{className:w.item,children:[o(m,{variant:"caption",sx:{fontWeight:700},children:[e.label||(null===(t=e.field)||void 0===t?void 0:t.toString()),":"]}),n(u,{className:w.itemContent,children:e.items.map(function(t){return n(f,{clickable:!0,size:"small",label:t.label||t.value,className:w.itemChip,onDelete:function(){e.isQuickSearch?i.removeQuickSearch(t):e.field&&i.removeFilter(e.field,t)}},t.value)})})]})}),e(i,"renderFilters",function(){var e,t=(null===(e=i.dataViewContext.filterState)||void 0===e?void 0:e.filter)||{},r=Object.keys(t);return 0===r.length?n(l,{}):r.map(function(e){var r,a=(null!==(r=t[e])&&void 0!==r?r:[]).reduce(function(e,t){var i,r,a,n,l=t.label||(null===(i=t.value)||void 0===i?void 0:i.toString());"date"===t.type&&t.dateLogic&&(l="".concat(g[t.dateLogic]," ").concat(S(null!==(a=null===(n=t.value)||void 0===n?void 0:n.toString())&&void 0!==a?a:"","style2")));return t.value&&e.push({value:null===(r=t.value)||void 0===r?void 0:r.toString(),label:l}),e},[]);return n(s,{children:i.renderItems({field:e,label:e.toString(),items:a})},e.toString())})}),e(i,"renderSort",function(){var e,t,r=null===(e=i.dataViewContext.filterState)||void 0===e?void 0:e.sort;if(!r)return n(l,{});var a=null===(t=i.dataViewContext.filterBarConfigs.fields)||void 0===t?void 0:t[r.field],c=(null==a?void 0:a.label)||r.field.toString(),s=x[r.direction];return o(u,{className:w.item,children:[n(m,{variant:"caption",sx:{fontWeight:700},children:"Sort:"}),n(f,{clickable:!0,size:"small",label:o(u,{sx:{display:"flex",alignItems:"center",gap:.5},children:[n("span",{children:c}),s.icon]}),className:w.itemChip,onClick:i.toggleSortDirection,onDelete:function(){return i.removeSort()},title:"".concat(c," - ").concat(s.title)})]})}),e(i,"removeFilter",function(e,t){var r=p(i.dataViewContext.filterState).removeFilterItem(e,t.value,{reason:"filter"});i.dataViewContext.onFilterStateChange(r.build())}),e(i,"removeQuickSearch",function(e){var t=p(i.dataViewContext.filterState).removeQuickSearchItem(e.value,{reason:"quickSearch"});i.dataViewContext.onFilterStateChange(t.build())}),e(i,"removeSort",function(){var e=p(i.dataViewContext.filterState).removeSort({reason:"sort"});i.dataViewContext.onFilterStateChange(e.build())}),e(i,"toggleSortDirection",function(){var e=p(i.dataViewContext.filterState).toggleSortDirection({reason:"sort"});i.dataViewContext.onFilterStateChange(e.build())}),e(i,"handleClearAll",function(){var e=i.dataViewContext.filterBarConfigs.defaultValue||{},t=p(i.dataViewContext.filterState,e).reset();i.dataViewContext.onFilterStateChange(t.build())}),i.state={data:null,isClosing:!1},i}return t(d,c),i(d,[{key:"render",value:function(){var e=this;return C(function(t){if(e.dataViewContext=t,!e.dataViewContext)return n(l,{});var i=e.dataViewContext.filterBarConfigs.defaultValue,r=p(e.dataViewContext.filterState,i).isEmpty();return n(v,{in:!r,timeout:300,unmountOnExit:!0,orientation:"vertical",onExited:e.handleAnimationExited,children:o(k,{className:w.root,children:[o(u,{className:w.content,children:[e.renderSort(),e.renderQuickSearch(),e.renderFilters(),!r&&n(h,{className:w.removeButton,onClick:e.handleClearAll})]}),e.props.loading&&n(u,{className:w.overlay})]})})})}},{key:"renderQuickSearch",value:function(){var e,t=(null===(e=this.dataViewContext.filterState)||void 0===e?void 0:e.quickSearch)||[],i=(Array.isArray(t)?t:[t]).map(function(e){return{value:e}});return i&&0!==i.length?this.renderItems({label:"Quick search",items:i,isQuickSearch:!0}):n(l,{})}}])}()}var k=d(u)(e(e(e(e(e({position:"relative"},".".concat(w.content),{display:"flex",alignItems:"center",flexWrap:"wrap",gap:"8px"}),".".concat(w.item),{display:"flex",flexWrap:"wrap",border:"dashed 1px var(--color-divider, rgba(145 160 170 / 20%))",borderRadius:"4px",alignItems:"center",padding:"6px 8px",gap:"8px"}),".".concat(w.itemContent),{display:"flex",flexWrap:"wrap",gap:"4px"}),".".concat(w.itemChip),{borderRadius:"4px",height:"100%","& .MuiChip-label":{overflowWrap:"break-word",wordBreak:"break-word",whiteSpace:"normal",textOverflow:"clip"}}),".".concat(w.overlay),{position:"absolute",top:0,left:0,width:"100%",height:"100%",backdropFilter:"blur(1px)"}));export{w as activeFiltersPanelClasses,b as default};
2
2
  //# sourceMappingURL=create.active-filters-panel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.active-filters-panel.js","sources":["../../../src/data-view/create.active-filters-panel.tsx"],"sourcesContent":["import React, { Component, ComponentType, Fragment } from 'react'\r\nimport { Box, Chip, Collapse, styled, Typography } from '@mui/material'\r\nimport { createFilterStore } from './filter-store'\r\nimport { ClearAllButton, mapSortConfigs } from './ui.units'\r\nimport { IDataViewContext, mapDataViewContext } from './context'\r\nimport { IFilterItem, IFilterMap, IFilterState, IItemBase } from './types'\r\nimport { formatDatetime } from '../utils'\r\nimport { mapDateLogicText } from './helpers'\r\n\r\nexport const activeFiltersPanelClasses = {\r\n root: 'ActiveFiltersPanel-root',\r\n content: 'ActiveFiltersPanel-content',\r\n item: 'ActiveFiltersPanel-item',\r\n itemContent: 'ActiveFiltersPanel-itemContent',\r\n itemChip: 'ActiveFiltersPanel-itemChip',\r\n removeButton: 'ActiveFiltersPanel-removeButton',\r\n overlay: 'ActiveFiltersPanel-overlay'\r\n}\r\n\r\ninterface IRenderItemsParams<T> {\r\n field?: keyof T\r\n label?: string\r\n items: IItemBase[]\r\n isQuickSearch?: boolean\r\n}\r\n\r\nexport interface IActiveFiltersPanelProps {\r\n loading?: boolean\r\n}\r\n\r\nexport interface IActiveFiltersPanelState<T> {\r\n data: IFilterState<T> | null\r\n isClosing: boolean\r\n}\r\n\r\nfunction createActiveFiltersPanel<T>(): ComponentType<IActiveFiltersPanelProps> {\r\n class ActiveFiltersPanel extends Component<IActiveFiltersPanelProps, IActiveFiltersPanelState<T>> {\r\n declare dataViewContext: IDataViewContext<T>\r\n\r\n constructor(props: IActiveFiltersPanelProps) {\r\n super(props)\r\n this.state = {\r\n data: null,\r\n isClosing: false\r\n }\r\n }\r\n\r\n // Handle animation completion\r\n private handleAnimationExited = () => {\r\n this.setState({ isClosing: true })\r\n }\r\n\r\n render() {\r\n return mapDataViewContext((context) => {\r\n this.dataViewContext = context\r\n if (!this.dataViewContext) return <></>\r\n const { defaultValue } = this.dataViewContext.filterBarConfigs\r\n const isEmpty = createFilterStore(this.dataViewContext.filterState, defaultValue).isEmpty()\r\n return (\r\n <Collapse in={!isEmpty} timeout={300} unmountOnExit orientation='vertical' onExited={this.handleAnimationExited}>\r\n <Wrap className={activeFiltersPanelClasses.root}>\r\n <Box className={activeFiltersPanelClasses.content}>\r\n {this.renderSort()}\r\n {this.renderQuickSearch()}\r\n {this.renderFilters()}\r\n {!isEmpty && <ClearAllButton className={activeFiltersPanelClasses.removeButton} onClick={this.handleClearAll} />}\r\n </Box>\r\n {this.props.loading && <Box className={activeFiltersPanelClasses.overlay} />}\r\n </Wrap>\r\n </Collapse>\r\n )\r\n })\r\n }\r\n\r\n renderItems = (p: IRenderItemsParams<T>) => (\r\n <Box className={activeFiltersPanelClasses.item}>\r\n <Typography variant='caption' sx={{ fontWeight: 700 }}>\r\n {p.label || p.field?.toString()}:\r\n </Typography>\r\n <Box className={activeFiltersPanelClasses.itemContent}>\r\n {p.items.map((item) => (\r\n <Chip\r\n key={item.value}\r\n clickable\r\n size='small'\r\n label={item.label || item.value}\r\n className={activeFiltersPanelClasses.itemChip}\r\n onDelete={() => {\r\n if (p.isQuickSearch) {\r\n this.removeQuickSearch(item)\r\n return\r\n }\r\n if (!p.field) return\r\n this.removeFilter(p.field, item)\r\n }}\r\n />\r\n ))}\r\n </Box>\r\n </Box>\r\n )\r\n\r\n renderQuickSearch() {\r\n const val = this.dataViewContext.filterState?.quickSearch || []\r\n const list = (Array.isArray(val) ? val : [val]).map((value) => ({ value }))\r\n if (!list || list.length === 0) return <></>\r\n return this.renderItems({ label: 'Quick search', items: list, isQuickSearch: true })\r\n }\r\n\r\n renderFilters = () => {\r\n const filter: IFilterMap<T> = this.dataViewContext.filterState?.filter || {}\r\n const keys = Object.keys(filter) as Array<keyof T>\r\n if (keys.length === 0) return <></>\r\n return keys.map((key) => {\r\n const filterItems = (filter[key] ?? []) as IFilterItem[]\r\n const items = filterItems.reduce<IItemBase[]>((acc, item) => {\r\n let label = item.label || item.value?.toString()\r\n if (item.type === 'date' && item.dateLogic) {\r\n label = `${mapDateLogicText[item.dateLogic]} ${formatDatetime(item.value?.toString() ?? '', 'style2')}`\r\n }\r\n if (!!item.value) acc.push({ value: item.value?.toString(), label })\r\n return acc\r\n }, [])\r\n return <Fragment key={key.toString()}>{this.renderItems({ field: key, label: key.toString(), items })}</Fragment>\r\n })\r\n }\r\n\r\n renderSort = () => {\r\n const sort = this.dataViewContext.filterState?.sort\r\n if (!sort) return <></>\r\n\r\n const fieldConfig = this.dataViewContext.filterBarConfigs.fields?.[sort.field]\r\n const fieldLabel = fieldConfig?.label || sort.field.toString()\r\n const sortConfig = mapSortConfigs[sort.direction]\r\n\r\n return (\r\n <Box className={activeFiltersPanelClasses.item}>\r\n <Typography variant='caption' sx={{ fontWeight: 700 }}>\r\n Sort:\r\n </Typography>\r\n {/* <Box className={activeFiltersPanelClasses.itemContent}> */}\r\n <Chip\r\n clickable\r\n size='small'\r\n label={\r\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\r\n <span>{fieldLabel}</span>\r\n {sortConfig.icon}\r\n </Box>\r\n }\r\n className={activeFiltersPanelClasses.itemChip}\r\n onClick={this.toggleSortDirection}\r\n onDelete={() => this.removeSort()}\r\n title={`${fieldLabel} - ${sortConfig.title}`}\r\n />\r\n {/* </Box> */}\r\n </Box>\r\n )\r\n }\r\n\r\n removeFilter = (field: keyof T, item: IItemBase) => {\r\n const store = createFilterStore(this.dataViewContext.filterState).removeFilterItem(field, item.value, { reason: 'filter' })\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n removeQuickSearch = (item: IItemBase) => {\r\n const store = createFilterStore(this.dataViewContext.filterState).removeQuickSearchItem(item.value, { reason: 'quickSearch' })\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n removeSort = () => {\r\n const store = createFilterStore(this.dataViewContext.filterState).removeSort({ reason: 'sort' })\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n toggleSortDirection = () => {\r\n const store = createFilterStore(this.dataViewContext.filterState).toggleSortDirection({ reason: 'sort' })\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n handleClearAll = () => {\r\n const fValue = this.dataViewContext.filterBarConfigs.defaultValue || {}\r\n // Trực tiếp clear data, logic đóng sẽ được xử lý tự động\r\n const store = createFilterStore(this.dataViewContext.filterState, fValue).reset()\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n }\r\n\r\n return ActiveFiltersPanel\r\n}\r\n\r\nexport default createActiveFiltersPanel\r\n\r\nconst Wrap = styled(Box)({\r\n position: 'relative',\r\n [`.${activeFiltersPanelClasses.content}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexWrap: 'wrap',\r\n gap: '8px'\r\n },\r\n [`.${activeFiltersPanelClasses.item}`]: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n border: 'dashed 1px var(--color-divider, rgba(145 160 170 / 20%))',\r\n borderRadius: '4px',\r\n alignItems: 'center',\r\n padding: '6px 8px',\r\n gap: '8px'\r\n },\r\n [`.${activeFiltersPanelClasses.itemContent}`]: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n gap: '4px'\r\n },\r\n [`.${activeFiltersPanelClasses.itemChip}`]: {\r\n borderRadius: '4px',\r\n height: '100%',\r\n '& .MuiChip-label': {\r\n overflowWrap: 'break-word',\r\n wordBreak: 'break-word',\r\n whiteSpace: 'normal',\r\n textOverflow: 'clip'\r\n }\r\n },\r\n [`.${activeFiltersPanelClasses.overlay}`]: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n backdropFilter: 'blur(1px)'\r\n }\r\n})\r\n"],"names":["activeFiltersPanelClasses","root","content","item","itemContent","itemChip","removeButton","overlay","createActiveFiltersPanel","ActiveFiltersPanel","props","_this","_classCallCheck","_callSuper","_defineProperty","setState","isClosing","p","_p$field","_jsxs","Box","className","children","Typography","variant","sx","fontWeight","label","field","toString","_jsx","items","map","Chip","clickable","size","value","onDelete","isQuickSearch","removeQuickSearch","removeFilter","_this$dataViewContext","filter","dataViewContext","filterState","keys","Object","length","key","_filter$key","reduce","acc","_item$value","_item$value3","_item$value$toString","_item$value2","type","dateLogic","concat","mapDateLogicText","formatDatetime","push","Fragment","renderItems","_this$dataViewContext2","_this$dataViewContext3","sort","fieldConfig","filterBarConfigs","fields","fieldLabel","sortConfig","mapSortConfigs","direction","display","alignItems","gap","icon","onClick","toggleSortDirection","removeSort","title","store","createFilterStore","removeFilterItem","reason","onFilterStateChange","build","removeQuickSearchItem","fValue","defaultValue","reset","state","data","_inherits","Component","_createClass","_this2","this","mapDataViewContext","context","isEmpty","Collapse","in","timeout","unmountOnExit","orientation","onExited","handleAnimationExited","Wrap","renderSort","renderQuickSearch","renderFilters","ClearAllButton","handleClearAll","loading","_this$dataViewContext4","val","quickSearch","list","Array","isArray","styled","position","flexWrap","border","borderRadius","padding","height","overflowWrap","wordBreak","whiteSpace","textOverflow","top","left","width","backdropFilter"],"mappings":"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"}
1
+ {"version":3,"file":"create.active-filters-panel.js","sources":["../../../src/data-view/create.active-filters-panel.tsx"],"sourcesContent":["import React, { Component, ComponentType, Fragment } from 'react'\r\nimport { Box, Chip, Collapse, styled, Typography } from '@mui/material'\r\nimport { createFilterStore } from './filter-store'\r\nimport { ClearAllButton, mapSortConfigs } from './ui.units'\r\nimport { IDataViewContext, mapDataViewContext } from './context'\r\nimport { IFilterItem, IFilterMap, IFilterState, IItemBase } from './types'\r\nimport { formatDatetime } from '../utils'\r\nimport { mapDateLogicText } from './helpers'\r\n\r\nexport const activeFiltersPanelClasses = {\r\n root: 'ActiveFiltersPanel-root',\r\n content: 'ActiveFiltersPanel-content',\r\n item: 'ActiveFiltersPanel-item',\r\n itemContent: 'ActiveFiltersPanel-itemContent',\r\n itemChip: 'ActiveFiltersPanel-itemChip',\r\n removeButton: 'ActiveFiltersPanel-removeButton',\r\n overlay: 'ActiveFiltersPanel-overlay'\r\n}\r\n\r\ninterface IRenderItemsParams<T> {\r\n field?: keyof T\r\n label?: string\r\n items: IItemBase[]\r\n isQuickSearch?: boolean\r\n}\r\n\r\nexport interface IActiveFiltersPanelProps {\r\n loading?: boolean\r\n}\r\n\r\nexport interface IActiveFiltersPanelState<T> {\r\n data: IFilterState<T> | null\r\n isClosing: boolean\r\n}\r\n\r\nfunction createActiveFiltersPanel<T>(): ComponentType<IActiveFiltersPanelProps> {\r\n class ActiveFiltersPanel extends Component<IActiveFiltersPanelProps, IActiveFiltersPanelState<T>> {\r\n declare dataViewContext: IDataViewContext<T>\r\n\r\n constructor(props: IActiveFiltersPanelProps) {\r\n super(props)\r\n this.state = {\r\n data: null,\r\n isClosing: false\r\n }\r\n }\r\n\r\n // Handle animation completion\r\n private handleAnimationExited = () => {\r\n this.setState({ isClosing: true })\r\n }\r\n\r\n render() {\r\n return mapDataViewContext((context) => {\r\n this.dataViewContext = context\r\n if (!this.dataViewContext) return <></>\r\n const { defaultValue } = this.dataViewContext.filterBarConfigs\r\n const isEmpty = createFilterStore(this.dataViewContext.filterState, defaultValue).isEmpty()\r\n return (\r\n <Collapse in={!isEmpty} timeout={300} unmountOnExit orientation='vertical' onExited={this.handleAnimationExited}>\r\n <Wrap className={activeFiltersPanelClasses.root}>\r\n <Box className={activeFiltersPanelClasses.content}>\r\n {this.renderSort()}\r\n {this.renderQuickSearch()}\r\n {this.renderFilters()}\r\n {!isEmpty && <ClearAllButton className={activeFiltersPanelClasses.removeButton} onClick={this.handleClearAll} />}\r\n </Box>\r\n {this.props.loading && <Box className={activeFiltersPanelClasses.overlay} />}\r\n </Wrap>\r\n </Collapse>\r\n )\r\n })\r\n }\r\n\r\n renderItems = (p: IRenderItemsParams<T>) => (\r\n <Box className={activeFiltersPanelClasses.item}>\r\n <Typography variant='caption' sx={{ fontWeight: 700 }}>\r\n {p.label || p.field?.toString()}:\r\n </Typography>\r\n <Box className={activeFiltersPanelClasses.itemContent}>\r\n {p.items.map((item) => (\r\n <Chip\r\n key={item.value}\r\n clickable\r\n size='small'\r\n label={item.label || item.value}\r\n className={activeFiltersPanelClasses.itemChip}\r\n onDelete={() => {\r\n if (p.isQuickSearch) {\r\n this.removeQuickSearch(item)\r\n return\r\n }\r\n if (!p.field) return\r\n this.removeFilter(p.field, item)\r\n }}\r\n />\r\n ))}\r\n </Box>\r\n </Box>\r\n )\r\n\r\n renderQuickSearch() {\r\n const val = this.dataViewContext.filterState?.quickSearch || []\r\n const list = (Array.isArray(val) ? val : [val]).map((value) => ({ value }))\r\n if (!list || list.length === 0) return <></>\r\n return this.renderItems({ label: 'Quick search', items: list, isQuickSearch: true })\r\n }\r\n\r\n renderFilters = () => {\r\n const filter: IFilterMap<T> = this.dataViewContext.filterState?.filter || {}\r\n const keys = Object.keys(filter) as Array<keyof T>\r\n if (keys.length === 0) return <></>\r\n return keys.map((key) => {\r\n const filterItems = (filter[key] ?? []) as IFilterItem[]\r\n const items = filterItems.reduce<IItemBase[]>((acc, item) => {\r\n let label = item.label || item.value?.toString()\r\n if (item.type === 'date' && item.dateLogic) {\r\n label = `${mapDateLogicText[item.dateLogic]} ${formatDatetime(item.value?.toString() ?? '', 'style2')}`\r\n }\r\n if (!!item.value) acc.push({ value: item.value?.toString(), label })\r\n return acc\r\n }, [])\r\n return <Fragment key={key.toString()}>{this.renderItems({ field: key, label: key.toString(), items })}</Fragment>\r\n })\r\n }\r\n\r\n renderSort = () => {\r\n const sort = this.dataViewContext.filterState?.sort\r\n if (!sort) return <></>\r\n\r\n const fieldConfig = this.dataViewContext.filterBarConfigs.fields?.[sort.field]\r\n const fieldLabel = fieldConfig?.label || sort.field.toString()\r\n const sortConfig = mapSortConfigs[sort.direction]\r\n\r\n return (\r\n <Box className={activeFiltersPanelClasses.item}>\r\n <Typography variant='caption' sx={{ fontWeight: 700 }}>\r\n Sort:\r\n </Typography>\r\n {/* <Box className={activeFiltersPanelClasses.itemContent}> */}\r\n <Chip\r\n clickable\r\n size='small'\r\n label={\r\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\r\n <span>{fieldLabel}</span>\r\n {sortConfig.icon}\r\n </Box>\r\n }\r\n className={activeFiltersPanelClasses.itemChip}\r\n onClick={this.toggleSortDirection}\r\n onDelete={() => this.removeSort()}\r\n title={`${fieldLabel} - ${sortConfig.title}`}\r\n />\r\n {/* </Box> */}\r\n </Box>\r\n )\r\n }\r\n\r\n removeFilter = (field: keyof T, item: IItemBase) => {\r\n const store = createFilterStore(this.dataViewContext.filterState).removeFilterItem(field, item.value, { reason: 'filter' })\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n removeQuickSearch = (item: IItemBase) => {\r\n const store = createFilterStore(this.dataViewContext.filterState).removeQuickSearchItem(item.value, { reason: 'quickSearch' })\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n removeSort = () => {\r\n const store = createFilterStore(this.dataViewContext.filterState).removeSort({ reason: 'sort' })\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n toggleSortDirection = () => {\r\n const store = createFilterStore(this.dataViewContext.filterState).toggleSortDirection({ reason: 'sort' })\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n handleClearAll = () => {\r\n const fValue = this.dataViewContext.filterBarConfigs.defaultValue || {}\r\n // Trực tiếp clear data, logic đóng sẽ được xử lý tự động\r\n const store = createFilterStore(this.dataViewContext.filterState, fValue).reset()\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n }\r\n\r\n return ActiveFiltersPanel\r\n}\r\n\r\nexport default createActiveFiltersPanel\r\n\r\nconst Wrap = styled(Box)({\r\n position: 'relative',\r\n [`.${activeFiltersPanelClasses.content}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexWrap: 'wrap',\r\n gap: '8px'\r\n },\r\n [`.${activeFiltersPanelClasses.item}`]: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n border: 'dashed 1px var(--color-divider, rgba(145 160 170 / 20%))',\r\n borderRadius: '4px',\r\n alignItems: 'center',\r\n padding: '6px 8px',\r\n gap: '8px'\r\n },\r\n [`.${activeFiltersPanelClasses.itemContent}`]: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n gap: '4px'\r\n },\r\n [`.${activeFiltersPanelClasses.itemChip}`]: {\r\n borderRadius: '4px',\r\n height: '100%',\r\n '& .MuiChip-label': {\r\n overflowWrap: 'break-word',\r\n wordBreak: 'break-word',\r\n whiteSpace: 'normal',\r\n textOverflow: 'clip'\r\n }\r\n },\r\n [`.${activeFiltersPanelClasses.overlay}`]: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n backdropFilter: 'blur(1px)'\r\n }\r\n})\r\n"],"names":["activeFiltersPanelClasses","root","content","item","itemContent","itemChip","removeButton","overlay","createActiveFiltersPanel","ActiveFiltersPanel","props","_this","_classCallCheck","_callSuper","_defineProperty","setState","isClosing","p","_p$field","_jsxs","Box","className","children","Typography","variant","sx","fontWeight","label","field","toString","_jsx","items","map","Chip","clickable","size","value","onDelete","isQuickSearch","removeQuickSearch","removeFilter","_this$dataViewContext","filter","dataViewContext","filterState","keys","Object","length","key","_filter$key","reduce","acc","_item$value","_item$value3","_item$value$toString","_item$value2","type","dateLogic","concat","mapDateLogicText","formatDatetime","push","Fragment","renderItems","_this$dataViewContext2","_this$dataViewContext3","sort","fieldConfig","filterBarConfigs","fields","fieldLabel","sortConfig","mapSortConfigs","direction","display","alignItems","gap","icon","onClick","toggleSortDirection","removeSort","title","store","createFilterStore","removeFilterItem","reason","onFilterStateChange","build","removeQuickSearchItem","fValue","defaultValue","reset","state","data","_inherits","Component","_createClass","_this2","this","mapDataViewContext","context","isEmpty","Collapse","in","timeout","unmountOnExit","orientation","onExited","handleAnimationExited","Wrap","renderSort","renderQuickSearch","renderFilters","ClearAllButton","handleClearAll","loading","_this$dataViewContext4","val","quickSearch","list","Array","isArray","styled","position","flexWrap","border","borderRadius","padding","height","overflowWrap","wordBreak","whiteSpace","textOverflow","top","left","width","backdropFilter"],"mappings":"umBASO,IAAMA,EAA4B,CACvCC,KAAM,0BACNC,QAAS,6BACTC,KAAM,0BACNC,YAAa,iCACbC,SAAU,8BACVC,aAAc,kCACdC,QAAS,8BAmBX,SAASC,IAwJP,kBApJE,SAAAC,EAAYC,GAA+B,IAAAC,EAKxC,OALwCC,OAAAH,GACzCE,EAAAE,EAAAJ,KAAAA,GAAMC,IAORI,EAAAH,EAAA,wBACgC,WAC9BA,EAAKI,SAAS,CAAEC,WAAW,MAC5BF,EAAAH,EAwBa,cAAA,SAACM,GAAwB,IAAAC,EAAA,OACrCC,EAACC,EAAG,CAACC,UAAWrB,EAA0BG,KAAImB,SAAA,CAC5CH,EAACI,EAAU,CAACC,QAAQ,UAAUC,GAAI,CAAEC,WAAY,KAAKJ,SAAA,CAClDL,EAAEU,QAAgBT,QAAXA,EAAID,EAAEW,iBAAKV,SAAPA,EAASW,YACV,OACbC,EAACV,EAAG,CAACC,UAAWrB,EAA0BI,YAAWkB,SAClDL,EAAEc,MAAMC,IAAI,SAAC7B,GAAI,OAChB2B,EAACG,EAAI,CAEHC,WACA,EAAAC,KAAK,QACLR,MAAOxB,EAAKwB,OAASxB,EAAKiC,MAC1Bf,UAAWrB,EAA0BK,SACrCgC,SAAU,WACJpB,EAAEqB,cACJ3B,EAAK4B,kBAAkBpC,GAGpBc,EAAEW,OACPjB,EAAK6B,aAAavB,EAAEW,MAAOzB,EAC7B,GAZKA,EAAKiC,MAcb,UAGNtB,EAAAH,EAAA,gBASe,WAAK,IAAA8B,EACbC,GAAwD,QAAhCD,EAAA9B,EAAKgC,gBAAgBC,mBAArBH,IAAgCA,OAAhCA,EAAAA,EAAkCC,SAAU,CAAE,EACtEG,EAAOC,OAAOD,KAAKH,GACzB,OAAoB,IAAhBG,EAAKE,OAAqBjB,QACvBe,EAAKb,IAAI,SAACgB,GAAO,IAAAC,EAEhBlB,GAD0BkB,QAAfA,EAAIP,EAAOM,UAAIC,IAAAA,EAAAA,EAAI,IACVC,OAAoB,SAACC,EAAKhD,GAAQ,IAAAiD,EAAAC,EAEdC,EAAAC,EADxC5B,EAAQxB,EAAKwB,gBAAKyB,EAAIjD,EAAKiC,aAAK,IAAAgB,OAAA,EAAVA,EAAYvB,YACpB,SAAd1B,EAAKqD,MAAmBrD,EAAKsD,YAC/B9B,KAAK+B,OAAMC,EAAiBxD,EAAKsD,WAAU,KAAAC,OAAIE,EAAqCN,QAAvBA,UAAAC,EAACpD,EAAKiC,aAAK,IAAAmB,OAAA,EAAVA,EAAY1B,sBAAUyB,EAAAA,EAAI,GAAI,YAG9F,OADMnD,EAAKiC,OAAOe,EAAIU,KAAK,CAAEzB,MAAiBiB,QAAZA,EAAElD,EAAKiC,aAALiB,IAAUA,OAAVA,EAAAA,EAAYxB,WAAYF,MAAAA,IACrDwB,CACR,EAAE,IACH,OAAOrB,EAACgC,EAA+B,CAAAxC,SAAAX,EAAKoD,YAAY,CAAEnC,MAAOoB,EAAKrB,MAAOqB,EAAInB,WAAYE,MAAAA,KAAvEiB,EAAInB,WAC5B,KACDf,EAAAH,EAAA,aAEY,WAAK,IAAAqD,EAAAC,EACVC,EAAuCF,QAAnCA,EAAGrD,EAAKgC,gBAAgBC,mBAArBoB,IAAgCA,OAAhCA,EAAAA,EAAkCE,KAC/C,IAAKA,EAAM,OAAOpC,QAElB,IAAMqC,EAA0D,QAA/CF,EAAGtD,EAAKgC,gBAAgByB,iBAAiBC,cAAtCJ,IAA4CA,OAA5CA,EAAAA,EAA+CC,EAAKtC,OAClE0C,GAAaH,aAAAA,EAAAA,EAAaxC,QAASuC,EAAKtC,MAAMC,WAC9C0C,EAAaC,EAAeN,EAAKO,WAEvC,OACEtD,EAACC,EAAG,CAACC,UAAWrB,EAA0BG,KAAImB,SAAA,CAC5CQ,EAACP,EAAU,CAACC,QAAQ,UAAUC,GAAI,CAAEC,WAAY,KAEnCJ,SAAA,UAEbQ,EAACG,EAAI,CACHC,WACA,EAAAC,KAAK,QACLR,MACER,EAACC,GAAIK,GAAI,CAAEiD,QAAS,OAAQC,WAAY,SAAUC,IAAK,cACrD9C,EAAO,OAAA,CAAAR,SAAAgD,IACNC,EAAWM,QAGhBxD,UAAWrB,EAA0BK,SACrCyE,QAASnE,EAAKoE,oBACd1C,SAAU,WAAF,OAAQ1B,EAAKqE,YAAY,EACjCC,MAAK,GAAAvB,OAAKY,SAAUZ,OAAMa,EAAWU,cAK5CnE,EAAAH,EAAA,eAEc,SAACiB,EAAgBzB,GAC9B,IAAM+E,EAAQC,EAAkBxE,EAAKgC,gBAAgBC,aAAawC,iBAAiBxD,EAAOzB,EAAKiC,MAAO,CAAEiD,OAAQ,WAChH1E,EAAKgC,gBAAgB2C,oBAAoBJ,EAAMK,WAChDzE,EAAAH,EAEmB,oBAAA,SAACR,GACnB,IAAM+E,EAAQC,EAAkBxE,EAAKgC,gBAAgBC,aAAa4C,sBAAsBrF,EAAKiC,MAAO,CAAEiD,OAAQ,gBAC9G1E,EAAKgC,gBAAgB2C,oBAAoBJ,EAAMK,WAChDzE,EAAAH,EAAA,aAEY,WACX,IAAMuE,EAAQC,EAAkBxE,EAAKgC,gBAAgBC,aAAaoC,WAAW,CAAEK,OAAQ,SACvF1E,EAAKgC,gBAAgB2C,oBAAoBJ,EAAMK,WAChDzE,EAAAH,EAAA,sBAEqB,WACpB,IAAMuE,EAAQC,EAAkBxE,EAAKgC,gBAAgBC,aAAamC,oBAAoB,CAAEM,OAAQ,SAChG1E,EAAKgC,gBAAgB2C,oBAAoBJ,EAAMK,WAChDzE,EAAAH,EAAA,iBAEgB,WACf,IAAM8E,EAAS9E,EAAKgC,gBAAgByB,iBAAiBsB,cAAgB,CAAE,EAEjER,EAAQC,EAAkBxE,EAAKgC,gBAAgBC,YAAa6C,GAAQE,QAC1EhF,EAAKgC,gBAAgB2C,oBAAoBJ,EAAMK,WA9I/C5E,EAAKiF,MAAQ,CACXC,KAAM,KACN7E,WAAW,GACZL,CACH,CAAC,OAAAmF,EAAArF,EAT8BsF,GAS9BC,EAAAvF,EAAA,CAAA,CAAAuC,IAAA,SAAAZ,MAOD,WAAM,IAAA6D,EAAAC,KACJ,OAAOC,EAAmB,SAACC,GAEzB,GADAH,EAAKtD,gBAAkByD,GAClBH,EAAKtD,gBAAiB,OAAOb,QAClC,IAAQ4D,EAAiBO,EAAKtD,gBAAgByB,iBAAtCsB,aACFW,EAAUlB,EAAkBc,EAAKtD,gBAAgBC,YAAa8C,GAAcW,UAClF,OACEvE,EAACwE,EAAQ,CAACC,IAAKF,EAASG,QAAS,IAAKC,eAAc,EAAAC,YAAY,WAAWC,SAAUV,EAAKW,sBACxFtF,SAAAH,EAAC0F,EAAK,CAAAxF,UAAWrB,EAA0BC,KACzCqB,SAAA,CAAAH,EAACC,EAAI,CAAAC,UAAWrB,EAA0BE,QACvCoB,SAAA,CAAA2E,EAAKa,aACLb,EAAKc,oBACLd,EAAKe,iBACJX,GAAWvE,EAACmF,GAAe5F,UAAWrB,EAA0BM,aAAcwE,QAASmB,EAAKiB,oBAE/FjB,EAAKvF,MAAMyG,SAAWrF,EAACV,EAAI,CAAAC,UAAWrB,EAA0BO,cAIzE,EACF,GAAC,CAAAyC,IAAA,oBAAAZ,MA6BD,WAAiB,IAAAgF,EACTC,GAAsC,QAAhCD,EAAAlB,KAAKvD,gBAAgBC,mBAArBwE,IAAgCA,OAAhCA,EAAAA,EAAkCE,cAAe,GACvDC,GAAQC,MAAMC,QAAQJ,GAAOA,EAAM,CAACA,IAAMrF,IAAI,SAACI,GAAK,MAAM,CAAEA,MAAAA,EAAO,GACzE,OAAKmF,GAAwB,IAAhBA,EAAKxE,OACXmD,KAAKnC,YAAY,CAAEpC,MAAO,eAAgBI,MAAOwF,EAAMjF,eAAe,IADtCR,OAEzC,IAAC,GAkFL,CAIA,IAAM+E,EAAOa,EAAOtG,EAAPsG,CAAW5G,EAAAA,EAAAA,EAAAA,EAAAA,EAAA,CACtB6G,SAAU,YAAU,IAAAjE,OACf1D,EAA0BE,SAAY,CACzCwE,QAAS,OACTC,WAAY,SACZiD,SAAU,OACVhD,IAAK,YACNlB,OACI1D,EAA0BG,MAAS,CACtCuE,QAAS,OACTkD,SAAU,OACVC,OAAQ,2DACRC,aAAc,MACdnD,WAAY,SACZoD,QAAS,UACTnD,IAAK,YACNlB,OACI1D,EAA0BI,aAAgB,CAC7CsE,QAAS,OACTkD,SAAU,OACVhD,IAAK,YACNlB,OACI1D,EAA0BK,UAAa,CAC1CyH,aAAc,MACdE,OAAQ,OACR,mBAAoB,CAClBC,aAAc,aACdC,UAAW,aACXC,WAAY,SACZC,aAAc,cAEjB1E,OACI1D,EAA0BO,SAAY,CACzCoH,SAAU,WACVU,IAAK,EACLC,KAAM,EACNC,MAAO,OACPP,OAAQ,OACRQ,eAAgB"}
@@ -1,2 +1,2 @@
1
- import{createClass as t,classCallCheck as r,defineProperty as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import o from"dayjs";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{createFilterStore as i}from"./filter-store.js";import{createViewMode as a}from"./create.view-mode.js";import{createViewModeButtons as s}from"./view-mode.units.js";import{syncQueryToURL as m,getQueryFromURL as n,getSeedKeyFromURL as l,syncViewModeToURL as c,getViewModeFromURL as u,convertFilterToQueryParam as f}from"./query-param-url.js";import{createConvertFilterToGraphQL as h}from"./convert-filter-to-graphql.js";import{createKeyConverter as p}from"../http-service/graphql/key-converter.js";import{createPaginationBar as v}from"./create.pagination-bar.js";import d from"./create.data-view.js";var y=new(t(function t(){var y=this;r(this,t),e(this,"createDataView",d),e(this,"createKeyConverter",p),e(this,"createConvertFilterToGraphQL",h),e(this,"createFilterStore",i),e(this,"createPaginationBar",v),e(this,"createViewMode",a),e(this,"createViewModeButtons",s),e(this,"syncQueryToURL",m),e(this,"getQueryFromURL",n),e(this,"getSeedKeyFromURL",l),e(this,"syncViewModeToURL",c),e(this,"getViewModeFromURL",u),e(this,"convertFilterToQueryParam",f),e(this,"formatterDate",function(t,r){var e,i,a=null!==(e=null==r?void 0:r.formatString)&&void 0!==e?e:"MM/DD/YYYY HH:mm",s=null!==(i=null==r?void 0:r.showRelative)&&void 0!==i&&i;try{if(!t)return"";var m=o(t),n=m.format(a);return s?"".concat(n," (").concat(o().to(m),")"):n}catch(t){return""}}),e(this,"valueFormatterDate",function(t){return function(r){return y.formatterDate(r.value,t)}})}));export{y as DinoDataView,y as default};
1
+ import{createClass as t,classCallCheck as r,defineProperty as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{createFilterStore as o}from"./filter-store.js";import{createViewMode as i}from"./create.view-mode.js";import{createViewModeButtons as a}from"./view-mode.units.js";import{syncQueryToURL as s,getQueryFromURL as n,getSeedKeyFromURL as m,syncViewModeToURL as l,getViewModeFromURL as c,convertFilterToQueryParam as u}from"./query-param-url.js";import{createConvertFilterToGraphQL as f}from"./convert-filter-to-graphql.js";import{createKeyConverter as h}from"../http-service/graphql/key-converter.js";import{createPaginationBar as p}from"./create.pagination-bar.js";import v from"./create.data-view.js";import"../utils/dayjs-config.js";import d from"dayjs";var y=new(t(function t(){var y=this;r(this,t),e(this,"createDataView",v),e(this,"createKeyConverter",h),e(this,"createConvertFilterToGraphQL",f),e(this,"createFilterStore",o),e(this,"createPaginationBar",p),e(this,"createViewMode",i),e(this,"createViewModeButtons",a),e(this,"syncQueryToURL",s),e(this,"getQueryFromURL",n),e(this,"getSeedKeyFromURL",m),e(this,"syncViewModeToURL",l),e(this,"getViewModeFromURL",c),e(this,"convertFilterToQueryParam",u),e(this,"formatterDate",function(t,r){var e,o,i=null!==(e=null==r?void 0:r.formatString)&&void 0!==e?e:"MM/DD/YYYY HH:mm",a=null!==(o=null==r?void 0:r.showRelative)&&void 0!==o&&o;try{if(!t)return"";var s=d(t),n=s.format(i);return a?"".concat(n," (").concat(d().to(s),")"):n}catch(t){return""}}),e(this,"valueFormatterDate",function(t){return function(r){return y.formatterDate(r.value,t)}})}));export{y as DinoDataView,y as default};
2
2
  //# sourceMappingURL=dino.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dino.js","sources":["../../../src/data-view/dino.tsx"],"sourcesContent":["import { GridValueFormatterParams } from '@mui/x-data-grid'\r\nimport { dayjsCustom } from '../utils'\r\nimport { createFilterStore } from './filter-store'\r\nimport { createViewMode } from './create.view-mode'\r\nimport { createViewModeButtons } from './view-mode.units'\r\nimport { getViewModeFromURL, syncViewModeToURL } from './query-param-url'\r\nimport { createConvertFilterToGraphQL } from './convert-filter-to-graphql'\r\nimport { createKeyConverter } from '../http-service/graphql/key-converter'\r\nimport { convertFilterToQueryParam, getQueryFromURL, getSeedKeyFromURL, syncQueryToURL } from './query-param-url'\r\nimport createPaginationBar from './create.pagination-bar'\r\nimport createDataView from './create.data-view'\r\n\r\nconst formatDateString = 'MM/DD/YYYY HH:mm'\r\n\r\nexport interface IFormatterDateOptions {\r\n formatString?: string\r\n showRelative?: boolean\r\n}\r\n\r\nclass DinoDataViewBase {\r\n createDataView = createDataView\r\n\r\n createKeyConverter = createKeyConverter\r\n\r\n createConvertFilterToGraphQL = createConvertFilterToGraphQL\r\n\r\n createFilterStore = createFilterStore\r\n\r\n createPaginationBar = createPaginationBar\r\n\r\n createViewMode = createViewMode\r\n\r\n createViewModeButtons = createViewModeButtons\r\n\r\n syncQueryToURL = syncQueryToURL\r\n\r\n getQueryFromURL = getQueryFromURL\r\n\r\n getSeedKeyFromURL = getSeedKeyFromURL\r\n\r\n syncViewModeToURL = syncViewModeToURL\r\n\r\n getViewModeFromURL = getViewModeFromURL\r\n\r\n convertFilterToQueryParam = convertFilterToQueryParam\r\n\r\n //#region Value Formatter\r\n formatterDate = (value: any, options?: IFormatterDateOptions): string => {\r\n const f = options?.formatString ?? formatDateString\r\n const showRelative = options?.showRelative ?? false\r\n try {\r\n if (!value) return ''\r\n\r\n const date = dayjsCustom(value)\r\n const formatted = date.format(f)\r\n\r\n return showRelative ? `${formatted} (${dayjsCustom().to(date)})` : formatted\r\n } catch (error) {\r\n return ''\r\n }\r\n }\r\n\r\n valueFormatterDate = (options?: IFormatterDateOptions) => {\r\n return (params: GridValueFormatterParams<any>) => this.formatterDate(params.value, options)\r\n }\r\n //#endregion\r\n}\r\nexport const DinoDataView = new DinoDataViewBase()\r\nexport default DinoDataView\r\n"],"names":["DinoDataView","_createClass","DinoDataViewBase","_this","this","_classCallCheck","_defineProperty","createDataView","createKeyConverter","createConvertFilterToGraphQL","createFilterStore","createPaginationBar","createViewMode","createViewModeButtons","syncQueryToURL","getQueryFromURL","getSeedKeyFromURL","syncViewModeToURL","getViewModeFromURL","convertFilterToQueryParam","value","options","_options$formatString","_options$showRelative","f","formatString","showRelative","date","dayjsCustom","formatted","format","concat","to","error","params","formatterDate"],"mappings":"oyBAYA,IAuDaA,EAAe,IAhDNC,EAAA,SAAAC,IAAA,IAAAC,EAAAC,KAAAC,OAAAH,GAAAI,wBACHC,GAAcD,4BAEVE,GAAkBF,sCAERG,GAA4BH,2BAEvCI,GAAiBJ,6BAEfK,GAAmBL,wBAExBM,GAAcN,+BAEPO,GAAqBP,wBAE5BQ,GAAcR,yBAEbS,GAAeT,2BAEbU,GAAiBV,2BAEjBW,GAAiBX,4BAEhBY,GAAkBZ,mCAEXa,GAE5Bb,EACgBF,KAAA,gBAAA,SAACgB,EAAYC,GAA2C,IAAAC,EAAAC,EAChEC,EAAyBF,QAAxBA,EAAGD,aAAO,EAAPA,EAASI,oBAAYH,IAAAA,EAAAA,EApCV,mBAqCfI,EAAoCH,QAAxBA,EAAGF,aAAO,EAAPA,EAASK,oBAAYH,IAAAA,GAAAA,EAC1C,IACE,IAAKH,EAAO,MAAO,GAEnB,IAAMO,EAAOC,EAAYR,GACnBS,EAAYF,EAAKG,OAAON,GAE9B,OAAOE,EAAYK,GAAAA,OAAMF,QAASE,OAAKH,IAAcI,GAAGL,QAAWE,CACpE,CAAC,MAAOI,GACP,MAAO,EACR,IACF3B,EAAAF,KAAA,qBAEoB,SAACiB,GACpB,OAAO,SAACa,GAAqC,OAAK/B,EAAKgC,cAAcD,EAAOd,MAAOC,EAAQ,GAC5F"}
1
+ {"version":3,"file":"dino.js","sources":["../../../src/data-view/dino.tsx"],"sourcesContent":["import { GridValueFormatterParams } from '@mui/x-data-grid'\r\nimport { dayjsCustom } from '../utils'\r\nimport { createFilterStore } from './filter-store'\r\nimport { createViewMode } from './create.view-mode'\r\nimport { createViewModeButtons } from './view-mode.units'\r\nimport { getViewModeFromURL, syncViewModeToURL } from './query-param-url'\r\nimport { createConvertFilterToGraphQL } from './convert-filter-to-graphql'\r\nimport { createKeyConverter } from '../http-service/graphql/key-converter'\r\nimport { convertFilterToQueryParam, getQueryFromURL, getSeedKeyFromURL, syncQueryToURL } from './query-param-url'\r\nimport createPaginationBar from './create.pagination-bar'\r\nimport createDataView from './create.data-view'\r\n\r\nconst formatDateString = 'MM/DD/YYYY HH:mm'\r\n\r\nexport interface IFormatterDateOptions {\r\n formatString?: string\r\n showRelative?: boolean\r\n}\r\n\r\nclass DinoDataViewBase {\r\n createDataView = createDataView\r\n\r\n createKeyConverter = createKeyConverter\r\n\r\n createConvertFilterToGraphQL = createConvertFilterToGraphQL\r\n\r\n createFilterStore = createFilterStore\r\n\r\n createPaginationBar = createPaginationBar\r\n\r\n createViewMode = createViewMode\r\n\r\n createViewModeButtons = createViewModeButtons\r\n\r\n syncQueryToURL = syncQueryToURL\r\n\r\n getQueryFromURL = getQueryFromURL\r\n\r\n getSeedKeyFromURL = getSeedKeyFromURL\r\n\r\n syncViewModeToURL = syncViewModeToURL\r\n\r\n getViewModeFromURL = getViewModeFromURL\r\n\r\n convertFilterToQueryParam = convertFilterToQueryParam\r\n\r\n //#region Value Formatter\r\n formatterDate = (value: any, options?: IFormatterDateOptions): string => {\r\n const f = options?.formatString ?? formatDateString\r\n const showRelative = options?.showRelative ?? false\r\n try {\r\n if (!value) return ''\r\n\r\n const date = dayjsCustom(value)\r\n const formatted = date.format(f)\r\n\r\n return showRelative ? `${formatted} (${dayjsCustom().to(date)})` : formatted\r\n } catch (error) {\r\n return ''\r\n }\r\n }\r\n\r\n valueFormatterDate = (options?: IFormatterDateOptions) => {\r\n return (params: GridValueFormatterParams<any>) => this.formatterDate(params.value, options)\r\n }\r\n //#endregion\r\n}\r\nexport const DinoDataView = new DinoDataViewBase()\r\nexport default DinoDataView\r\n"],"names":["DinoDataView","_createClass","DinoDataViewBase","_this","this","_classCallCheck","_defineProperty","createDataView","createKeyConverter","createConvertFilterToGraphQL","createFilterStore","createPaginationBar","createViewMode","createViewModeButtons","syncQueryToURL","getQueryFromURL","getSeedKeyFromURL","syncViewModeToURL","getViewModeFromURL","convertFilterToQueryParam","value","options","_options$formatString","_options$showRelative","f","formatString","showRelative","date","dayjsCustom","formatted","format","concat","to","error","params","formatterDate"],"mappings":"owBAYA,IAuDaA,EAAe,IAhDNC,EAAA,SAAAC,IAAA,IAAAC,EAAAC,KAAAC,OAAAH,GAAAI,wBACHC,GAAcD,4BAEVE,GAAkBF,sCAERG,GAA4BH,2BAEvCI,GAAiBJ,6BAEfK,GAAmBL,wBAExBM,GAAcN,+BAEPO,GAAqBP,wBAE5BQ,GAAcR,yBAEbS,GAAeT,2BAEbU,GAAiBV,2BAEjBW,GAAiBX,4BAEhBY,GAAkBZ,mCAEXa,GAE5Bb,EACgBF,KAAA,gBAAA,SAACgB,EAAYC,GAA2C,IAAAC,EAAAC,EAChEC,EAAyBF,QAAxBA,EAAGD,aAAO,EAAPA,EAASI,oBAAYH,IAAAA,EAAAA,EApCV,mBAqCfI,EAAoCH,QAAxBA,EAAGF,aAAO,EAAPA,EAASK,oBAAYH,IAAAA,GAAAA,EAC1C,IACE,IAAKH,EAAO,MAAO,GAEnB,IAAMO,EAAOC,EAAYR,GACnBS,EAAYF,EAAKG,OAAON,GAE9B,OAAOE,EAAYK,GAAAA,OAAMF,QAASE,OAAKH,IAAcI,GAAGL,QAAWE,CACpE,CAAC,MAAOI,GACP,MAAO,EACR,IACF3B,EAAAF,KAAA,qBAEoB,SAACiB,GACpB,OAAO,SAACa,GAAqC,OAAK/B,EAAKgC,cAAcD,EAAOd,MAAOC,EAAQ,GAC5F"}
@@ -1,2 +1,2 @@
1
- import{createClass as t,objectSpread2 as e,toConsumableArray as i,defineProperty as a,objectWithoutProperties as s,toPropertyKey as r,classCallCheck as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import"dayjs";import"../utils/dayjs-config.js";import{QueryParam as o}from"../utils/query-param.js";var h=function(){return t(function t(){var i=this,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;n(this,t),a(this,"converToQueryParam",function(t){var e=i.extractFilter();return t+o.stringify({filter:JSON.stringify(e)})});var h=e({},s);null!=h&&h.details&&delete h.details,this._state=h,this._defaultFilter=r},[{key:"state",get:function(){return e({},this._state)}},{key:"addFilterItem",value:function(t,s,r){var n,o,h=null!==(n=null===(o=this._state.filter)||void 0===o?void 0:o[t])&&void 0!==n?n:[];if(h.some(function(t){return t.value===s.value}))this._state=e(e({},this._state),{},{details:e(e({},r),{},{action:"add",reason:"filter",isChanged:!1})});else{var u=[].concat(i(h),[s]),l=e(e({},this._state.filter),{},a({},t,u));this._state=e(e({},this._state),{},{filter:l,details:e(e({},r),{},{action:"add",isChanged:!0})})}return this}},{key:"removeFilterField",value:function(t,i){var a=this._state.filter;if(a&&a[t]&&a[t].length>0){a[t];var n=s(a,[t].map(r)),o=Object.keys(n).length>0;this._state=e(e({},this._state),{},{filter:o?n:void 0,details:e(e({},i),{},{action:"remove",reason:"filter",isChanged:!0})})}return this}},{key:"removeFilterItem",value:function(t,i,n){var o=this._state.filter,h=e({action:"remove",reason:"filter"},n);if(!o||!o[t]||0===o[t].length)return this._state=e(e({},this._state),{},{details:e(e({},h),{},{isChanged:!1})}),this;var u=o[t],l=u.findIndex(function(t){return t.value===i});if(-1===l)return this._state=e(e({},this._state),{},{details:e(e({},h),{},{isChanged:!1})}),this;var c=u.filter(function(t,e){return e!==l});if(0===c.length){o[t];var d=s(o,[t].map(r)),v=Object.keys(d).length>0;this._state=e(e({},this._state),{},{filter:v?d:void 0,details:e(e({},h),{},{isChanged:!0})})}else{var f=e(e({},o),{},a({},t,c));this._state=e(e({},this._state),{},{filter:f,details:e(e({},h),{},{isChanged:!0})})}return this}},{key:"updateFilter",value:function(t,i){return this._state=e(e({},this._state),{},{filter:t,details:e(e({},i),{},{action:"change",reason:"filter",isChanged:!0})}),this}},{key:"addQuickSearch",value:function(t,a){var s,r=null!==(s=this._state.quickSearch)&&void 0!==s?s:[],n=null!=t?t:[],o=[].concat(i(Array.isArray(r)?r:[r]),i(Array.isArray(n)?n:[n])),h=Array.from(new Set(o)),u=new Set(Array.isArray(r)?r:[r]),l=h.length!==u.size||h.some(function(t){return!u.has(t)});return l&&(this._state=e(e({},this._state),{},{quickSearch:h,details:e(e({},a),{},{action:"add",reason:"quickSearch",isChanged:l})})),this}},{key:"removeQuickSearch",value:function(t){return this._state=e(e({},this._state),{},{quickSearch:void 0,details:e(e({},t),{},{action:"remove",reason:"quickSearch",isChanged:!0})}),this}},{key:"removeQuickSearchItem",value:function(t,i){var a=this._state.quickSearch,s=e({action:"remove",reason:"quickSearch"},i);if(!a)return this._state=e(e({},this._state),{},{details:e(e({},s),{},{isChanged:!1})}),this;var r=Array.isArray(a)?a:[a];if(-1===r.indexOf(t))return this._state=e(e({},this._state),{},{details:e(e({},s),{},{isChanged:!1})}),this;var n=r.filter(function(e){return e!==t});return 0===n.length?this._state=e(e({},this._state),{},{quickSearch:void 0,details:e(e({},s),{},{isChanged:!0})}):this._state=e(e({},this._state),{},{quickSearch:1===n.length?n[0]:n,details:e(e({},s),{},{isChanged:!0})}),this}},{key:"updateSearchInput",value:function(t){return this._state=e(e({},this._state),{},{quickSearch:t,details:{reason:"quickSearch",area:"input",action:"change",isChanged:!0}}),this}},{key:"changePagination",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{area:"filterButton"};return this._state=e(e({},this._state),{},{pagination:t,details:e(e({},i),{},{action:"change",reason:"pagination",isChanged:!0})}),this}},{key:"removePagination",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"filterButton"};return this._state=e(e({},this._state),{},{pagination:void 0,details:e(e({},t),{},{action:"remove",reason:"pagination",isChanged:!0})}),this}},{key:"changeSort",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{area:"sortButton"};return this._state=e(e({},this._state),{},{sort:t,details:e(e({},i),{},{action:"change",reason:"sort"})}),this}},{key:"removeSort",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"sortButton"};return this._state=e(e({},this._state),{},{sort:void 0,details:e(e({},t),{},{action:"remove",reason:"sort"})}),this}},{key:"toggleSortDirection",value:function(t){var i=this._state.sort;if(!i)return this;var a=e(e({},i),{},{direction:"asc"===i.direction?"desc":"asc"});return this._state=e(e({},this._state),{},{sort:a,details:e(e({},t),{},{action:"change",reason:"sort"})}),this}},{key:"updateState",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{area:"filterButton"};return this._state=e(e(e({},this._state),t),{},{details:e(e({},i),{},{action:"change"})}),this}},{key:"reset",value:function(){return this._state=e(e({},this._defaultFilter),{},{details:{action:"reset",isChanged:!0}}),this}},{key:"resetFilter",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"filterButton"};return this._state=e(e({},this._state),{},{filter:void 0,details:e({action:"reset",reason:"filter"},t)}),this}},{key:"resetQuickSearch",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"input"};return this._state=e(e({},this._state),{},{quickSearch:void 0,details:e({action:"reset",reason:"quickSearch"},t)}),this}},{key:"resetPagination",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{reason:"pagination"};return this._state=e(e({},this._state),{},{pagination:void 0,details:e({action:"reset",reason:"pagination"},t)}),this}},{key:"resetSort",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{reason:"sort"};return this._state=e(e({},this._state),{},{sort:void 0,details:e({action:"reset",reason:"sort"},t)}),this}},{key:"isPaginationEqualToDefault",value:function(){var t,e=this._state.pagination,i=null===(t=this._defaultFilter)||void 0===t?void 0:t.pagination;return!e&&!i||!(!e||!i)&&(e.page===i.page&&e.pageSize===i.pageSize)}},{key:"isSortEqualToDefault",value:function(){var t,e=this._state.sort,i=null===(t=this._defaultFilter)||void 0===t?void 0:t.sort;return!e&&!i||!(!e||!i)&&(e.field===i.field&&e.direction===i.direction)}},{key:"extractFilter",value:function(){var t={};return this._state.filter&&(t.filter=this._state.filter),this._state.quickSearch&&(t.quickSearch=this._state.quickSearch),this._state.pagination&&!this.isPaginationEqualToDefault()&&(t.pagination=this._state.pagination),this._state.sort&&!this.isSortEqualToDefault()&&(t.sort=this._state.sort),t}},{key:"countFilterItems",value:function(){var t=this._state.filter;return t?Object.values(t).reduce(function(t,e){return t+(Array.isArray(e)?e.length:0)},0):0}},{key:"hasFilter",value:function(){return!!this._state.filter&&Object.keys(this._state.filter).length>0}},{key:"hasQuickSearch",value:function(){return!!this._state.quickSearch}},{key:"hasPagination",value:function(){return!this.isPaginationEqualToDefault()&&!!this._state.pagination}},{key:"hasSort",value:function(){return!this.isSortEqualToDefault()&&!!this._state.sort}},{key:"isEmpty",value:function(){return!(this.hasFilter()||this.hasQuickSearch()||this.hasPagination()||this.hasSort())}},{key:"build",value:function(){return e({},this._state)}}])}();function u(t,e){return new h(t,e)}export{h as FilterStore,u as createFilterStore,h as default};
1
+ import{createClass as t,objectSpread2 as e,toConsumableArray as i,defineProperty as a,objectWithoutProperties as s,toPropertyKey as r,classCallCheck as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{QueryParam as o}from"../utils/query-param.js";var h=function(){return t(function t(){var i=this,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;n(this,t),a(this,"converToQueryParam",function(t){var e=i.extractFilter();return t+o.stringify({filter:JSON.stringify(e)})});var h=e({},s);null!=h&&h.details&&delete h.details,this._state=h,this._defaultFilter=r},[{key:"state",get:function(){return e({},this._state)}},{key:"addFilterItem",value:function(t,s,r){var n,o,h=null!==(n=null===(o=this._state.filter)||void 0===o?void 0:o[t])&&void 0!==n?n:[];if(h.some(function(t){return t.value===s.value}))this._state=e(e({},this._state),{},{details:e(e({},r),{},{action:"add",reason:"filter",isChanged:!1})});else{var u=[].concat(i(h),[s]),l=e(e({},this._state.filter),{},a({},t,u));this._state=e(e({},this._state),{},{filter:l,details:e(e({},r),{},{action:"add",isChanged:!0})})}return this}},{key:"removeFilterField",value:function(t,i){var a=this._state.filter;if(a&&a[t]&&a[t].length>0){a[t];var n=s(a,[t].map(r)),o=Object.keys(n).length>0;this._state=e(e({},this._state),{},{filter:o?n:void 0,details:e(e({},i),{},{action:"remove",reason:"filter",isChanged:!0})})}return this}},{key:"removeFilterItem",value:function(t,i,n){var o=this._state.filter,h=e({action:"remove",reason:"filter"},n);if(!o||!o[t]||0===o[t].length)return this._state=e(e({},this._state),{},{details:e(e({},h),{},{isChanged:!1})}),this;var u=o[t],l=u.findIndex(function(t){return t.value===i});if(-1===l)return this._state=e(e({},this._state),{},{details:e(e({},h),{},{isChanged:!1})}),this;var c=u.filter(function(t,e){return e!==l});if(0===c.length){o[t];var d=s(o,[t].map(r)),v=Object.keys(d).length>0;this._state=e(e({},this._state),{},{filter:v?d:void 0,details:e(e({},h),{},{isChanged:!0})})}else{var f=e(e({},o),{},a({},t,c));this._state=e(e({},this._state),{},{filter:f,details:e(e({},h),{},{isChanged:!0})})}return this}},{key:"updateFilter",value:function(t,i){return this._state=e(e({},this._state),{},{filter:t,details:e(e({},i),{},{action:"change",reason:"filter",isChanged:!0})}),this}},{key:"addQuickSearch",value:function(t,a){var s,r=null!==(s=this._state.quickSearch)&&void 0!==s?s:[],n=null!=t?t:[],o=[].concat(i(Array.isArray(r)?r:[r]),i(Array.isArray(n)?n:[n])),h=Array.from(new Set(o)),u=new Set(Array.isArray(r)?r:[r]),l=h.length!==u.size||h.some(function(t){return!u.has(t)});return l&&(this._state=e(e({},this._state),{},{quickSearch:h,details:e(e({},a),{},{action:"add",reason:"quickSearch",isChanged:l})})),this}},{key:"removeQuickSearch",value:function(t){return this._state=e(e({},this._state),{},{quickSearch:void 0,details:e(e({},t),{},{action:"remove",reason:"quickSearch",isChanged:!0})}),this}},{key:"removeQuickSearchItem",value:function(t,i){var a=this._state.quickSearch,s=e({action:"remove",reason:"quickSearch"},i);if(!a)return this._state=e(e({},this._state),{},{details:e(e({},s),{},{isChanged:!1})}),this;var r=Array.isArray(a)?a:[a];if(-1===r.indexOf(t))return this._state=e(e({},this._state),{},{details:e(e({},s),{},{isChanged:!1})}),this;var n=r.filter(function(e){return e!==t});return 0===n.length?this._state=e(e({},this._state),{},{quickSearch:void 0,details:e(e({},s),{},{isChanged:!0})}):this._state=e(e({},this._state),{},{quickSearch:1===n.length?n[0]:n,details:e(e({},s),{},{isChanged:!0})}),this}},{key:"updateSearchInput",value:function(t){return this._state=e(e({},this._state),{},{quickSearch:t,details:{reason:"quickSearch",area:"input",action:"change",isChanged:!0}}),this}},{key:"changePagination",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{area:"filterButton"};return this._state=e(e({},this._state),{},{pagination:t,details:e(e({},i),{},{action:"change",reason:"pagination",isChanged:!0})}),this}},{key:"removePagination",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"filterButton"};return this._state=e(e({},this._state),{},{pagination:void 0,details:e(e({},t),{},{action:"remove",reason:"pagination",isChanged:!0})}),this}},{key:"changeSort",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{area:"sortButton"};return this._state=e(e({},this._state),{},{sort:t,details:e(e({},i),{},{action:"change",reason:"sort"})}),this}},{key:"removeSort",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"sortButton"};return this._state=e(e({},this._state),{},{sort:void 0,details:e(e({},t),{},{action:"remove",reason:"sort"})}),this}},{key:"toggleSortDirection",value:function(t){var i=this._state.sort;if(!i)return this;var a=e(e({},i),{},{direction:"asc"===i.direction?"desc":"asc"});return this._state=e(e({},this._state),{},{sort:a,details:e(e({},t),{},{action:"change",reason:"sort"})}),this}},{key:"updateState",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{area:"filterButton"};return this._state=e(e(e({},this._state),t),{},{details:e(e({},i),{},{action:"change"})}),this}},{key:"reset",value:function(){return this._state=e(e({},this._defaultFilter),{},{details:{action:"reset",isChanged:!0}}),this}},{key:"resetFilter",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"filterButton"};return this._state=e(e({},this._state),{},{filter:void 0,details:e({action:"reset",reason:"filter"},t)}),this}},{key:"resetQuickSearch",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"input"};return this._state=e(e({},this._state),{},{quickSearch:void 0,details:e({action:"reset",reason:"quickSearch"},t)}),this}},{key:"resetPagination",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{reason:"pagination"};return this._state=e(e({},this._state),{},{pagination:void 0,details:e({action:"reset",reason:"pagination"},t)}),this}},{key:"resetSort",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{reason:"sort"};return this._state=e(e({},this._state),{},{sort:void 0,details:e({action:"reset",reason:"sort"},t)}),this}},{key:"isPaginationEqualToDefault",value:function(){var t,e=this._state.pagination,i=null===(t=this._defaultFilter)||void 0===t?void 0:t.pagination;return!e&&!i||!(!e||!i)&&(e.page===i.page&&e.pageSize===i.pageSize)}},{key:"isSortEqualToDefault",value:function(){var t,e=this._state.sort,i=null===(t=this._defaultFilter)||void 0===t?void 0:t.sort;return!e&&!i||!(!e||!i)&&(e.field===i.field&&e.direction===i.direction)}},{key:"extractFilter",value:function(){var t={};return this._state.filter&&(t.filter=this._state.filter),this._state.quickSearch&&(t.quickSearch=this._state.quickSearch),this._state.pagination&&!this.isPaginationEqualToDefault()&&(t.pagination=this._state.pagination),this._state.sort&&!this.isSortEqualToDefault()&&(t.sort=this._state.sort),t}},{key:"countFilterItems",value:function(){var t=this._state.filter;return t?Object.values(t).reduce(function(t,e){return t+(Array.isArray(e)?e.length:0)},0):0}},{key:"hasFilter",value:function(){return!!this._state.filter&&Object.keys(this._state.filter).length>0}},{key:"hasQuickSearch",value:function(){return!!this._state.quickSearch}},{key:"hasPagination",value:function(){return!this.isPaginationEqualToDefault()&&!!this._state.pagination}},{key:"hasSort",value:function(){return!this.isSortEqualToDefault()&&!!this._state.sort}},{key:"isEmpty",value:function(){return!(this.hasFilter()||this.hasQuickSearch()||this.hasPagination()||this.hasSort())}},{key:"build",value:function(){return e({},this._state)}}])}();function u(t,e){return new h(t,e)}export{h as FilterStore,u as createFilterStore,h as default};
2
2
  //# sourceMappingURL=filter-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter-store.js","sources":["../../../src/data-view/filter-store.ts"],"sourcesContent":["import { QueryParam } from '../utils'\r\nimport { IFilterState, IFilterMap, IPagination, ISort, IFilterChangeDetails, IFilterItem, SingleOrArray } from './types'\r\n\r\nexport class FilterStore<T> {\r\n private _state: IFilterState<T>\r\n private _defaultFilter: IFilterState<T> | undefined\r\n\r\n constructor(initialState: IFilterState<T> = {}, defaultFilter?: IFilterState<T>) {\r\n const obj = { ...initialState }\r\n if (obj?.details) delete obj.details // Ensure details are not included in the initial state\r\n this._state = obj\r\n this._defaultFilter = defaultFilter\r\n }\r\n\r\n // Static factory method\r\n // static initialize<T>(filterState: IFilterState<T>, defaultFilter?: IFilterState<T>): FilterStore<T> {\r\n // if (filterState?.details) delete filterState.details // Ensure details are not included in the initial state\r\n // return new FilterStore(filterState, defaultFilter)\r\n // }\r\n\r\n // Getter for current state\r\n get state(): IFilterState<T> {\r\n return { ...this._state }\r\n }\r\n\r\n // Filter operations\r\n addFilterItem(field: keyof T, filterItem: IFilterItem, details?: IFilterChangeDetails): FilterStore<T> {\r\n const existingFieldItems = this._state.filter?.[field] ?? []\r\n\r\n // Check if item already exists to avoid duplicates\r\n const itemExists = existingFieldItems.some((item) => item.value === filterItem.value)\r\n\r\n if (!itemExists) {\r\n const newFieldItems = [...existingFieldItems, filterItem]\r\n const updatedFilter = { ...this._state.filter, [field]: newFieldItems } as IFilterMap<T>\r\n\r\n this._state = { ...this._state, filter: updatedFilter, details: { ...details, action: 'add', isChanged: true } }\r\n } else {\r\n // If item already exists, mark as not changed\r\n this._state = { ...this._state, details: { ...details, action: 'add', reason: 'filter', isChanged: false } }\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeFilterField(field: keyof T, details?: IFilterChangeDetails): FilterStore<T> {\r\n const existingFilter = this._state.filter\r\n\r\n // Check if field exists and has items\r\n const fieldExists = existingFilter && existingFilter[field] && existingFilter[field]!.length > 0\r\n\r\n if (fieldExists) {\r\n // Create new filter without the specified field\r\n const { [field]: removedField, ...remainingFilter } = existingFilter!\r\n\r\n // Check if there are any remaining fields\r\n const hasRemainingFields = Object.keys(remainingFilter).length > 0\r\n\r\n this._state = {\r\n ...this._state,\r\n filter: hasRemainingFields ? (remainingFilter as IFilterMap<T>) : undefined,\r\n details: { ...details, action: 'remove', reason: 'filter', isChanged: true }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeFilterItem(field: keyof T, value: string, details?: IFilterChangeDetails): FilterStore<T> {\r\n const existingFilter = this._state.filter\r\n const defaultDetails: IFilterChangeDetails = { action: 'remove', reason: 'filter', ...details }\r\n\r\n // Check if field exists and has items\r\n if (!existingFilter || !existingFilter[field] || existingFilter[field]!.length === 0) {\r\n // Field doesn't exist or is empty, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n const fieldItems = existingFilter[field]!\r\n\r\n // Find the item to remove\r\n const itemIndex = fieldItems.findIndex((item) => item.value === value)\r\n\r\n if (itemIndex === -1) {\r\n // Item not found, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n // Remove the specific item\r\n const updatedFieldItems = fieldItems.filter((_, index) => index !== itemIndex)\r\n\r\n // If no items left in the field, remove the field entirely\r\n if (updatedFieldItems.length === 0) {\r\n const { [field]: removedField, ...remainingFilter } = existingFilter\r\n const hasRemainingFields = Object.keys(remainingFilter).length > 0\r\n\r\n this._state = {\r\n ...this._state,\r\n filter: hasRemainingFields ? (remainingFilter as IFilterMap<T>) : undefined,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n } else {\r\n // Update the field with remaining items\r\n const updatedFilter = { ...existingFilter, [field]: updatedFieldItems } as IFilterMap<T>\r\n\r\n this._state = {\r\n ...this._state,\r\n filter: updatedFilter,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n updateFilter(filter?: IFilterMap<T>, details?: IFilterChangeDetails) {\r\n this._state = { ...this._state, filter, details: { ...details, action: 'change', reason: 'filter', isChanged: true } }\r\n return this\r\n }\r\n\r\n // Quick search operations\r\n addQuickSearch(value?: SingleOrArray<string>, details?: IFilterChangeDetails): FilterStore<T> {\r\n const currentValues = this._state.quickSearch ?? []\r\n const newValues = value ?? []\r\n\r\n // Merge current and new values\r\n const allValues = [...(Array.isArray(currentValues) ? currentValues : [currentValues]), ...(Array.isArray(newValues) ? newValues : [newValues])]\r\n\r\n // Remove duplicates\r\n const uniqueValues = Array.from(new Set(allValues))\r\n\r\n // Check if changed\r\n const currentSet = new Set(Array.isArray(currentValues) ? currentValues : [currentValues])\r\n const isChanged = uniqueValues.length !== currentSet.size || uniqueValues.some((val) => !currentSet.has(val))\r\n\r\n if (isChanged) {\r\n this._state = { ...this._state, quickSearch: uniqueValues, details: { ...details, action: 'add', reason: 'quickSearch', isChanged } }\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeQuickSearch(details?: IFilterChangeDetails): FilterStore<T> {\r\n this._state = { ...this._state, quickSearch: undefined, details: { ...details, action: 'remove', reason: 'quickSearch', isChanged: true } }\r\n return this\r\n }\r\n\r\n removeQuickSearchItem(value: string, details?: IFilterChangeDetails): FilterStore<T> {\r\n const currentValues = this._state.quickSearch\r\n const defaultDetails: IFilterChangeDetails = { action: 'remove', reason: 'quickSearch', ...details }\r\n\r\n // Check if quickSearch exists and has values\r\n if (!currentValues) {\r\n // No quickSearch to remove from, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n // Convert to array for consistent handling\r\n const valuesArray = Array.isArray(currentValues) ? currentValues : [currentValues]\r\n\r\n // Check if the value exists\r\n const valueIndex = valuesArray.indexOf(value)\r\n\r\n if (valueIndex === -1) {\r\n // Value not found, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n // Remove the specific value\r\n const updatedValues = valuesArray.filter((val) => val !== value)\r\n\r\n // If no values left, remove quickSearch entirely\r\n if (updatedValues.length === 0) {\r\n this._state = {\r\n ...this._state,\r\n quickSearch: undefined,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n } else {\r\n // Update with remaining values\r\n this._state = {\r\n ...this._state,\r\n quickSearch: updatedValues.length === 1 ? updatedValues[0] : updatedValues,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n updateSearchInput(quickSearch: SingleOrArray<string>): FilterStore<T> {\r\n this._state = { ...this._state, quickSearch, details: { reason: 'quickSearch', area: 'input', action: 'change', isChanged: true } }\r\n return this\r\n }\r\n\r\n // Pagination operations\r\n changePagination(pagination: IPagination, details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, pagination, details: { ...details, action: 'change', reason: 'pagination', isChanged: true } }\r\n return this\r\n }\r\n\r\n removePagination(details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, pagination: undefined, details: { ...details, action: 'remove', reason: 'pagination', isChanged: true } }\r\n return this\r\n }\r\n\r\n // Sort operations\r\n changeSort(sort: ISort<T>, details: IFilterChangeDetails = { area: 'sortButton' }): FilterStore<T> {\r\n this._state = { ...this._state, sort, details: { ...details, action: 'change', reason: 'sort' } }\r\n return this\r\n }\r\n\r\n removeSort(details: IFilterChangeDetails = { area: 'sortButton' }): FilterStore<T> {\r\n this._state = { ...this._state, sort: undefined, details: { ...details, action: 'remove', reason: 'sort' } }\r\n return this\r\n }\r\n\r\n toggleSortDirection(details: IFilterChangeDetails): FilterStore<T> {\r\n const currentSort = this._state.sort\r\n if (!currentSort) return this\r\n const finalSort: ISort<T> = { ...currentSort, direction: currentSort.direction === 'asc' ? 'desc' : 'asc' }\r\n this._state = { ...this._state, sort: finalSort, details: { ...details, action: 'change', reason: 'sort' } }\r\n return this\r\n }\r\n\r\n // Batch operations\r\n updateState(updates: Partial<IFilterState<T>>, details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, ...updates, details: { ...details, action: 'change' } }\r\n return this\r\n }\r\n\r\n // Reset operations\r\n reset(): FilterStore<T> {\r\n this._state = { ...this._defaultFilter, details: { action: 'reset', isChanged: true } }\r\n return this\r\n }\r\n\r\n resetFilter(details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, filter: undefined, details: { action: 'reset', reason: 'filter', ...details } }\r\n return this\r\n }\r\n\r\n resetQuickSearch(details: IFilterChangeDetails = { area: 'input' }): FilterStore<T> {\r\n this._state = { ...this._state, quickSearch: undefined, details: { action: 'reset', reason: 'quickSearch', ...details } }\r\n return this\r\n }\r\n\r\n resetPagination(details: IFilterChangeDetails = { reason: 'pagination' }): FilterStore<T> {\r\n this._state = { ...this._state, pagination: undefined, details: { action: 'reset', reason: 'pagination', ...details } }\r\n return this\r\n }\r\n\r\n resetSort(details: IFilterChangeDetails = { reason: 'sort' }): FilterStore<T> {\r\n this._state = { ...this._state, sort: undefined, details: { action: 'reset', reason: 'sort', ...details } }\r\n return this\r\n }\r\n\r\n // Utility methods\r\n private isPaginationEqualToDefault(): boolean {\r\n const curentVal = this._state.pagination\r\n const defaultVal = this._defaultFilter?.pagination\r\n\r\n if (!curentVal && !defaultVal) return true\r\n if (!curentVal || !defaultVal) return false\r\n\r\n return curentVal.page === defaultVal.page && curentVal.pageSize === defaultVal.pageSize\r\n }\r\n\r\n private isSortEqualToDefault(): boolean {\r\n const currentVal = this._state.sort\r\n const defaultVal = this._defaultFilter?.sort\r\n\r\n if (!currentVal && !defaultVal) return true\r\n if (!currentVal || !defaultVal) return false\r\n\r\n return currentVal.field === defaultVal.field && currentVal.direction === defaultVal.direction\r\n }\r\n\r\n extractFilter(): IFilterState<T> {\r\n const result: IFilterState<T> = {}\r\n\r\n // Include filter if it exists\r\n if (this._state.filter) {\r\n result.filter = this._state.filter\r\n }\r\n\r\n // Include quickSearch if it exists\r\n if (this._state.quickSearch) {\r\n result.quickSearch = this._state.quickSearch\r\n }\r\n\r\n // Include pagination only if it's different from default\r\n if (this._state.pagination && !this.isPaginationEqualToDefault()) {\r\n result.pagination = this._state.pagination\r\n }\r\n\r\n // Include sort only if it's different from default\r\n if (this._state.sort && !this.isSortEqualToDefault()) {\r\n result.sort = this._state.sort\r\n }\r\n\r\n return result\r\n }\r\n\r\n countFilterItems(): number {\r\n const filter = this._state.filter\r\n if (!filter) return 0\r\n\r\n return Object.values(filter).reduce<number>((count, items) => {\r\n // If items is an array and return its length, otherwise return 0\r\n return count + (Array.isArray(items) ? items.length : 0)\r\n }, 0)\r\n }\r\n\r\n hasFilter(): boolean {\r\n return !!this._state.filter && Object.keys(this._state.filter).length > 0\r\n }\r\n\r\n hasQuickSearch(): boolean {\r\n return !!this._state.quickSearch\r\n }\r\n\r\n hasPagination(): boolean {\r\n if (this.isPaginationEqualToDefault()) return false\r\n return !!this._state.pagination\r\n }\r\n\r\n hasSort(): boolean {\r\n if (this.isSortEqualToDefault()) return false\r\n return !!this._state.sort\r\n }\r\n\r\n isEmpty(): boolean {\r\n return !this.hasFilter() && !this.hasQuickSearch() && !this.hasPagination() && !this.hasSort()\r\n }\r\n\r\n converToQueryParam = (base: string) => {\r\n const extractFilter = this.extractFilter()\r\n const queryString = QueryParam.stringify({ filter: JSON.stringify(extractFilter) })\r\n return base + queryString\r\n }\r\n\r\n // Build the final state\r\n build(): IFilterState<T> {\r\n return { ...this._state }\r\n }\r\n}\r\nexport default FilterStore\r\n\r\nexport function createFilterStore<T>(filterState: IFilterState<T>, defaultFilter?: IFilterState<T>): FilterStore<T> {\r\n return new FilterStore(filterState, defaultFilter)\r\n}\r\n"],"names":["FilterStore","_createClass","_this","this","initialState","arguments","length","undefined","defaultFilter","_classCallCheck","_defineProperty","base","extractFilter","QueryParam","stringify","filter","JSON","obj","_objectSpread","details","_state","_defaultFilter","key","get","value","field","filterItem","_this$_state$filter$f","_this$_state$filter","existingFieldItems","some","item","action","reason","isChanged","newFieldItems","concat","_toConsumableArray","updatedFilter","existingFilter","remainingFilter","_objectWithoutProperties","map","_toPropertyKey","hasRemainingFields","Object","keys","defaultDetails","fieldItems","itemIndex","findIndex","updatedFieldItems","_","index","_this$_state$quickSea","currentValues","quickSearch","newValues","allValues","Array","isArray","uniqueValues","from","Set","currentSet","size","val","has","valuesArray","indexOf","updatedValues","area","pagination","sort","currentSort","finalSort","direction","updates","_this$_defaultFilter","curentVal","defaultVal","page","pageSize","_this$_defaultFilter2","currentVal","result","isPaginationEqualToDefault","isSortEqualToDefault","values","reduce","count","items","hasFilter","hasQuickSearch","hasPagination","hasSort","createFilterStore","filterState"],"mappings":"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"}
1
+ {"version":3,"file":"filter-store.js","sources":["../../../src/data-view/filter-store.ts"],"sourcesContent":["import { QueryParam } from '../utils'\r\nimport { IFilterState, IFilterMap, IPagination, ISort, IFilterChangeDetails, IFilterItem, SingleOrArray } from './types'\r\n\r\nexport class FilterStore<T> {\r\n private _state: IFilterState<T>\r\n private _defaultFilter: IFilterState<T> | undefined\r\n\r\n constructor(initialState: IFilterState<T> = {}, defaultFilter?: IFilterState<T>) {\r\n const obj = { ...initialState }\r\n if (obj?.details) delete obj.details // Ensure details are not included in the initial state\r\n this._state = obj\r\n this._defaultFilter = defaultFilter\r\n }\r\n\r\n // Static factory method\r\n // static initialize<T>(filterState: IFilterState<T>, defaultFilter?: IFilterState<T>): FilterStore<T> {\r\n // if (filterState?.details) delete filterState.details // Ensure details are not included in the initial state\r\n // return new FilterStore(filterState, defaultFilter)\r\n // }\r\n\r\n // Getter for current state\r\n get state(): IFilterState<T> {\r\n return { ...this._state }\r\n }\r\n\r\n // Filter operations\r\n addFilterItem(field: keyof T, filterItem: IFilterItem, details?: IFilterChangeDetails): FilterStore<T> {\r\n const existingFieldItems = this._state.filter?.[field] ?? []\r\n\r\n // Check if item already exists to avoid duplicates\r\n const itemExists = existingFieldItems.some((item) => item.value === filterItem.value)\r\n\r\n if (!itemExists) {\r\n const newFieldItems = [...existingFieldItems, filterItem]\r\n const updatedFilter = { ...this._state.filter, [field]: newFieldItems } as IFilterMap<T>\r\n\r\n this._state = { ...this._state, filter: updatedFilter, details: { ...details, action: 'add', isChanged: true } }\r\n } else {\r\n // If item already exists, mark as not changed\r\n this._state = { ...this._state, details: { ...details, action: 'add', reason: 'filter', isChanged: false } }\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeFilterField(field: keyof T, details?: IFilterChangeDetails): FilterStore<T> {\r\n const existingFilter = this._state.filter\r\n\r\n // Check if field exists and has items\r\n const fieldExists = existingFilter && existingFilter[field] && existingFilter[field]!.length > 0\r\n\r\n if (fieldExists) {\r\n // Create new filter without the specified field\r\n const { [field]: removedField, ...remainingFilter } = existingFilter!\r\n\r\n // Check if there are any remaining fields\r\n const hasRemainingFields = Object.keys(remainingFilter).length > 0\r\n\r\n this._state = {\r\n ...this._state,\r\n filter: hasRemainingFields ? (remainingFilter as IFilterMap<T>) : undefined,\r\n details: { ...details, action: 'remove', reason: 'filter', isChanged: true }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeFilterItem(field: keyof T, value: string, details?: IFilterChangeDetails): FilterStore<T> {\r\n const existingFilter = this._state.filter\r\n const defaultDetails: IFilterChangeDetails = { action: 'remove', reason: 'filter', ...details }\r\n\r\n // Check if field exists and has items\r\n if (!existingFilter || !existingFilter[field] || existingFilter[field]!.length === 0) {\r\n // Field doesn't exist or is empty, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n const fieldItems = existingFilter[field]!\r\n\r\n // Find the item to remove\r\n const itemIndex = fieldItems.findIndex((item) => item.value === value)\r\n\r\n if (itemIndex === -1) {\r\n // Item not found, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n // Remove the specific item\r\n const updatedFieldItems = fieldItems.filter((_, index) => index !== itemIndex)\r\n\r\n // If no items left in the field, remove the field entirely\r\n if (updatedFieldItems.length === 0) {\r\n const { [field]: removedField, ...remainingFilter } = existingFilter\r\n const hasRemainingFields = Object.keys(remainingFilter).length > 0\r\n\r\n this._state = {\r\n ...this._state,\r\n filter: hasRemainingFields ? (remainingFilter as IFilterMap<T>) : undefined,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n } else {\r\n // Update the field with remaining items\r\n const updatedFilter = { ...existingFilter, [field]: updatedFieldItems } as IFilterMap<T>\r\n\r\n this._state = {\r\n ...this._state,\r\n filter: updatedFilter,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n updateFilter(filter?: IFilterMap<T>, details?: IFilterChangeDetails) {\r\n this._state = { ...this._state, filter, details: { ...details, action: 'change', reason: 'filter', isChanged: true } }\r\n return this\r\n }\r\n\r\n // Quick search operations\r\n addQuickSearch(value?: SingleOrArray<string>, details?: IFilterChangeDetails): FilterStore<T> {\r\n const currentValues = this._state.quickSearch ?? []\r\n const newValues = value ?? []\r\n\r\n // Merge current and new values\r\n const allValues = [...(Array.isArray(currentValues) ? currentValues : [currentValues]), ...(Array.isArray(newValues) ? newValues : [newValues])]\r\n\r\n // Remove duplicates\r\n const uniqueValues = Array.from(new Set(allValues))\r\n\r\n // Check if changed\r\n const currentSet = new Set(Array.isArray(currentValues) ? currentValues : [currentValues])\r\n const isChanged = uniqueValues.length !== currentSet.size || uniqueValues.some((val) => !currentSet.has(val))\r\n\r\n if (isChanged) {\r\n this._state = { ...this._state, quickSearch: uniqueValues, details: { ...details, action: 'add', reason: 'quickSearch', isChanged } }\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeQuickSearch(details?: IFilterChangeDetails): FilterStore<T> {\r\n this._state = { ...this._state, quickSearch: undefined, details: { ...details, action: 'remove', reason: 'quickSearch', isChanged: true } }\r\n return this\r\n }\r\n\r\n removeQuickSearchItem(value: string, details?: IFilterChangeDetails): FilterStore<T> {\r\n const currentValues = this._state.quickSearch\r\n const defaultDetails: IFilterChangeDetails = { action: 'remove', reason: 'quickSearch', ...details }\r\n\r\n // Check if quickSearch exists and has values\r\n if (!currentValues) {\r\n // No quickSearch to remove from, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n // Convert to array for consistent handling\r\n const valuesArray = Array.isArray(currentValues) ? currentValues : [currentValues]\r\n\r\n // Check if the value exists\r\n const valueIndex = valuesArray.indexOf(value)\r\n\r\n if (valueIndex === -1) {\r\n // Value not found, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n // Remove the specific value\r\n const updatedValues = valuesArray.filter((val) => val !== value)\r\n\r\n // If no values left, remove quickSearch entirely\r\n if (updatedValues.length === 0) {\r\n this._state = {\r\n ...this._state,\r\n quickSearch: undefined,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n } else {\r\n // Update with remaining values\r\n this._state = {\r\n ...this._state,\r\n quickSearch: updatedValues.length === 1 ? updatedValues[0] : updatedValues,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n updateSearchInput(quickSearch: SingleOrArray<string>): FilterStore<T> {\r\n this._state = { ...this._state, quickSearch, details: { reason: 'quickSearch', area: 'input', action: 'change', isChanged: true } }\r\n return this\r\n }\r\n\r\n // Pagination operations\r\n changePagination(pagination: IPagination, details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, pagination, details: { ...details, action: 'change', reason: 'pagination', isChanged: true } }\r\n return this\r\n }\r\n\r\n removePagination(details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, pagination: undefined, details: { ...details, action: 'remove', reason: 'pagination', isChanged: true } }\r\n return this\r\n }\r\n\r\n // Sort operations\r\n changeSort(sort: ISort<T>, details: IFilterChangeDetails = { area: 'sortButton' }): FilterStore<T> {\r\n this._state = { ...this._state, sort, details: { ...details, action: 'change', reason: 'sort' } }\r\n return this\r\n }\r\n\r\n removeSort(details: IFilterChangeDetails = { area: 'sortButton' }): FilterStore<T> {\r\n this._state = { ...this._state, sort: undefined, details: { ...details, action: 'remove', reason: 'sort' } }\r\n return this\r\n }\r\n\r\n toggleSortDirection(details: IFilterChangeDetails): FilterStore<T> {\r\n const currentSort = this._state.sort\r\n if (!currentSort) return this\r\n const finalSort: ISort<T> = { ...currentSort, direction: currentSort.direction === 'asc' ? 'desc' : 'asc' }\r\n this._state = { ...this._state, sort: finalSort, details: { ...details, action: 'change', reason: 'sort' } }\r\n return this\r\n }\r\n\r\n // Batch operations\r\n updateState(updates: Partial<IFilterState<T>>, details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, ...updates, details: { ...details, action: 'change' } }\r\n return this\r\n }\r\n\r\n // Reset operations\r\n reset(): FilterStore<T> {\r\n this._state = { ...this._defaultFilter, details: { action: 'reset', isChanged: true } }\r\n return this\r\n }\r\n\r\n resetFilter(details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, filter: undefined, details: { action: 'reset', reason: 'filter', ...details } }\r\n return this\r\n }\r\n\r\n resetQuickSearch(details: IFilterChangeDetails = { area: 'input' }): FilterStore<T> {\r\n this._state = { ...this._state, quickSearch: undefined, details: { action: 'reset', reason: 'quickSearch', ...details } }\r\n return this\r\n }\r\n\r\n resetPagination(details: IFilterChangeDetails = { reason: 'pagination' }): FilterStore<T> {\r\n this._state = { ...this._state, pagination: undefined, details: { action: 'reset', reason: 'pagination', ...details } }\r\n return this\r\n }\r\n\r\n resetSort(details: IFilterChangeDetails = { reason: 'sort' }): FilterStore<T> {\r\n this._state = { ...this._state, sort: undefined, details: { action: 'reset', reason: 'sort', ...details } }\r\n return this\r\n }\r\n\r\n // Utility methods\r\n private isPaginationEqualToDefault(): boolean {\r\n const curentVal = this._state.pagination\r\n const defaultVal = this._defaultFilter?.pagination\r\n\r\n if (!curentVal && !defaultVal) return true\r\n if (!curentVal || !defaultVal) return false\r\n\r\n return curentVal.page === defaultVal.page && curentVal.pageSize === defaultVal.pageSize\r\n }\r\n\r\n private isSortEqualToDefault(): boolean {\r\n const currentVal = this._state.sort\r\n const defaultVal = this._defaultFilter?.sort\r\n\r\n if (!currentVal && !defaultVal) return true\r\n if (!currentVal || !defaultVal) return false\r\n\r\n return currentVal.field === defaultVal.field && currentVal.direction === defaultVal.direction\r\n }\r\n\r\n extractFilter(): IFilterState<T> {\r\n const result: IFilterState<T> = {}\r\n\r\n // Include filter if it exists\r\n if (this._state.filter) {\r\n result.filter = this._state.filter\r\n }\r\n\r\n // Include quickSearch if it exists\r\n if (this._state.quickSearch) {\r\n result.quickSearch = this._state.quickSearch\r\n }\r\n\r\n // Include pagination only if it's different from default\r\n if (this._state.pagination && !this.isPaginationEqualToDefault()) {\r\n result.pagination = this._state.pagination\r\n }\r\n\r\n // Include sort only if it's different from default\r\n if (this._state.sort && !this.isSortEqualToDefault()) {\r\n result.sort = this._state.sort\r\n }\r\n\r\n return result\r\n }\r\n\r\n countFilterItems(): number {\r\n const filter = this._state.filter\r\n if (!filter) return 0\r\n\r\n return Object.values(filter).reduce<number>((count, items) => {\r\n // If items is an array and return its length, otherwise return 0\r\n return count + (Array.isArray(items) ? items.length : 0)\r\n }, 0)\r\n }\r\n\r\n hasFilter(): boolean {\r\n return !!this._state.filter && Object.keys(this._state.filter).length > 0\r\n }\r\n\r\n hasQuickSearch(): boolean {\r\n return !!this._state.quickSearch\r\n }\r\n\r\n hasPagination(): boolean {\r\n if (this.isPaginationEqualToDefault()) return false\r\n return !!this._state.pagination\r\n }\r\n\r\n hasSort(): boolean {\r\n if (this.isSortEqualToDefault()) return false\r\n return !!this._state.sort\r\n }\r\n\r\n isEmpty(): boolean {\r\n return !this.hasFilter() && !this.hasQuickSearch() && !this.hasPagination() && !this.hasSort()\r\n }\r\n\r\n converToQueryParam = (base: string) => {\r\n const extractFilter = this.extractFilter()\r\n const queryString = QueryParam.stringify({ filter: JSON.stringify(extractFilter) })\r\n return base + queryString\r\n }\r\n\r\n // Build the final state\r\n build(): IFilterState<T> {\r\n return { ...this._state }\r\n }\r\n}\r\nexport default FilterStore\r\n\r\nexport function createFilterStore<T>(filterState: IFilterState<T>, defaultFilter?: IFilterState<T>): FilterStore<T> {\r\n return new FilterStore(filterState, defaultFilter)\r\n}\r\n"],"names":["FilterStore","_createClass","_this","this","initialState","arguments","length","undefined","defaultFilter","_classCallCheck","_defineProperty","base","extractFilter","QueryParam","stringify","filter","JSON","obj","_objectSpread","details","_state","_defaultFilter","key","get","value","field","filterItem","_this$_state$filter$f","_this$_state$filter","existingFieldItems","some","item","action","reason","isChanged","newFieldItems","concat","_toConsumableArray","updatedFilter","existingFilter","remainingFilter","_objectWithoutProperties","map","_toPropertyKey","hasRemainingFields","Object","keys","defaultDetails","fieldItems","itemIndex","findIndex","updatedFieldItems","_","index","_this$_state$quickSea","currentValues","quickSearch","newValues","allValues","Array","isArray","uniqueValues","from","Set","currentSet","size","val","has","valuesArray","indexOf","updatedValues","area","pagination","sort","currentSort","finalSort","direction","updates","_this$_defaultFilter","curentVal","defaultVal","page","pageSize","_this$_defaultFilter2","currentVal","result","isPaginationEqualToDefault","isSortEqualToDefault","values","reduce","count","items","hasFilter","hasQuickSearch","hasPagination","hasSort","createFilterStore","filterState"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{objectSpread2 as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{createFilterStore as r}from"./filter-store.js";import{tryParseObject as t}from"../utils/helpers.js";import"../utils/dayjs-config.js";import{QueryParam as i}from"../utils/query-param.js";var o=function(e){if("undefined"!=typeof window)try{var t,o={filter:"",sk:""};if(e.filter&&Object.keys(e.filter).length>0){var n=r(e.filter,e.defaultFilter).extractFilter(),l=Object.keys(n).length>0?JSON.stringify(n):"";o.filter=l}o.sk=null!==(t=e.seedKey)&&void 0!==t?t:"",o.filter||o.sk?i.replacePatch(o):i.replaceDeletes("filter","sk")}catch(e){console.error("Error syncing filter and seedKey to URL:",e)}},n=function(e){if("undefined"==typeof window)return null;try{var r,o,n,l=i.gets("filter","sk");return{filter:t(l.filter,null!==(r=e.defaultFilter)&&void 0!==r?r:{}),seedKey:null!==(o=null!==(n=l.sk)&&void 0!==n?n:e.defaultSeedKey)&&void 0!==o?o:(new Date).getTime().toString()}}catch(e){return console.error("Error getting filter from URL:",e),null}},l=function(e){var r;if("undefined"==typeof window)return null!==(r=e.defaultSeedKey)&&void 0!==r?r:(new Date).getTime().toString();try{var t,o;return null!==(t=null!==(o=i.gets("sk").sk)&&void 0!==o?o:e.defaultSeedKey)&&void 0!==t?t:(new Date).getTime().toString()}catch(r){var n;return console.error("Error getting seed key from URL:",r),null!==(n=e.defaultSeedKey)&&void 0!==n?n:(new Date).getTime().toString()}},d=function(e){if("undefined"!=typeof window)try{var r,t={mode:e.viewMode!==e.defaultViewMode&&null!==(r=e.viewMode)&&void 0!==r?r:""};t.mode?i.replacePatch(t):i.replaceDeletes("mode")}catch(e){console.error("Error syncing view mode to URL:",e)}},f=function(e){if("undefined"==typeof window)return e.defaultViewMode;try{var r=i.gets("mode");return r.mode?r.mode:e.defaultViewMode}catch(r){return console.error("Error getting view mode from URL:",r),e.defaultViewMode}},u=function(r){var t=e({},r||{});return t.details&&delete t.details,i.stringify({filter:JSON.stringify(t)})};export{u as convertFilterToQueryParam,n as getQueryFromURL,l as getSeedKeyFromURL,f as getViewModeFromURL,o as syncQueryToURL,d as syncViewModeToURL};
1
+ import{objectSpread2 as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{createFilterStore as r}from"./filter-store.js";import{QueryParam as t}from"../utils/query-param.js";import{tryParseObject as i}from"../utils/helpers.js";var o=function(e){if("undefined"!=typeof window)try{var i,o={filter:"",sk:""};if(e.filter&&Object.keys(e.filter).length>0){var n=r(e.filter,e.defaultFilter).extractFilter(),l=Object.keys(n).length>0?JSON.stringify(n):"";o.filter=l}o.sk=null!==(i=e.seedKey)&&void 0!==i?i:"",o.filter||o.sk?t.replacePatch(o):t.replaceDeletes("filter","sk")}catch(e){console.error("Error syncing filter and seedKey to URL:",e)}},n=function(e){if("undefined"==typeof window)return null;try{var r,o,n,l=t.gets("filter","sk");return{filter:i(l.filter,null!==(r=e.defaultFilter)&&void 0!==r?r:{}),seedKey:null!==(o=null!==(n=l.sk)&&void 0!==n?n:e.defaultSeedKey)&&void 0!==o?o:(new Date).getTime().toString()}}catch(e){return console.error("Error getting filter from URL:",e),null}},l=function(e){var r;if("undefined"==typeof window)return null!==(r=e.defaultSeedKey)&&void 0!==r?r:(new Date).getTime().toString();try{var i,o;return null!==(i=null!==(o=t.gets("sk").sk)&&void 0!==o?o:e.defaultSeedKey)&&void 0!==i?i:(new Date).getTime().toString()}catch(r){var n;return console.error("Error getting seed key from URL:",r),null!==(n=e.defaultSeedKey)&&void 0!==n?n:(new Date).getTime().toString()}},d=function(e){if("undefined"!=typeof window)try{var r,i={mode:e.viewMode!==e.defaultViewMode&&null!==(r=e.viewMode)&&void 0!==r?r:""};i.mode?t.replacePatch(i):t.replaceDeletes("mode")}catch(e){console.error("Error syncing view mode to URL:",e)}},f=function(e){if("undefined"==typeof window)return e.defaultViewMode;try{var r=t.gets("mode");return r.mode?r.mode:e.defaultViewMode}catch(r){return console.error("Error getting view mode from URL:",r),e.defaultViewMode}},u=function(r){var i=e({},r||{});return i.details&&delete i.details,t.stringify({filter:JSON.stringify(i)})};export{u as convertFilterToQueryParam,n as getQueryFromURL,l as getSeedKeyFromURL,f as getViewModeFromURL,o as syncQueryToURL,d as syncViewModeToURL};
2
2
  //# sourceMappingURL=query-param-url.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-param-url.js","sources":["../../../src/data-view/query-param-url.ts"],"sourcesContent":["import { IFilterState } from './types'\r\nimport { createFilterStore } from './filter-store'\r\nimport { QueryParam, tryParseObject } from '../utils'\r\nimport { EViewMode } from './view-mode.types'\r\n\r\nexport interface IViewDataQueryParams {\r\n filter?: string\r\n sk?: string\r\n mode?: string\r\n}\r\n\r\nexport interface IViewDataHandlerDef<T> {\r\n filter?: IFilterState<T>\r\n seedKey?: string\r\n defaultFilter?: IFilterState<T>\r\n defaultSeedKey?: string\r\n defaultValue?: string\r\n viewMode?: EViewMode\r\n defaultViewMode?: EViewMode\r\n}\r\n\r\nexport type IViewDataHandlerParams<T, K extends keyof IViewDataHandlerDef<T> = keyof IViewDataHandlerDef<T>> = Pick<IViewDataHandlerDef<T>, K>\r\n\r\nexport const syncQueryToURL = <T>(params: IViewDataHandlerParams<T, 'filter' | 'seedKey' | 'defaultFilter'>) => {\r\n // If window is undefined (e.g., during SSR), do nothing\r\n if (typeof window === 'undefined') return\r\n try {\r\n const updateParams: IViewDataQueryParams = { filter: '', sk: '' }\r\n\r\n // Handle filter\r\n if (!!params.filter && Object.keys(params.filter).length > 0) {\r\n const store = createFilterStore(params.filter, params.defaultFilter)\r\n const obj = store.extractFilter()\r\n const filterString = Object.keys(obj).length > 0 ? JSON.stringify(obj) : ''\r\n updateParams.filter = filterString\r\n }\r\n\r\n // Handle seedKey\r\n updateParams.sk = params.seedKey ?? ''\r\n\r\n // Update URL with both params at once\r\n if (updateParams.filter || updateParams.sk) {\r\n QueryParam.replacePatch<IViewDataQueryParams>(updateParams)\r\n } else {\r\n // If no params to update, remove existing filter and seedKey from URL\r\n QueryParam.replaceDeletes<IViewDataQueryParams>('filter', 'sk')\r\n }\r\n } catch (error) {\r\n console.error('Error syncing filter and seedKey to URL:', error)\r\n }\r\n}\r\n\r\nexport const getQueryFromURL = <T>(params: IViewDataHandlerParams<T, 'defaultFilter' | 'defaultSeedKey'>) => {\r\n // If window is undefined (e.g., during SSR), return null\r\n if (typeof window === 'undefined') return null\r\n\r\n // Attempt to parse filter and seedKey from URL\r\n try {\r\n const urlParams = QueryParam.gets<IViewDataQueryParams>('filter', 'sk')\r\n const filter = tryParseObject<IFilterState<T>>(urlParams.filter, params.defaultFilter ?? {})\r\n return {\r\n filter,\r\n seedKey: urlParams.sk ?? params.defaultSeedKey ?? new Date().getTime().toString()\r\n }\r\n } catch (error) {\r\n console.error('Error getting filter from URL:', error)\r\n return null\r\n }\r\n}\r\n\r\n// Methods for managing seedKey in URL\r\nexport const getSeedKeyFromURL = <T>(params: IViewDataHandlerParams<T, 'defaultSeedKey'>): string => {\r\n // If window is undefined (e.g., during SSR), return defaultSeedKey or current timestamp\r\n if (typeof window === 'undefined') return params.defaultSeedKey ?? new Date().getTime().toString()\r\n try {\r\n const q = QueryParam.gets<IViewDataQueryParams>('sk')\r\n return q.sk ?? params.defaultSeedKey ?? new Date().getTime().toString()\r\n } catch (error) {\r\n console.error('Error getting seed key from URL:', error)\r\n return params.defaultSeedKey ?? new Date().getTime().toString()\r\n }\r\n}\r\n\r\nexport const syncViewModeToURL = <T>(params: IViewDataHandlerParams<T, 'viewMode' | 'defaultViewMode'>) => {\r\n // If window is undefined (e.g., during SSR), do nothing\r\n if (typeof window === 'undefined') return\r\n try {\r\n const updateParams: IViewDataQueryParams = {\r\n mode: params.viewMode !== params.defaultViewMode ? params.viewMode ?? '' : ''\r\n }\r\n\r\n // Update URL with view mode\r\n if (updateParams.mode) {\r\n QueryParam.replacePatch<IViewDataQueryParams>(updateParams)\r\n } else {\r\n // If no view mode to update, remove existing mode from URL\r\n QueryParam.replaceDeletes<IViewDataQueryParams>('mode')\r\n }\r\n } catch (error) {\r\n console.error('Error syncing view mode to URL:', error)\r\n }\r\n}\r\n\r\nexport const getViewModeFromURL = <T>(params: IViewDataHandlerParams<T, 'defaultViewMode'>): EViewMode | undefined => {\r\n // If window is undefined (e.g., during SSR), return defaultViewMode\r\n if (typeof window === 'undefined') return params.defaultViewMode\r\n try {\r\n const q = QueryParam.gets<IViewDataQueryParams>('mode')\r\n return q.mode ? (q.mode as EViewMode) : params.defaultViewMode\r\n } catch (error) {\r\n console.error('Error getting view mode from URL:', error)\r\n return params.defaultViewMode\r\n }\r\n}\r\n\r\nexport const convertFilterToQueryParam = <T>(filterState?: IFilterState<T>) => {\r\n const obj = { ...(filterState || {}) }\r\n if (!!obj.details) delete obj.details\r\n return QueryParam.stringify<IViewDataQueryParams>({ filter: JSON.stringify(obj) })\r\n}\r\n"],"names":["syncQueryToURL","params","window","_params$seedKey","updateParams","filter","sk","Object","keys","length","obj","createFilterStore","defaultFilter","extractFilter","filterString","JSON","stringify","seedKey","QueryParam","replacePatch","replaceDeletes","error","console","getQueryFromURL","_params$defaultFilter","_ref","_urlParams$sk","urlParams","gets","tryParseObject","defaultSeedKey","Date","getTime","toString","getSeedKeyFromURL","_params$defaultSeedKe","_ref2","_q$sk","_params$defaultSeedKe2","syncViewModeToURL","_params$viewMode","mode","viewMode","defaultViewMode","getViewModeFromURL","q","convertFilterToQueryParam","filterState","_objectSpread","details"],"mappings":"iRAuBaA,EAAiB,SAAIC,GAEhC,GAAsB,oBAAXC,OACX,IAAI,IAAAC,EACIC,EAAqC,CAAEC,OAAQ,GAAIC,GAAI,IAG7D,GAAML,EAAOI,QAAUE,OAAOC,KAAKP,EAAOI,QAAQI,OAAS,EAAG,CAC5D,IACMC,EADQC,EAAkBV,EAAOI,OAAQJ,EAAOW,eACpCC,gBACZC,EAAeP,OAAOC,KAAKE,GAAKD,OAAS,EAAIM,KAAKC,UAAUN,GAAO,GACzEN,EAAaC,OAASS,CACvB,CAGDV,EAAaE,GAAmBH,QAAjBA,EAAGF,EAAOgB,eAAOd,IAAAA,EAAAA,EAAI,GAGhCC,EAAaC,QAAUD,EAAaE,GACtCY,EAAWC,aAAmCf,GAG9Cc,EAAWE,eAAqC,SAAU,KAE7D,CAAC,MAAOC,GACPC,QAAQD,MAAM,2CAA4CA,EAC3D,CACH,EAEaE,EAAkB,SAAItB,GAEjC,GAAsB,oBAAXC,OAAwB,OAAO,KAG1C,IAAI,IAAAsB,EAAAC,EAAAC,EACIC,EAAYT,EAAWU,KAA2B,SAAU,MAElE,MAAO,CACLvB,OAFawB,EAAgCF,EAAUtB,eAAMmB,EAAEvB,EAAOW,qBAAa,IAAAY,EAAAA,EAAI,CAAA,GAGvFP,QAA8C,QAAvCQ,EAAcC,QAAdA,EAAEC,EAAUrB,UAAEoB,IAAAA,EAAAA,EAAIzB,EAAO6B,sBAAc,IAAAL,EAAAA,GAAI,IAAIM,MAAOC,UAAUC,WAE1E,CAAC,MAAOZ,GAEP,OADAC,QAAQD,MAAM,iCAAkCA,GACzC,IACR,CACH,EAGaa,EAAoB,SAAIjC,GAA+D,IAAAkC,EAElG,GAAsB,oBAAXjC,OAAwB,OAA4BiC,QAA5BA,EAAOlC,EAAO6B,sBAAcK,IAAAA,EAAAA,GAAI,IAAIJ,MAAOC,UAAUC,WACxF,IAAI,IAAAG,EAAAC,EAEF,OAAoCD,QAApCA,EAAW,QAAXC,EADUnB,EAAWU,KAA2B,MACvCtB,UAAE,IAAA+B,EAAAA,EAAIpC,EAAO6B,sBAAcM,IAAAA,EAAAA,GAAI,IAAIL,MAAOC,UAAUC,UAC9D,CAAC,MAAOZ,GAAO,IAAAiB,EAEd,OADAhB,QAAQD,MAAM,mCAAoCA,GACtBiB,QAA5BA,EAAOrC,EAAO6B,0BAAcQ,EAAAA,GAAI,IAAIP,MAAOC,UAAUC,UACtD,CACH,EAEaM,EAAoB,SAAItC,GAEnC,GAAsB,oBAAXC,OACX,IAAI,IAAAsC,EACIpC,EAAqC,CACzCqC,KAAMxC,EAAOyC,WAAazC,EAAO0C,iBAAiCH,QAAlBA,EAAGvC,EAAOyC,oBAAQF,EAAAA,EAAS,IAIzEpC,EAAaqC,KACfvB,EAAWC,aAAmCf,GAG9Cc,EAAWE,eAAqC,OAEnD,CAAC,MAAOC,GACPC,QAAQD,MAAM,kCAAmCA,EAClD,CACH,EAEauB,EAAqB,SAAI3C,GAEpC,GAAsB,oBAAXC,OAAwB,OAAOD,EAAO0C,gBACjD,IACE,IAAME,EAAI3B,EAAWU,KAA2B,QAChD,OAAOiB,EAAEJ,KAAQI,EAAEJ,KAAqBxC,EAAO0C,eAChD,CAAC,MAAOtB,GAEP,OADAC,QAAQD,MAAM,oCAAqCA,GAC5CpB,EAAO0C,eACf,CACH,EAEaG,EAA4B,SAAIC,GAC3C,IAAMrC,EAAGsC,EAAA,GAASD,GAAe,CAAA,GAEjC,OADMrC,EAAIuC,gBAAgBvC,EAAIuC,QACvB/B,EAAWF,UAAgC,CAAEX,OAAQU,KAAKC,UAAUN,IAC7E"}
1
+ {"version":3,"file":"query-param-url.js","sources":["../../../src/data-view/query-param-url.ts"],"sourcesContent":["import { IFilterState } from './types'\r\nimport { createFilterStore } from './filter-store'\r\nimport { QueryParam, tryParseObject } from '../utils'\r\nimport { EViewMode } from './view-mode.types'\r\n\r\nexport interface IViewDataQueryParams {\r\n filter?: string\r\n sk?: string\r\n mode?: string\r\n}\r\n\r\nexport interface IViewDataHandlerDef<T> {\r\n filter?: IFilterState<T>\r\n seedKey?: string\r\n defaultFilter?: IFilterState<T>\r\n defaultSeedKey?: string\r\n defaultValue?: string\r\n viewMode?: EViewMode\r\n defaultViewMode?: EViewMode\r\n}\r\n\r\nexport type IViewDataHandlerParams<T, K extends keyof IViewDataHandlerDef<T> = keyof IViewDataHandlerDef<T>> = Pick<IViewDataHandlerDef<T>, K>\r\n\r\nexport const syncQueryToURL = <T>(params: IViewDataHandlerParams<T, 'filter' | 'seedKey' | 'defaultFilter'>) => {\r\n // If window is undefined (e.g., during SSR), do nothing\r\n if (typeof window === 'undefined') return\r\n try {\r\n const updateParams: IViewDataQueryParams = { filter: '', sk: '' }\r\n\r\n // Handle filter\r\n if (!!params.filter && Object.keys(params.filter).length > 0) {\r\n const store = createFilterStore(params.filter, params.defaultFilter)\r\n const obj = store.extractFilter()\r\n const filterString = Object.keys(obj).length > 0 ? JSON.stringify(obj) : ''\r\n updateParams.filter = filterString\r\n }\r\n\r\n // Handle seedKey\r\n updateParams.sk = params.seedKey ?? ''\r\n\r\n // Update URL with both params at once\r\n if (updateParams.filter || updateParams.sk) {\r\n QueryParam.replacePatch<IViewDataQueryParams>(updateParams)\r\n } else {\r\n // If no params to update, remove existing filter and seedKey from URL\r\n QueryParam.replaceDeletes<IViewDataQueryParams>('filter', 'sk')\r\n }\r\n } catch (error) {\r\n console.error('Error syncing filter and seedKey to URL:', error)\r\n }\r\n}\r\n\r\nexport const getQueryFromURL = <T>(params: IViewDataHandlerParams<T, 'defaultFilter' | 'defaultSeedKey'>) => {\r\n // If window is undefined (e.g., during SSR), return null\r\n if (typeof window === 'undefined') return null\r\n\r\n // Attempt to parse filter and seedKey from URL\r\n try {\r\n const urlParams = QueryParam.gets<IViewDataQueryParams>('filter', 'sk')\r\n const filter = tryParseObject<IFilterState<T>>(urlParams.filter, params.defaultFilter ?? {})\r\n return {\r\n filter,\r\n seedKey: urlParams.sk ?? params.defaultSeedKey ?? new Date().getTime().toString()\r\n }\r\n } catch (error) {\r\n console.error('Error getting filter from URL:', error)\r\n return null\r\n }\r\n}\r\n\r\n// Methods for managing seedKey in URL\r\nexport const getSeedKeyFromURL = <T>(params: IViewDataHandlerParams<T, 'defaultSeedKey'>): string => {\r\n // If window is undefined (e.g., during SSR), return defaultSeedKey or current timestamp\r\n if (typeof window === 'undefined') return params.defaultSeedKey ?? new Date().getTime().toString()\r\n try {\r\n const q = QueryParam.gets<IViewDataQueryParams>('sk')\r\n return q.sk ?? params.defaultSeedKey ?? new Date().getTime().toString()\r\n } catch (error) {\r\n console.error('Error getting seed key from URL:', error)\r\n return params.defaultSeedKey ?? new Date().getTime().toString()\r\n }\r\n}\r\n\r\nexport const syncViewModeToURL = <T>(params: IViewDataHandlerParams<T, 'viewMode' | 'defaultViewMode'>) => {\r\n // If window is undefined (e.g., during SSR), do nothing\r\n if (typeof window === 'undefined') return\r\n try {\r\n const updateParams: IViewDataQueryParams = {\r\n mode: params.viewMode !== params.defaultViewMode ? params.viewMode ?? '' : ''\r\n }\r\n\r\n // Update URL with view mode\r\n if (updateParams.mode) {\r\n QueryParam.replacePatch<IViewDataQueryParams>(updateParams)\r\n } else {\r\n // If no view mode to update, remove existing mode from URL\r\n QueryParam.replaceDeletes<IViewDataQueryParams>('mode')\r\n }\r\n } catch (error) {\r\n console.error('Error syncing view mode to URL:', error)\r\n }\r\n}\r\n\r\nexport const getViewModeFromURL = <T>(params: IViewDataHandlerParams<T, 'defaultViewMode'>): EViewMode | undefined => {\r\n // If window is undefined (e.g., during SSR), return defaultViewMode\r\n if (typeof window === 'undefined') return params.defaultViewMode\r\n try {\r\n const q = QueryParam.gets<IViewDataQueryParams>('mode')\r\n return q.mode ? (q.mode as EViewMode) : params.defaultViewMode\r\n } catch (error) {\r\n console.error('Error getting view mode from URL:', error)\r\n return params.defaultViewMode\r\n }\r\n}\r\n\r\nexport const convertFilterToQueryParam = <T>(filterState?: IFilterState<T>) => {\r\n const obj = { ...(filterState || {}) }\r\n if (!!obj.details) delete obj.details\r\n return QueryParam.stringify<IViewDataQueryParams>({ filter: JSON.stringify(obj) })\r\n}\r\n"],"names":["syncQueryToURL","params","window","_params$seedKey","updateParams","filter","sk","Object","keys","length","obj","createFilterStore","defaultFilter","extractFilter","filterString","JSON","stringify","seedKey","QueryParam","replacePatch","replaceDeletes","error","console","getQueryFromURL","_params$defaultFilter","_ref","_urlParams$sk","urlParams","gets","tryParseObject","defaultSeedKey","Date","getTime","toString","getSeedKeyFromURL","_params$defaultSeedKe","_ref2","_q$sk","_params$defaultSeedKe2","syncViewModeToURL","_params$viewMode","mode","viewMode","defaultViewMode","getViewModeFromURL","q","convertFilterToQueryParam","filterState","_objectSpread","details"],"mappings":"gPAuBaA,EAAiB,SAAIC,GAEhC,GAAsB,oBAAXC,OACX,IAAI,IAAAC,EACIC,EAAqC,CAAEC,OAAQ,GAAIC,GAAI,IAG7D,GAAML,EAAOI,QAAUE,OAAOC,KAAKP,EAAOI,QAAQI,OAAS,EAAG,CAC5D,IACMC,EADQC,EAAkBV,EAAOI,OAAQJ,EAAOW,eACpCC,gBACZC,EAAeP,OAAOC,KAAKE,GAAKD,OAAS,EAAIM,KAAKC,UAAUN,GAAO,GACzEN,EAAaC,OAASS,CACvB,CAGDV,EAAaE,GAAmBH,QAAjBA,EAAGF,EAAOgB,eAAOd,IAAAA,EAAAA,EAAI,GAGhCC,EAAaC,QAAUD,EAAaE,GACtCY,EAAWC,aAAmCf,GAG9Cc,EAAWE,eAAqC,SAAU,KAE7D,CAAC,MAAOC,GACPC,QAAQD,MAAM,2CAA4CA,EAC3D,CACH,EAEaE,EAAkB,SAAItB,GAEjC,GAAsB,oBAAXC,OAAwB,OAAO,KAG1C,IAAI,IAAAsB,EAAAC,EAAAC,EACIC,EAAYT,EAAWU,KAA2B,SAAU,MAElE,MAAO,CACLvB,OAFawB,EAAgCF,EAAUtB,eAAMmB,EAAEvB,EAAOW,qBAAa,IAAAY,EAAAA,EAAI,CAAA,GAGvFP,QAA8C,QAAvCQ,EAAcC,QAAdA,EAAEC,EAAUrB,UAAEoB,IAAAA,EAAAA,EAAIzB,EAAO6B,sBAAc,IAAAL,EAAAA,GAAI,IAAIM,MAAOC,UAAUC,WAE1E,CAAC,MAAOZ,GAEP,OADAC,QAAQD,MAAM,iCAAkCA,GACzC,IACR,CACH,EAGaa,EAAoB,SAAIjC,GAA+D,IAAAkC,EAElG,GAAsB,oBAAXjC,OAAwB,OAA4BiC,QAA5BA,EAAOlC,EAAO6B,sBAAcK,IAAAA,EAAAA,GAAI,IAAIJ,MAAOC,UAAUC,WACxF,IAAI,IAAAG,EAAAC,EAEF,OAAoCD,QAApCA,EAAW,QAAXC,EADUnB,EAAWU,KAA2B,MACvCtB,UAAE,IAAA+B,EAAAA,EAAIpC,EAAO6B,sBAAcM,IAAAA,EAAAA,GAAI,IAAIL,MAAOC,UAAUC,UAC9D,CAAC,MAAOZ,GAAO,IAAAiB,EAEd,OADAhB,QAAQD,MAAM,mCAAoCA,GACtBiB,QAA5BA,EAAOrC,EAAO6B,0BAAcQ,EAAAA,GAAI,IAAIP,MAAOC,UAAUC,UACtD,CACH,EAEaM,EAAoB,SAAItC,GAEnC,GAAsB,oBAAXC,OACX,IAAI,IAAAsC,EACIpC,EAAqC,CACzCqC,KAAMxC,EAAOyC,WAAazC,EAAO0C,iBAAiCH,QAAlBA,EAAGvC,EAAOyC,oBAAQF,EAAAA,EAAS,IAIzEpC,EAAaqC,KACfvB,EAAWC,aAAmCf,GAG9Cc,EAAWE,eAAqC,OAEnD,CAAC,MAAOC,GACPC,QAAQD,MAAM,kCAAmCA,EAClD,CACH,EAEauB,EAAqB,SAAI3C,GAEpC,GAAsB,oBAAXC,OAAwB,OAAOD,EAAO0C,gBACjD,IACE,IAAME,EAAI3B,EAAWU,KAA2B,QAChD,OAAOiB,EAAEJ,KAAQI,EAAEJ,KAAqBxC,EAAO0C,eAChD,CAAC,MAAOtB,GAEP,OADAC,QAAQD,MAAM,oCAAqCA,GAC5CpB,EAAO0C,eACf,CACH,EAEaG,EAA4B,SAAIC,GAC3C,IAAMrC,EAAGsC,EAAA,GAASD,GAAe,CAAA,GAEjC,OADMrC,EAAIuC,gBAAgBvC,EAAIuC,QACvB/B,EAAWF,UAAgC,CAAEX,OAAQU,KAAKC,UAAUN,IAC7E"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as e,inherits as t,createClass as r,objectSpread2 as a,classCallCheck as i,callSuper as s}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,jsxs as o}from"react/jsx-runtime";import{Component as l}from"react";import{LocalizationProvider as u}from"@mui/x-date-pickers";import{AdapterDayjs as c}from"@mui/x-date-pickers/AdapterDayjs";import{styled as d,Box as p,colors as h,TextField as f,Typography as m,Switch as g}from"@mui/material";import{getErrorMessage as C}from"./helpers.js";import{mergeObjects as v,tryParseIntRequired as y}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import D from"dayjs";var b="DateExpired-root",x="DateExpired-control",k="DateExpired-label",w="DateExpired-expired",O="DateExpired-labelSwitch",j="DateExpired-input",E="DateExpired-switch";function M(d){var p=function(){function p(t){var r,a;return i(this,p),a=s(this,p,[t]),e(a,"defaultNumberOfDays",30),e(a,"mapTextFieldProps",function(){var e=a.props,t=e.messageErrors,r=e.name,i=e.onBlur,s=a.props.disabled||!a.state.switchChecked,l={fullWidth:!0,className:j,label:o("span",{className:k,children:["Expiry date",a.state.switchChecked&&n("b",{children:a.getOffsetDate(a.state.numberOfDays)})]}),variant:"outlined",type:"number",disabled:s,value:a.state.switchChecked?a.state.numberOfDays:0,onChange:a.handleChange};if(r){l.onBlur=function(){return i&&i(r)};var u,c=C(t,r);if(c.error)l.error=Boolean(c.error),l.helperText=null!==(u=c.message)&&void 0!==u?u:""}return v({},l,a.mergeConfig.textFieldProps)}),e(a,"handleChange",function(e){var t=""!=e.target.value?parseInt(e.target.value):0;a.setState({numberOfDays:t},function(){var e=C(a.props.messageErrors,a.props.name);t>0&&e.error&&a.mergeConfig.handleBlur()})}),e(a,"getRootClasses",function(){var e=[b];return a.state.numberOfDays<1&&e.push(w),e.join(" ")}),e(a,"getNumberOfDays",function(){return"number"===a.mergeConfig.type?y(a.mergeConfig.defaulValue,a.defaultNumberOfDays):a.getDaysUntilDate(a.mergeConfig.defaulValue,a.defaultNumberOfDays)}),e(a,"getOffsetDate",function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MMMM D, YYYY";return D().add(e,"day").format(t)}),e(a,"getDaysUntilDate",function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;try{if(!e)return t;var r=D(e),a=D(),i=r.diff(a,"day",!0);return Math.round(i)}catch(e){return t}}),a.mergeConfigCached=null!==(r=a.updateMergeConfig(t.slots))&&void 0!==r?r:{},a.state={numberOfDays:a.getNumberOfDays(),switchChecked:a.mergeConfig.switchChecked},a.id=(new Date).getTime().toString(),a}return t(p,l),r(p,[{key:"mergeConfig",get:function(){return this.mergeConfigCached}},{key:"defaultValueInput",get:function(){return"number"===this.mergeConfig.type?this.state.numberOfDays:this.getOffsetDate(this.state.numberOfDays,"YYYY-MM-DDTHH:mm:ss.sssZ")}},{key:"componentDidUpdate",value:function(e){e.slots===this.props.slots&&e.data===this.props.data||(this.mergeConfigCached=this.updateMergeConfig(this.props.slots))}},{key:"render",value:function(){var e,t=this;return n(u,{dateAdapter:c,children:o(N,{className:this.getRootClasses(),children:[n("input",{type:"text",hidden:!0,name:null===(e=this.props.name)||void 0===e?void 0:e.toString(),defaultValue:this.defaultValueInput},this.defaultValueInput),n(f,a({},this.mapTextFieldProps())),o("div",{className:x,children:[n(m,a(a({variant:"caption",className:O},{component:"label",htmlFor:this.id}),{},{sx:{color:this.state.switchChecked?"success.main":"#767676"},children:this.state.switchChecked?"Use Expiration Date":"No Expiration"})),n(g,a({id:this.id,size:"small",color:"success",checked:this.state.switchChecked,onChange:function(e,r){return t.setState({switchChecked:r})}},this.mergeConfig.switchProps))]})]})})}},{key:"updateMergeConfig",value:function(e){var t,r=null!=e?e:{},i=r.switchChecked,s=r.switchCheckedGetter,n=v(d,e),o=this.props,l=o.data,u=o.name,c=o.onBlur,p=o.defaultValue,h=null!=p?p:l&&u?null===(t=l[u])||void 0===t?void 0:t.toString():void 0,f=!!l&&(!!h||!!i);return s&&(f=s(h,l)),a(a({},n),{},{switchChecked:f,defaulValue:h,handleBlur:function(){u&&c&&c(u)}})}}])}();return p}var N=d(p)(e(e(e(e(e(e({display:"flex",alignItems:"center",gap:"10px",position:"relative"},".".concat(E),{margin:0,flex:"0 0 auto"}),".".concat(k),{b:{color:h.blue[600],marginLeft:"8px"}}),".".concat(O),{fontWeight:600,cursor:"pointer"}),".".concat(x),{position:"absolute",top:0,right:0,height:"100%",display:"flex",alignItems:"center"}),".".concat(j),{".MuiInputBase-input":{paddingRight:"160px"}}),"&.".concat(w),e({},".".concat(k),{b:{color:h.red[600]}})));export{M as default};
1
+ import{defineProperty as e,inherits as t,createClass as r,objectSpread2 as a,classCallCheck as i,callSuper as s}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,jsxs as o}from"react/jsx-runtime";import{Component as l}from"react";import{LocalizationProvider as u}from"@mui/x-date-pickers";import{AdapterDayjs as c}from"@mui/x-date-pickers/AdapterDayjs";import{styled as d,Box as p,colors as h,TextField as f,Typography as m,Switch as g}from"@mui/material";import{getErrorMessage as C}from"./helpers.js";import{mergeObjects as v,tryParseIntRequired as y}from"../utils/helpers.js";import"../utils/dayjs-config.js";import D from"dayjs";var b="DateExpired-root",x="DateExpired-control",k="DateExpired-label",w="DateExpired-expired",O="DateExpired-labelSwitch",E="DateExpired-input",j="DateExpired-switch";function M(d){var p=function(){function p(t){var r,a;return i(this,p),a=s(this,p,[t]),e(a,"defaultNumberOfDays",30),e(a,"mapTextFieldProps",function(){var e=a.props,t=e.messageErrors,r=e.name,i=e.onBlur,s=a.props.disabled||!a.state.switchChecked,l={fullWidth:!0,className:E,label:o("span",{className:k,children:["Expiry date",a.state.switchChecked&&n("b",{children:a.getOffsetDate(a.state.numberOfDays)})]}),variant:"outlined",type:"number",disabled:s,value:a.state.switchChecked?a.state.numberOfDays:0,onChange:a.handleChange};if(r){l.onBlur=function(){return i&&i(r)};var u,c=C(t,r);if(c.error)l.error=Boolean(c.error),l.helperText=null!==(u=c.message)&&void 0!==u?u:""}return v({},l,a.mergeConfig.textFieldProps)}),e(a,"handleChange",function(e){var t=""!=e.target.value?parseInt(e.target.value):0;a.setState({numberOfDays:t},function(){var e=C(a.props.messageErrors,a.props.name);t>0&&e.error&&a.mergeConfig.handleBlur()})}),e(a,"getRootClasses",function(){var e=[b];return a.state.numberOfDays<1&&e.push(w),e.join(" ")}),e(a,"getNumberOfDays",function(){return"number"===a.mergeConfig.type?y(a.mergeConfig.defaulValue,a.defaultNumberOfDays):a.getDaysUntilDate(a.mergeConfig.defaulValue,a.defaultNumberOfDays)}),e(a,"getOffsetDate",function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MMMM D, YYYY";return D().add(e,"day").format(t)}),e(a,"getDaysUntilDate",function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;try{if(!e)return t;var r=D(e),a=D(),i=r.diff(a,"day",!0);return Math.round(i)}catch(e){return t}}),a.mergeConfigCached=null!==(r=a.updateMergeConfig(t.slots))&&void 0!==r?r:{},a.state={numberOfDays:a.getNumberOfDays(),switchChecked:a.mergeConfig.switchChecked},a.id=(new Date).getTime().toString(),a}return t(p,l),r(p,[{key:"mergeConfig",get:function(){return this.mergeConfigCached}},{key:"defaultValueInput",get:function(){return"number"===this.mergeConfig.type?this.state.numberOfDays:this.getOffsetDate(this.state.numberOfDays,"YYYY-MM-DDTHH:mm:ss.sssZ")}},{key:"componentDidUpdate",value:function(e){e.slots===this.props.slots&&e.data===this.props.data||(this.mergeConfigCached=this.updateMergeConfig(this.props.slots))}},{key:"render",value:function(){var e,t=this;return n(u,{dateAdapter:c,children:o(N,{className:this.getRootClasses(),children:[n("input",{type:"text",hidden:!0,name:null===(e=this.props.name)||void 0===e?void 0:e.toString(),defaultValue:this.defaultValueInput},this.defaultValueInput),n(f,a({},this.mapTextFieldProps())),o("div",{className:x,children:[n(m,a(a({variant:"caption",className:O},{component:"label",htmlFor:this.id}),{},{sx:{color:this.state.switchChecked?"success.main":"#767676"},children:this.state.switchChecked?"Use Expiration Date":"No Expiration"})),n(g,a({id:this.id,size:"small",color:"success",checked:this.state.switchChecked,onChange:function(e,r){return t.setState({switchChecked:r})}},this.mergeConfig.switchProps))]})]})})}},{key:"updateMergeConfig",value:function(e){var t,r=null!=e?e:{},i=r.switchChecked,s=r.switchCheckedGetter,n=v(d,e),o=this.props,l=o.data,u=o.name,c=o.onBlur,p=o.defaultValue,h=null!=p?p:l&&u?null===(t=l[u])||void 0===t?void 0:t.toString():void 0,f=!!l&&(!!h||!!i);return s&&(f=s(h,l)),a(a({},n),{},{switchChecked:f,defaulValue:h,handleBlur:function(){u&&c&&c(u)}})}}])}();return p}var N=d(p)(e(e(e(e(e(e({display:"flex",alignItems:"center",gap:"10px",position:"relative"},".".concat(j),{margin:0,flex:"0 0 auto"}),".".concat(k),{b:{color:h.blue[600],marginLeft:"8px"}}),".".concat(O),{fontWeight:600,cursor:"pointer"}),".".concat(x),{position:"absolute",top:0,right:0,height:"100%",display:"flex",alignItems:"center"}),".".concat(E),{".MuiInputBase-input":{paddingRight:"160px"}}),"&.".concat(w),e({},".".concat(k),{b:{color:h.red[600]}})));export{M as default};
2
2
  //# sourceMappingURL=create.date-expired.js.map