dinocollab-core 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-context/global-modal.js +1 -1
- package/dist/api-context/global-modal.js.map +1 -1
- package/dist/api-context/popover-global.js +1 -1
- package/dist/api-context/popover-global.js.map +1 -1
- package/dist/api-context/popover.js +1 -1
- package/dist/api-context/popover.js.map +1 -1
- package/dist/components/buttons.js +2 -0
- package/dist/components/buttons.js.map +1 -0
- package/dist/components/create.multi-select-dropdown.js +1 -1
- package/dist/components/create.multi-select-dropdown.js.map +1 -1
- package/dist/filter-bar/create.filter-bar.js.map +1 -1
- package/dist/filter-bar/ui.units.js.map +1 -1
- package/dist/form/create.date-expired.js +1 -1
- package/dist/form/create.date-expired.js.map +1 -1
- package/dist/form/create.date-picker.js +1 -1
- package/dist/form/create.date-picker.js.map +1 -1
- package/dist/form/create.form-comfirm.js +1 -1
- package/dist/form/create.form-comfirm.js.map +1 -1
- package/dist/form/create.form-grid-layout.js +1 -1
- package/dist/form/create.form-grid-layout.js.map +1 -1
- package/dist/form/create.input.js +1 -1
- package/dist/form/create.input.js.map +1 -1
- package/dist/form/create.select-simple.js +1 -1
- package/dist/form/create.select-simple.js.map +1 -1
- package/dist/form/create.text-editor.js +1 -1
- package/dist/form/create.text-editor.js.map +1 -1
- package/dist/form/modal-wrapper.js +1 -1
- package/dist/form/modal-wrapper.js.map +1 -1
- package/dist/form/validator.js +1 -1
- package/dist/form/validator.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/table/create.action-row.js +1 -1
- package/dist/table/create.action-row.js.map +1 -1
- package/dist/table/create.table.js +1 -1
- package/dist/table/create.table.js.map +1 -1
- package/dist/table/dino.js +1 -1
- package/dist/table/dino.js.map +1 -1
- package/dist/table/helpers.js +1 -1
- package/dist/table/helpers.js.map +1 -1
- package/dist/table/toolbar-pannel.js +1 -1
- package/dist/table/toolbar-pannel.js.map +1 -1
- package/dist/table/ui.buttons.js +1 -1
- package/dist/table/ui.buttons.js.map +1 -1
- package/dist/table/ui.units.js +1 -1
- package/dist/table/ui.units.js.map +1 -1
- package/dist/table-grid/create.table-grid.js +1 -1
- package/dist/table-grid/create.table-grid.js.map +1 -1
- package/dist/table-grid/item-actions.js +1 -1
- package/dist/table-grid/item-actions.js.map +1 -1
- package/dist/table-grid/toolbar-pannel.js +1 -1
- package/dist/table-grid/toolbar-pannel.js.map +1 -1
- package/dist/types/api-context/global-modal.d.ts +1 -1
- package/dist/types/api-context/popover-global.d.ts +1 -1
- package/dist/types/api-context/popover.d.ts +1 -1
- package/dist/types/components/index.d.ts +1 -0
- package/dist/types/filter-bar/create.filter-bar.d.ts +19 -19
- package/dist/types/filter-bar/index.d.ts +1 -2
- package/dist/types/filter-bar/ui.units.d.ts +4 -5
- package/dist/types/index.d.ts +1 -0
- package/dist/types/lab/select-mul-with-api/ui.units.d.ts +1 -1
- package/dist/types/utils/index.d.ts +2 -1
- package/dist/utils/mfe-events.js +2 -0
- package/dist/utils/mfe-events.js.map +1 -0
- package/package.json +1 -1
- package/dist/filter-bar/demo.js +0 -2
- package/dist/filter-bar/demo.js.map +0 -1
- /package/dist/types/components/{loading-buttons.d.ts → buttons.d.ts} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as t,createClass as e,classCallCheck as n,callSuper as r,defineProperty as o,objectSpread2 as s}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,jsxs as i,Fragment as l}from"react/jsx-runtime";import c,{Component as u}from"react";import{styled as d,Box as f,Modal as p,Backdrop as h}from"@mui/material";var m=c.createContext({close:function(){console.warn("GlobalModal provider not found!")},show:function(){console.warn("GlobalModal provider not found!")}}),C=function(t){return a(m.Consumer,{children:t})},b=function(){function s(t){var e;return n(this,s),e=r(this,s,[t]),o(e,"show",(function(t){e.setState(t)})),o(e,"close",(function(t,n){"backdropClick"===n&&!1===e.state.backdropActivated||e.setState({renderContent:void 0})})),o(e,"renderContent",(function(){return e.state.renderContent?e.state.renderContent():a(l,{})})),e.state={},e}return t(s,u),e(s,[{key:"render",value:function(){return i(m.Provider,{value:this,children:[this.props.children,a(p,{open:!!this.state.renderContent,onClose:this.close,slots:{backdrop:h},slotProps:{backdrop:{timeout:300}},sx:this.state.sx,children:a(v,{sx:this.state.sxWrap,children:this.renderContent()})})]})}}])}(),v=d(f)({position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",outline:"none"}),x=function(t){return function(e){return a(b,{children:C((function(n){return a(t,s(s({},e),{},{contextGlobalModal:n}))}))})}},k=function(t){return function(e){return C((function(n){return a(t,s(s({},e),{},{contextGlobalModal:n}))}))}};export{m as GlobalModalContext,
|
|
1
|
+
import{inherits as t,createClass as e,classCallCheck as n,callSuper as r,defineProperty as o,objectSpread2 as s}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,jsxs as i,Fragment as l}from"react/jsx-runtime";import c,{Component as u}from"react";import{styled as d,Box as f,Modal as p,Backdrop as h}from"@mui/material";var m=c.createContext({close:function(){console.warn("GlobalModal provider not found!")},show:function(){console.warn("GlobalModal provider not found!")}}),C=function(t){return a(m.Consumer,{children:t})},b=function(){function s(t){var e;return n(this,s),e=r(this,s,[t]),o(e,"show",(function(t){e.setState(t)})),o(e,"close",(function(t,n){"backdropClick"===n&&!1===e.state.backdropActivated||e.setState({renderContent:void 0})})),o(e,"renderContent",(function(){return e.state.renderContent?e.state.renderContent():a(l,{})})),e.state={},e}return t(s,u),e(s,[{key:"render",value:function(){return i(m.Provider,{value:this,children:[this.props.children,a(p,{open:!!this.state.renderContent,onClose:this.close,slots:{backdrop:h},slotProps:{backdrop:{timeout:300}},sx:this.state.sx,children:a(v,{sx:this.state.sxWrap,children:this.renderContent()})})]})}}])}(),v=d(f)({position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",outline:"none"}),x=function(t){return function(e){return a(b,{children:C((function(n){return a(t,s(s({},e),{},{contextGlobalModal:n}))}))})}},k=function(t){return function(e){return C((function(n){return a(t,s(s({},e),{},{contextGlobalModal:n}))}))}};export{m as GlobalModalContext,b as default,C as mapGlobalModalContext,k as withApiGlobalModalConsumerContext,x as withApiGlobalModalContext};
|
|
2
2
|
//# sourceMappingURL=global-modal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-modal.js","sources":["../../src/api-context/global-modal.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { Backdrop, Box, Modal, SxProps, styled } from '@mui/material'\r\n\r\nexport interface GlobalModalState {\r\n sx?: SxProps\r\n sxWrap?: SxProps\r\n /** @default true */\r\n backdropActivated?: boolean\r\n onClose?: (reason?: TModalReason) => void\r\n renderContent?: () => React.ReactNode\r\n}\r\n\r\nexport type TModalReason = 'backdropClick' | 'escapeKeyDown'\r\n\r\ninterface GlobalModalProps {}\r\n\r\nexport type TShowModal = (value: GlobalModalState) => void\r\n\r\nexport type TCloseModal = (event?: {}, reason?: TModalReason) => void\r\n\r\nexport interface IGlobalModalContext {\r\n show: TShowModal\r\n close: TCloseModal\r\n}\r\n\r\nexport const GlobalModalContext = React.createContext<IGlobalModalContext>({\r\n close: () => {\r\n console.warn('GlobalModal provider not found!')\r\n },\r\n show: () => {\r\n console.warn('GlobalModal provider not found!')\r\n }\r\n})\r\n\r\nexport interface IMapGlobalModal {\r\n context: IGlobalModalContext\r\n}\r\n\r\nexport const
|
|
1
|
+
{"version":3,"file":"global-modal.js","sources":["../../src/api-context/global-modal.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { Backdrop, Box, Modal, SxProps, styled } from '@mui/material'\r\n\r\nexport interface GlobalModalState {\r\n sx?: SxProps\r\n sxWrap?: SxProps\r\n /** @default true */\r\n backdropActivated?: boolean\r\n onClose?: (reason?: TModalReason) => void\r\n renderContent?: () => React.ReactNode\r\n}\r\n\r\nexport type TModalReason = 'backdropClick' | 'escapeKeyDown'\r\n\r\ninterface GlobalModalProps {}\r\n\r\nexport type TShowModal = (value: GlobalModalState) => void\r\n\r\nexport type TCloseModal = (event?: {}, reason?: TModalReason) => void\r\n\r\nexport interface IGlobalModalContext {\r\n show: TShowModal\r\n close: TCloseModal\r\n}\r\n\r\nexport const GlobalModalContext = React.createContext<IGlobalModalContext>({\r\n close: () => {\r\n console.warn('GlobalModal provider not found!')\r\n },\r\n show: () => {\r\n console.warn('GlobalModal provider not found!')\r\n }\r\n})\r\n\r\nexport interface IMapGlobalModal {\r\n context: IGlobalModalContext\r\n}\r\n\r\nexport const mapGlobalModalContext = (context: (state: IGlobalModalContext) => React.ReactNode) => (\r\n <GlobalModalContext.Consumer>{context}</GlobalModalContext.Consumer>\r\n)\r\n\r\nclass GlobalModal extends Component<React.PropsWithChildren<GlobalModalProps>, GlobalModalState> implements IGlobalModalContext {\r\n constructor(props: any) {\r\n super(props)\r\n this.state = {}\r\n }\r\n\r\n show: TShowModal = (value) => {\r\n this.setState(value)\r\n }\r\n\r\n close: TCloseModal = (_, reason) => {\r\n if (reason === 'backdropClick' && this.state.backdropActivated === false) return\r\n this.setState({ renderContent: undefined })\r\n }\r\n\r\n render() {\r\n return (\r\n <GlobalModalContext.Provider value={this}>\r\n {this.props.children}\r\n <Modal\r\n open={!!this.state.renderContent}\r\n onClose={this.close}\r\n slots={{ backdrop: Backdrop }}\r\n slotProps={{ backdrop: { timeout: 300 } }}\r\n sx={this.state.sx}\r\n >\r\n <Wrapper sx={this.state.sxWrap}>{this.renderContent()}</Wrapper>\r\n </Modal>\r\n </GlobalModalContext.Provider>\r\n )\r\n }\r\n\r\n renderContent = (): React.ReactNode => {\r\n return this.state.renderContent ? this.state.renderContent() : <></>\r\n }\r\n}\r\nexport default GlobalModal\r\n\r\nconst Wrapper = styled(Box)({\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n outline: 'none'\r\n})\r\n\r\nexport interface IApiGlobalModalContextProps {\r\n contextGlobalModal: IGlobalModalContext\r\n}\r\n\r\nexport const withApiGlobalModalContext = <P extends IApiGlobalModalContextProps>(Component: React.ComponentType<P>) => {\r\n return (props: Omit<P, keyof IApiGlobalModalContextProps>) => {\r\n return (\r\n <GlobalModal>\r\n {mapGlobalModalContext((context) => (\r\n <Component {...(props as P)} contextGlobalModal={context} />\r\n ))}\r\n </GlobalModal>\r\n )\r\n }\r\n}\r\n\r\nexport const withApiGlobalModalConsumerContext = <P extends IApiGlobalModalContextProps>(Component: React.ComponentType<P>) => {\r\n return (props: Omit<P, keyof IApiGlobalModalContextProps>) => {\r\n return mapGlobalModalContext((context) => <Component {...(props as P)} contextGlobalModal={context} />)\r\n }\r\n}\r\n"],"names":["GlobalModalContext","React","createContext","close","console","warn","show","mapGlobalModalContext","context","_jsx","Consumer","GlobalModal","props","_this","_classCallCheck","_callSuper","_defineProperty","value","setState","_","reason","state","backdropActivated","renderContent","undefined","_inherits","Component","_createClass","key","_jsxs","Provider","this","children","Modal","open","onClose","slots","backdrop","Backdrop","slotProps","timeout","sx","Wrapper","sxWrap","styled","Box","position","top","left","transform","outline","withApiGlobalModalContext","_objectSpread","contextGlobalModal","withApiGlobalModalConsumerContext"],"mappings":"iVAyBaA,EAAqBC,EAAMC,cAAmC,CACzEC,MAAO,WACLC,QAAQC,KAAK,kCACd,EACDC,KAAM,WACJF,QAAQC,KAAK,kCACf,IAOWE,EAAwB,SAACC,GAAwD,OAC5FC,EAACT,EAAmBU,mBAAUF,GAAsC,EAGhEG,aACJ,SAAAA,EAAYC,GAAU,IAAAC,EAEL,OAFKC,OAAAH,GACpBE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EAIK,QAAA,SAACI,GAClBJ,EAAKK,SAASD,MACfD,EAAAH,EAAA,SAEoB,SAACM,EAAGC,GACR,kBAAXA,IAA+D,IAAjCP,EAAKQ,MAAMC,mBAC7CT,EAAKK,SAAS,CAAEK,mBAAeC,OAChCR,EAAAH,EAAA,iBAmBe,WACd,OAAOA,EAAKQ,MAAME,cAAgBV,EAAKQ,MAAME,gBAAkBd,WA9B/DI,EAAKQ,MAAQ,CAAE,EAAAR,CACjB,CAAC,OAAAY,EAAAd,EAJuBe,GAIvBC,EAAAhB,EAAA,CAAA,CAAAiB,IAAA,SAAAX,MAWD,WACE,OACEY,EAAC7B,EAAmB8B,UAASb,MAAOc,KAAIC,SAAA,CACrCD,KAAKnB,MAAMoB,SACZvB,EAACwB,EAAK,CACJC,OAAQH,KAAKV,MAAME,cACnBY,QAASJ,KAAK5B,MACdiC,MAAO,CAAEC,SAAUC,GACnBC,UAAW,CAAEF,SAAU,CAAEG,QAAS,MAClCC,GAAIV,KAAKV,MAAMoB,GAEfT,SAAAvB,EAACiC,EAAQ,CAAAD,GAAIV,KAAKV,MAAMsB,OAASX,SAAAD,KAAKR,sBAI9C,IAAC,IAQGmB,EAAUE,EAAOC,EAAPD,CAAY,CAC1BE,SAAU,WACVC,IAAK,MACLC,KAAM,MACNC,UAAW,wBACXC,QAAS,SAOEC,EAA4B,SAAwCzB,GAC/E,OAAO,SAACd,GACN,OACEH,EAACE,EACE,CAAAqB,SAAAzB,GAAsB,SAACC,GAAO,OAC7BC,EAACiB,EAAS0B,EAAAA,KAAMxC,GAAW,GAAA,CAAEyC,mBAAoB7C,IAClD,KAGN,CACH,EAEa8C,EAAoC,SAAwC5B,GACvF,OAAO,SAACd,GACN,OAAOL,GAAsB,SAACC,GAAO,OAAKC,EAACiB,EAAS0B,EAAAA,KAAMxC,GAAW,GAAA,CAAEyC,mBAAoB7C,OAC5F,CACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as o,createClass as e,objectSpread2 as t,classCallCheck as r,callSuper as n,defineProperty as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as a,jsx as l}from"react/jsx-runtime";import c,{Component as s}from"react";import{Popover as u}from"@mui/material";import{ContentDefault as p}from"./ui.units.js";var h={open:function(){console.warn("PopoverGlobal provider not found!")},close:function(){console.warn("PopoverGlobal provider not found!")}},f=c.createContext(h),v=function(o){return l(f.Consumer,{children:o})},m=function(){function c(o){var e;return r(this,c),e=n(this,c,[o]),i(e,"openPopover",(function(o){clearTimeout(e.timer),e.setState(t({},o))})),i(e,"closePopover",(function(){clearTimeout(e.timer),e.setState({anchorEl:null},(function(){e.timer=setTimeout((function(){e.setState({content:l(p,{})})}),500)}))})),e.state={anchorEl:null,content:l(p,{})},e}return o(c,s),e(c,[{key:"componentDidMount",value:function(){h.open=this.openPopover,h.close=this.closePopover}},{key:"render",value:function(){var o=this;return a(f.Provider,{value:{open:this.openPopover,close:this.closePopover},children:[this.props.children,l(u,t(t({sx:{"& .MuiPaper-root.MuiPaper-elevation":{overflow:"hidden"}},anchorEl:this.state.anchorEl,open:Boolean(this.state.anchorEl),onClose:function(e,t){return o.closePopover(t)},anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},disableScrollLock:!0},this.state.popoverProps),{},{children:this.state.content}))]})}}])}(),d=function(o){return function(e){return l(m,{children:v((function(r){return l(o,t(t({},e),{},{contextPopover:r}))}))})}},P={Provider:m,Api:h,Context:f,mapContext:v};export{
|
|
1
|
+
import{inherits as o,createClass as e,objectSpread2 as t,classCallCheck as r,callSuper as n,defineProperty as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as a,jsx as l}from"react/jsx-runtime";import c,{Component as s}from"react";import{Popover as u}from"@mui/material";import{ContentDefault as p}from"./ui.units.js";var h={open:function(){console.warn("PopoverGlobal provider not found!")},close:function(){console.warn("PopoverGlobal provider not found!")}},f=c.createContext(h),v=function(o){return l(f.Consumer,{children:o})},m=function(){function c(o){var e;return r(this,c),e=n(this,c,[o]),i(e,"openPopover",(function(o){clearTimeout(e.timer),e.setState(t({},o))})),i(e,"closePopover",(function(){clearTimeout(e.timer),e.setState({anchorEl:null},(function(){e.timer=setTimeout((function(){e.setState({content:l(p,{})})}),500)}))})),e.state={anchorEl:null,content:l(p,{})},e}return o(c,s),e(c,[{key:"componentDidMount",value:function(){h.open=this.openPopover,h.close=this.closePopover}},{key:"render",value:function(){var o=this;return a(f.Provider,{value:{open:this.openPopover,close:this.closePopover},children:[this.props.children,l(u,t(t({sx:{"& .MuiPaper-root.MuiPaper-elevation":{overflow:"hidden"}},anchorEl:this.state.anchorEl,open:Boolean(this.state.anchorEl),onClose:function(e,t){return o.closePopover(t)},anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},disableScrollLock:!0},this.state.popoverProps),{},{children:this.state.content}))]})}}])}(),d=function(o){return function(e){return l(m,{children:v((function(r){return l(o,t(t({},e),{},{contextPopover:r}))}))})}},P={Provider:m,Api:h,Context:f,mapContext:v};export{h as PopoverGlobalApi,f as PopoverGlobalContext,m as PopoverGlobalProvider,P as default,v as mapPopoverGlobalContext,d as withPopoverGlobalContext};
|
|
2
2
|
//# sourceMappingURL=popover-global.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover-global.js","sources":["../../src/api-context/popover-global.tsx"],"sourcesContent":["import React, { Component, PropsWithChildren } from 'react'\r\nimport { Popover, PopoverProps, PopoverVirtualElement } from '@mui/material'\r\nimport { ContentDefault } from './ui.units'\r\n\r\nexport interface PopoverGlobalState {\r\n anchorEl?: Element | (() => Element) | PopoverVirtualElement | (() => PopoverVirtualElement) | null\r\n popoverProps?: Omit<PopoverProps, 'open'>\r\n content: React.ReactNode\r\n}\r\n\r\nexport type OpenPopover = (value: PopoverGlobalState) => void\r\n\r\nexport type ClosePopover = (reason?: 'backdropClick' | 'escapeKeyDown') => void\r\n\r\nexport interface PopoverGlobalContext {\r\n open: OpenPopover\r\n close: ClosePopover\r\n}\r\n\r\nexport const PopoverGlobalApi: PopoverGlobalContext = {\r\n open: () => {\r\n console.warn('PopoverGlobal provider not found!')\r\n },\r\n close: () => {\r\n console.warn('PopoverGlobal provider not found!')\r\n }\r\n}\r\n\r\nexport const PopoverGlobalContext = React.createContext<PopoverGlobalContext>(PopoverGlobalApi)\r\n\r\nexport const
|
|
1
|
+
{"version":3,"file":"popover-global.js","sources":["../../src/api-context/popover-global.tsx"],"sourcesContent":["import React, { Component, PropsWithChildren } from 'react'\r\nimport { Popover, PopoverProps, PopoverVirtualElement } from '@mui/material'\r\nimport { ContentDefault } from './ui.units'\r\n\r\nexport interface PopoverGlobalState {\r\n anchorEl?: Element | (() => Element) | PopoverVirtualElement | (() => PopoverVirtualElement) | null\r\n popoverProps?: Omit<PopoverProps, 'open'>\r\n content: React.ReactNode\r\n}\r\n\r\nexport type OpenPopover = (value: PopoverGlobalState) => void\r\n\r\nexport type ClosePopover = (reason?: 'backdropClick' | 'escapeKeyDown') => void\r\n\r\nexport interface PopoverGlobalContext {\r\n open: OpenPopover\r\n close: ClosePopover\r\n}\r\n\r\nexport const PopoverGlobalApi: PopoverGlobalContext = {\r\n open: () => {\r\n console.warn('PopoverGlobal provider not found!')\r\n },\r\n close: () => {\r\n console.warn('PopoverGlobal provider not found!')\r\n }\r\n}\r\n\r\nexport const PopoverGlobalContext = React.createContext<PopoverGlobalContext>(PopoverGlobalApi)\r\n\r\nexport const mapPopoverGlobalContext = (context: (state: PopoverGlobalContext) => React.ReactNode) => (\r\n <PopoverGlobalContext.Consumer>{context}</PopoverGlobalContext.Consumer>\r\n)\r\n\r\ninterface IProps extends PropsWithChildren {}\r\n\r\nexport class PopoverGlobalProvider extends Component<IProps, PopoverGlobalState> {\r\n constructor(props: any) {\r\n super(props)\r\n this.state = { anchorEl: null, content: <ContentDefault /> }\r\n }\r\n\r\n componentDidMount() {\r\n PopoverGlobalApi.open = this.openPopover\r\n PopoverGlobalApi.close = this.closePopover\r\n }\r\n\r\n render() {\r\n return (\r\n <PopoverGlobalContext.Provider value={{ open: this.openPopover, close: this.closePopover }}>\r\n {this.props.children}\r\n <Popover\r\n sx={{ '& .MuiPaper-root.MuiPaper-elevation': { overflow: 'hidden' } }}\r\n anchorEl={this.state.anchorEl}\r\n open={Boolean(this.state.anchorEl)}\r\n onClose={(_, reason) => this.closePopover(reason)}\r\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n disableScrollLock\r\n {...this.state.popoverProps}\r\n >\r\n {this.state.content}\r\n </Popover>\r\n </PopoverGlobalContext.Provider>\r\n )\r\n }\r\n\r\n openPopover: OpenPopover = (option) => {\r\n clearTimeout(this.timer)\r\n this.setState({ ...option })\r\n }\r\n\r\n timer: any\r\n closePopover: ClosePopover = () => {\r\n clearTimeout(this.timer)\r\n this.setState({ anchorEl: null }, () => {\r\n this.timer = setTimeout(() => {\r\n this.setState({ content: <ContentDefault /> })\r\n }, 500)\r\n })\r\n }\r\n}\r\n\r\nexport interface IPopoverGlobalContextProps {\r\n contextPopover: PopoverGlobalContext\r\n}\r\n\r\nexport const withPopoverGlobalContext = <P extends IPopoverGlobalContextProps>(Component: React.ComponentType<P>) => {\r\n return (props: Omit<P, keyof IPopoverGlobalContextProps>) => {\r\n return (\r\n <PopoverGlobalProvider>\r\n {mapPopoverGlobalContext((context) => (\r\n <Component {...(props as P)} contextPopover={context} />\r\n ))}\r\n </PopoverGlobalProvider>\r\n )\r\n }\r\n}\r\n\r\nconst PopoverGlobal = {\r\n Provider: PopoverGlobalProvider,\r\n Api: PopoverGlobalApi,\r\n Context: PopoverGlobalContext,\r\n mapContext: mapPopoverGlobalContext\r\n}\r\n\r\nexport default PopoverGlobal\r\n"],"names":["PopoverGlobalApi","open","console","warn","close","PopoverGlobalContext","React","createContext","mapPopoverGlobalContext","context","_jsx","Consumer","PopoverGlobalProvider","props","_this","_classCallCheck","_callSuper","_defineProperty","option","clearTimeout","timer","setState","_objectSpread","anchorEl","setTimeout","content","ContentDefault","state","_inherits","Component","_createClass","key","value","this","openPopover","closePopover","_this2","_jsxs","Provider","children","Popover","sx","overflow","Boolean","onClose","_","reason","anchorOrigin","vertical","horizontal","transformOrigin","disableScrollLock","popoverProps","withPopoverGlobalContext","contextPopover","PopoverGlobal","Api","Context","mapContext"],"mappings":"6UAmBO,IAAMA,EAAyC,CACpDC,KAAM,WACJC,QAAQC,KAAK,oCACd,EACDC,MAAO,WACLF,QAAQC,KAAK,oCACf,GAGWE,EAAuBC,EAAMC,cAAoCP,GAEjEQ,EAA0B,SAACC,GAAyD,OAC/FC,EAACL,EAAqBM,mBAAUF,GAAwC,EAK7DG,aACX,SAAAA,EAAYC,GAAU,IAAAC,EAEwC,OAFxCC,OAAAH,GACpBE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EA6Ba,eAAA,SAACI,GAC1BC,aAAaL,EAAKM,OAClBN,EAAKO,SAAQC,EAAMJ,CAAAA,EAAAA,OACpBD,EAAAH,EAAA,gBAG4B,WAC3BK,aAAaL,EAAKM,OAClBN,EAAKO,SAAS,CAAEE,SAAU,OAAQ,WAChCT,EAAKM,MAAQI,YAAW,WACtBV,EAAKO,SAAS,CAAEI,QAASf,EAACgB,EAAc,CAAA,IACzC,GAAE,IACL,OAxCAZ,EAAKa,MAAQ,CAAEJ,SAAU,KAAME,QAASf,EAACgB,EAAc,CAAA,IAAKZ,CAC9D,CAAC,OAAAc,EAAAhB,EAJwCiB,GAIxCC,EAAAlB,EAAA,CAAA,CAAAmB,IAAA,oBAAAC,MAED,WACEhC,EAAiBC,KAAOgC,KAAKC,YAC7BlC,EAAiBI,MAAQ6B,KAAKE,YAChC,GAAC,CAAAJ,IAAA,SAAAC,MAED,WAAM,IAAAI,EAAAH,KACJ,OACEI,EAAChC,EAAqBiC,SAAS,CAAAN,MAAO,CAAE/B,KAAMgC,KAAKC,YAAa9B,MAAO6B,KAAKE,cAAcI,SAAA,CACvFN,KAAKpB,MAAM0B,SACZ7B,EAAC8B,EAAOlB,EAAAA,EAAA,CACNmB,GAAI,CAAE,sCAAuC,CAAEC,SAAU,WACzDnB,SAAUU,KAAKN,MAAMJ,SACrBtB,KAAM0C,QAAQV,KAAKN,MAAMJ,UACzBqB,QAAS,SAACC,EAAGC,GAAM,OAAKV,EAAKD,aAAaW,EAAO,EACjDC,aAAc,CAAEC,SAAU,SAAUC,WAAY,SAChDC,gBAAiB,CAAEF,SAAU,MAAOC,WAAY,SAChDE,mBAAiB,GACblB,KAAKN,MAAMyB,cAAY,CAAA,EAAA,CAAAb,SAE1BN,KAAKN,MAAMF,aAIpB,IAAC,IAsBU4B,EAA2B,SAAuCxB,GAC7E,OAAO,SAAChB,GACN,OACEH,EAACE,EACE,CAAA2B,SAAA/B,GAAwB,SAACC,GAAO,OAC/BC,EAACmB,EAASP,EAAAA,KAAMT,GAAW,GAAA,CAAEyC,eAAgB7C,IAC9C,KAGN,CACH,EAEM8C,EAAgB,CACpBjB,SAAU1B,EACV4C,IAAKxD,EACLyD,QAASpD,EACTqD,WAAYlD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as o,createClass as t,objectSpread2 as r,classCallCheck as e,callSuper as n,defineProperty as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as a,jsx as s}from"react/jsx-runtime";import c,{Component as l}from"react";import{Popover as u}from"@mui/material";import{ContentDefault as p}from"./ui.units.js";var h=c.createContext({showPopover:function(){console.warn("ApiPopover provider not found!")},closePopover:function(){console.warn("ApiPopover provider not found!")}}),f=function(o){return s(h.Consumer,{children:o})},m=function(){function c(o){var t;return e(this,c),t=n(this,c,[o]),i(t,"showPopover",(function(o){clearTimeout(t.timer),t.setState(r({},o))})),i(t,"closePopover",(function(){clearTimeout(t.timer),t.setState({anchorEl:null},(function(){t.timer=setTimeout((function(){t.setState({content:s(p,{})})}),500)}))})),t.state={anchorEl:null,content:s(p,{})},t}return o(c,l),t(c,[{key:"render",value:function(){var o=this;return a(h.Provider,{value:this,children:[this.props.children,s(u,r(r({sx:{"& .MuiPaper-root.MuiPaper-elevation":{overflow:"hidden"}},anchorEl:this.state.anchorEl,open:Boolean(this.state.anchorEl),onClose:function(t,r){return o.closePopover(r)},anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},disableScrollLock:!0},this.state.popoverProps),{},{children:this.state.content}))]})}}])}(),v=function(o){return function(t){return s(m,{children:f((function(e){return s(o,r(r({},t),{},{contextPopover:e}))}))})}};export{h as ApiPopoverContext,
|
|
1
|
+
import{inherits as o,createClass as t,objectSpread2 as r,classCallCheck as e,callSuper as n,defineProperty as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as a,jsx as s}from"react/jsx-runtime";import c,{Component as l}from"react";import{Popover as u}from"@mui/material";import{ContentDefault as p}from"./ui.units.js";var h=c.createContext({showPopover:function(){console.warn("ApiPopover provider not found!")},closePopover:function(){console.warn("ApiPopover provider not found!")}}),f=function(o){return s(h.Consumer,{children:o})},m=function(){function c(o){var t;return e(this,c),t=n(this,c,[o]),i(t,"showPopover",(function(o){clearTimeout(t.timer),t.setState(r({},o))})),i(t,"closePopover",(function(){clearTimeout(t.timer),t.setState({anchorEl:null},(function(){t.timer=setTimeout((function(){t.setState({content:s(p,{})})}),500)}))})),t.state={anchorEl:null,content:s(p,{})},t}return o(c,l),t(c,[{key:"render",value:function(){var o=this;return a(h.Provider,{value:this,children:[this.props.children,s(u,r(r({sx:{"& .MuiPaper-root.MuiPaper-elevation":{overflow:"hidden"}},anchorEl:this.state.anchorEl,open:Boolean(this.state.anchorEl),onClose:function(t,r){return o.closePopover(r)},anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},disableScrollLock:!0},this.state.popoverProps),{},{children:this.state.content}))]})}}])}(),v=function(o){return function(t){return s(m,{children:f((function(e){return s(o,r(r({},t),{},{contextPopover:e}))}))})}};export{h as ApiPopoverContext,m as default,f as mapApiPopoverContext,v as withApiPopoverContext};
|
|
2
2
|
//# sourceMappingURL=popover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.js","sources":["../../src/api-context/popover.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { Popover, PopoverProps, PopoverVirtualElement } from '@mui/material'\r\nimport { ContentDefault } from './ui.units'\r\n\r\nexport interface IPopoverOptions {\r\n anchorEl?: Element | (() => Element) | PopoverVirtualElement | (() => PopoverVirtualElement) | null\r\n popoverProps?: Omit<PopoverProps, 'open'>\r\n content: React.ReactNode\r\n}\r\n\r\nexport type TShowPopover = (option: IPopoverOptions) => void\r\n\r\nexport type TClosePopover = (reason?: 'backdropClick' | 'escapeKeyDown') => void\r\n\r\nexport interface IApiPopoverContext {\r\n showPopover: TShowPopover\r\n closePopover: TClosePopover\r\n}\r\n\r\nexport const ApiPopoverContext = React.createContext<IApiPopoverContext>({\r\n showPopover: () => {\r\n console.warn('ApiPopover provider not found!')\r\n },\r\n closePopover: () => {\r\n console.warn('ApiPopover provider not found!')\r\n }\r\n})\r\n\r\nexport const
|
|
1
|
+
{"version":3,"file":"popover.js","sources":["../../src/api-context/popover.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { Popover, PopoverProps, PopoverVirtualElement } from '@mui/material'\r\nimport { ContentDefault } from './ui.units'\r\n\r\nexport interface IPopoverOptions {\r\n anchorEl?: Element | (() => Element) | PopoverVirtualElement | (() => PopoverVirtualElement) | null\r\n popoverProps?: Omit<PopoverProps, 'open'>\r\n content: React.ReactNode\r\n}\r\n\r\nexport type TShowPopover = (option: IPopoverOptions) => void\r\n\r\nexport type TClosePopover = (reason?: 'backdropClick' | 'escapeKeyDown') => void\r\n\r\nexport interface IApiPopoverContext {\r\n showPopover: TShowPopover\r\n closePopover: TClosePopover\r\n}\r\n\r\nexport const ApiPopoverContext = React.createContext<IApiPopoverContext>({\r\n showPopover: () => {\r\n console.warn('ApiPopover provider not found!')\r\n },\r\n closePopover: () => {\r\n console.warn('ApiPopover provider not found!')\r\n }\r\n})\r\n\r\nexport const mapApiPopoverContext = (context: (state: IApiPopoverContext) => React.ReactNode) => (\r\n <ApiPopoverContext.Consumer>{context}</ApiPopoverContext.Consumer>\r\n)\r\n\r\ninterface IProps {}\r\ninterface IState extends IPopoverOptions {}\r\ntype TProps = React.PropsWithChildren<IProps>\r\nclass ApiPopover extends Component<TProps, IState> implements IApiPopoverContext {\r\n constructor(props: any) {\r\n super(props)\r\n this.state = { anchorEl: null, content: <ContentDefault /> }\r\n }\r\n render() {\r\n return (\r\n <ApiPopoverContext.Provider value={this}>\r\n {this.props.children}\r\n <Popover\r\n sx={{ '& .MuiPaper-root.MuiPaper-elevation': { overflow: 'hidden' } }}\r\n anchorEl={this.state.anchorEl}\r\n open={Boolean(this.state.anchorEl)}\r\n onClose={(_, reason) => this.closePopover(reason)}\r\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\r\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\r\n disableScrollLock\r\n {...this.state.popoverProps}\r\n >\r\n {this.state.content}\r\n </Popover>\r\n </ApiPopoverContext.Provider>\r\n )\r\n }\r\n showPopover = (option: IPopoverOptions) => {\r\n clearTimeout(this.timer)\r\n this.setState({ ...option })\r\n }\r\n timer: any\r\n closePopover: TClosePopover = () => {\r\n clearTimeout(this.timer)\r\n this.setState({ anchorEl: null }, () => {\r\n this.timer = setTimeout(() => {\r\n this.setState({ content: <ContentDefault /> })\r\n }, 500)\r\n })\r\n }\r\n}\r\nexport default ApiPopover\r\n\r\nexport interface IApiPopoverContextProps {\r\n contextPopover: IApiPopoverContext\r\n}\r\nexport const withApiPopoverContext = <P extends IApiPopoverContextProps>(Component: React.ComponentType<P>) => {\r\n return (props: Omit<P, keyof IApiPopoverContextProps>) => {\r\n return (\r\n <ApiPopover>\r\n {mapApiPopoverContext((context) => (\r\n <Component {...(props as P)} contextPopover={context} />\r\n ))}\r\n </ApiPopover>\r\n )\r\n }\r\n}\r\n"],"names":["ApiPopoverContext","React","createContext","showPopover","console","warn","closePopover","mapApiPopoverContext","context","_jsx","Consumer","ApiPopover","props","_this","_classCallCheck","_callSuper","_defineProperty","option","clearTimeout","timer","setState","_objectSpread","anchorEl","setTimeout","content","ContentDefault","state","_inherits","Component","_createClass","key","value","_this2","this","_jsxs","Provider","children","Popover","sx","overflow","open","Boolean","onClose","_","reason","anchorOrigin","vertical","horizontal","transformOrigin","disableScrollLock","popoverProps","withApiPopoverContext","contextPopover"],"mappings":"iVAmBaA,EAAoBC,EAAMC,cAAkC,CACvEC,YAAa,WACXC,QAAQC,KAAK,iCACd,EACDC,aAAc,WACZF,QAAQC,KAAK,iCACf,IAGWE,EAAuB,SAACC,GAAuD,OAC1FC,EAACT,EAAkBU,mBAAUF,GAAqC,EAM9DG,aACJ,SAAAA,EAAYC,GAAU,IAAAC,EAEwC,OAFxCC,OAAAH,GACpBE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EAsBA,eAAA,SAACI,GACbC,aAAaL,EAAKM,OAClBN,EAAKO,SAAQC,EAAMJ,CAAAA,EAAAA,OACpBD,EAAAH,EAAA,gBAE6B,WAC5BK,aAAaL,EAAKM,OAClBN,EAAKO,SAAS,CAAEE,SAAU,OAAQ,WAChCT,EAAKM,MAAQI,YAAW,WACtBV,EAAKO,SAAS,CAAEI,QAASf,EAACgB,EAAc,CAAA,IACzC,GAAE,IACL,OAhCAZ,EAAKa,MAAQ,CAAEJ,SAAU,KAAME,QAASf,EAACgB,EAAc,CAAA,IAAKZ,CAC9D,CAAC,OAAAc,EAAAhB,EAJsBiB,GAItBC,EAAAlB,EAAA,CAAA,CAAAmB,IAAA,SAAAC,MACD,WAAM,IAAAC,EAAAC,KACJ,OACEC,EAAClC,EAAkBmC,SAAS,CAAAJ,MAAOE,KAChCG,SAAA,CAAAH,KAAKrB,MAAMwB,SACZ3B,EAAC4B,EAAOhB,EAAAA,EAAA,CACNiB,GAAI,CAAE,sCAAuC,CAAEC,SAAU,WACzDjB,SAAUW,KAAKP,MAAMJ,SACrBkB,KAAMC,QAAQR,KAAKP,MAAMJ,UACzBoB,QAAS,SAACC,EAAGC,GAAM,OAAKZ,EAAK1B,aAAasC,EAAO,EACjDC,aAAc,CAAEC,SAAU,SAAUC,WAAY,SAChDC,gBAAiB,CAAEF,SAAU,MAAOC,WAAY,SAChDE,mBAAiB,GACbhB,KAAKP,MAAMwB,cAAY,CAAA,EAAA,CAE1Bd,SAAAH,KAAKP,MAAMF,aAIpB,IAAC,IAoBU2B,EAAwB,SAAoCvB,GACvE,OAAO,SAAChB,GACN,OACEH,EAACE,EACE,CAAAyB,SAAA7B,GAAqB,SAACC,GAAO,OAC5BC,EAACmB,EAASP,EAAAA,KAAMT,GAAW,GAAA,CAAEwC,eAAgB5C,IAC9C,KAGN,CACH"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{defineProperty as e,objectWithoutProperties as i,objectSpread2 as r}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as n}from"react/jsx-runtime";import{styled as o,Button as l,Fade as a,CircularProgress as s}from"@mui/material";var d=["loading","children"],p=function(e){var o=e.loading,l=e.children,p=i(e,d);return t(c,r(r({},p),{},{disabled:p.disabled||o,children:[n(a,{in:!o,children:n("span",{children:l})}),n(a,{in:o,children:n("div",{className:"LoadingButton-progress",children:n(s,{size:24})})})]}))},c=o(l)(e({position:"relative"},".LoadingButton-progress",{position:"absolute",top:0,left:0,width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center"}));export{p as LoadingButton};
|
|
2
|
+
//# sourceMappingURL=buttons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buttons.js","sources":["../../src/components/buttons.tsx"],"sourcesContent":["import React, { FC } from 'react'\r\nimport { Button, ButtonProps, CircularProgress, Fade, styled } from '@mui/material'\r\n\r\nexport interface LoadingButtonProps extends ButtonProps {\r\n loading?: boolean\r\n}\r\n\r\nexport const LoadingButton: FC<LoadingButtonProps> = ({ loading, children, ...props }) => (\r\n <ButtonCustom {...props} disabled={props.disabled || loading}>\r\n <Fade in={!loading}>\r\n <span>{children}</span>\r\n </Fade>\r\n <Fade in={loading}>\r\n <div className='LoadingButton-progress'>\r\n <CircularProgress size={24} />\r\n </div>\r\n </Fade>\r\n </ButtonCustom>\r\n)\r\n\r\nconst ButtonCustom = styled(Button)({\r\n position: 'relative',\r\n [`.LoadingButton-progress`]: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }\r\n})\r\n"],"names":["LoadingButton","_ref","loading","children","props","_objectWithoutProperties","_excluded","_jsxs","ButtonCustom","_objectSpread","disabled","_jsx","Fade","in","className","CircularProgress","size","styled","Button","_defineProperty","position","top","left","width","height","display","alignItems","justifyContent"],"mappings":"4RAOaA,EAAwC,SAA3BC,GAAA,IAA8BC,EAAOD,EAAPC,QAASC,EAAQF,EAARE,SAAaC,EAAKC,EAAAJ,EAAAK,GAAA,OACjFC,EAACC,EAAYC,EAAAA,KAAKL,GAAK,GAAA,CAAEM,SAAUN,EAAMM,UAAYR,EAAOC,SAAA,CAC1DQ,EAACC,EAAI,CAACC,IAAKX,EACTC,SAAAQ,EAAA,OAAA,CAAAR,SAAOA,MAETQ,EAACC,EAAK,CAAAC,GAAIX,EAAOC,SACfQ,EAAK,MAAA,CAAAG,UAAU,yBACbX,SAAAQ,EAACI,EAAiB,CAAAC,KAAM,YAGf,EAGXR,EAAeS,EAAOC,EAAPD,CAAcE,EAAA,CACjCC,SAAU,YACmB,0BAAA,CAC3BA,SAAU,WACVC,IAAK,EACLC,KAAM,EACNC,MAAO,OACPC,OAAQ,OACRC,QAAS,OACTC,WAAY,SACZC,eAAgB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as n,slicedToArray as o,objectSpread2 as e,toConsumableArray as r}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as l,Fragment as t,jsx as i}from"react/jsx-runtime";import{useState as a,useEffect as c}from"react";import{styled as u,Popover as s,Badge as p,badgeClasses as d,Box as h,Button as m,TextField as v,ToggleButtonGroup as f,ToggleButton as g,Typography as x,List as C,ListItem as b,FormControlLabel as y,Checkbox as P}from"@mui/material";import w from"@mui/icons-material/FilterAltOutlined";import{mergeObjects as j}from"../utils/helpers.js";import"../utils/
|
|
1
|
+
import{defineProperty as n,slicedToArray as o,objectSpread2 as e,toConsumableArray as r}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as l,Fragment as t,jsx as i}from"react/jsx-runtime";import{useState as a,useEffect as c}from"react";import{styled as u,Popover as s,Badge as p,badgeClasses as d,Box as h,Button as m,TextField as v,ToggleButtonGroup as f,ToggleButton as g,Typography as x,List as C,ListItem as b,FormControlLabel as y,Checkbox as P}from"@mui/material";import w from"@mui/icons-material/FilterAltOutlined";import{mergeObjects as j}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import z from"./help-tooltip.js";function A(n){return function(u){var s,p,d,A,S,L,T,q,B,D,F,H,I,R=a(null),Y=o(R,2),_=Y[0],E=Y[1],M=a([]),W=o(M,2),X=W[0],G=W[1],J=a(null!==(s=null!==(p=u.options)&&void 0!==p?p:n.options)&&void 0!==s?s:[]),K=o(J,2),Q=K[0],U=K[1],V=a(""),Z=o(V,2),$=Z[0],nn=Z[1],on=a("and"),en=o(on,2),rn=en[0],ln=en[1],tn={buttonProps:j(null==n?void 0:n.buttonProps,null===(d=u.slots)||void 0===d?void 0:d.buttonProps),contentProps:null!==(A=null!==(S=null===(L=u.slots)||void 0===L?void 0:L.contentPorps)&&void 0!==S?S:null==n?void 0:n.contentPorps)&&void 0!==A?A:{}},an=function(n,o){E(null)};return c((function(){u.options&&u.options.length>0&&U(u.options)}),[u.options]),c((function(){var n;G(null!==(n=u.value)&&void 0!==n?n:[])}),[u.value]),l(t,{children:[l(m,e(e({color:"inherit",endIcon:i(w,{})},tn.buttonProps),{},{onClick:function(n){E(n.currentTarget)},children:[n.btnText,i(O,{badgeContent:null===(T=u.value)||void 0===T?void 0:T.length,color:"error",overlap:"circular",sx:{transform:"translateY(-50%) translateX(24px)"}})]})),l(k,{open:Boolean(_),anchorEl:_,onClose:an,anchorOrigin:{vertical:"bottom",horizontal:"left"},children:[l(N,{className:"top",children:[i(v,{size:"small",placeholder:null!==(q=n.placeholder)&&void 0!==q?q:"Search",fullWidth:!0,value:$,onChange:function(n){return nn(n.target.value)}}),l(f,{size:"small",exclusive:!0,color:"primary",value:rn,onChange:function(n,o){o&&ln(o)},children:[i(g,{value:"and",children:"AND"}),i(g,{value:"or",children:"OR"})]}),i(z,{title:"Filter Logic",small:!0,children:l(x,{variant:"body2",color:"text.secondary",children:["Choose how multiple categories are applied.",i("br",{}),i("strong",{children:" AND "})," requires all selected categories, while",i("br",{}),i("strong",{children:" OR "})," matches any."]})})]}),i(h,e(e({className:"menu-content"},tn.contentProps),{},{children:i(C,{children:(D=null!==(B=u.value)&&void 0!==B?B:[],F=Q.filter((function(n){return n.toLowerCase().includes($.toLowerCase())})).sort((function(n,o){return n.localeCompare(o)})),H=F.filter((function(n){return D.includes(n)})),I=F.filter((function(n){return!D.includes(n)})),[].concat(r(H),r(I))).map((function(n){return i(b,{sx:{whiteSpace:"nowrap"},children:i(y,{label:n,control:i(P,{checked:X.includes(n),onChange:function(){return o=n,void G((function(n){return n.includes(o)?n.filter((function(n){return n!==o})):[].concat(r(n),[o])}));var o}})})},n)}))})})),l(N,{children:[i(m,{size:"small",onClick:function(){G([]),u.onChange&&u.onChange([])},color:"inherit",children:"Clear"}),i(h,{sx:{flex:1}}),i(m,{size:"small",onClick:function(){var n;G(null!==(n=u.value)&&void 0!==n?n:[]),an()},color:"inherit",children:"Cancel"}),i(m,{size:"small",variant:"contained",onClick:function(){u.onChange&&u.onChange(X),an()},children:"Apply"})]})]})]})}}var k=u(s)({".MuiPaper-root":{overflow:"hidden",position:"relative",width:"360px"},".menu-content":{overflowY:"auto",maxHeight:"".concat(290,"px"),margin:"2px 2px 2px 0"}}),O=u(p)(n({},"& .".concat(d.badge),{top:"-12px",right:"-6px"})),N=u(h)({alignItems:"center",display:"flex",gap:"6px",height:"58px",padding:"8px 10px",boxShadow:"rgba(99, 99, 99, 0.2) 0px 2px 8px 0px"});export{A 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, 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\ntype ILogic = 'and' | 'or'\r\n\r\nexport interface IMultiSelectDropdownFilter {\r\n logic?: ILogic\r\n}\r\n\r\nexport interface IMultiSelectDropdownSlots {\r\n buttonProps?: ButtonProps\r\n contentPorps?: BoxProps\r\n}\r\n\r\nexport interface IMultiSelectDropdownProps {\r\n options?: string[]\r\n value?: string[]\r\n onChange?: (value: string[], filter?: IMultiSelectDropdownFilter) => void\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 [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\r\n const [selectedOptions, setSelectedOptions] = useState<string[]>([])\r\n const [options, setOptions] = useState<string[]>(props.options ?? params.options ?? [])\r\n const [search, setSearch] = useState('')\r\n const [filterLogic, setFilterLogic] = useState<ILogic>('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 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 }\r\n\r\n const handleToggle = (value: string) => {\r\n setSelectedOptions((prev) => (prev.includes(value) ? prev.filter((t) => t !== value) : [...prev, value]))\r\n }\r\n\r\n const handleClear = () => {\r\n setSelectedOptions([])\r\n props.onChange && props.onChange([])\r\n }\r\n\r\n const handleCancel = () => {\r\n setSelectedOptions(props.value ?? [])\r\n handleClose()\r\n }\r\n\r\n const handleApply = () => {\r\n props.onChange && props.onChange(selectedOptions)\r\n handleClose()\r\n }\r\n\r\n const getOptions = () => {\r\n const values = props.value ?? []\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 useEffect(() => {\r\n if (props.options && props.options.length > 0) setOptions(props.options)\r\n }, [props.options])\r\n\r\n useEffect(() => {\r\n setSelectedOptions(props.value ?? [])\r\n }, [props.value])\r\n\r\n return (\r\n <>\r\n <Button color='inherit' endIcon={<FilterAltOutlinedIcon />} {...mergeConfig.buttonProps} onClick={handleOpen}>\r\n {params.btnText}\r\n <ButtonBadge badgeContent={props.value?.length} color='error' overlap='circular' sx={{ transform: 'translateY(-50%) translateX(24px)' }} />\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\r\n size='small'\r\n exclusive\r\n color='primary'\r\n value={filterLogic}\r\n onChange={(_, value) => {\r\n if (value) setFilterLogic(value)\r\n }}\r\n >\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={selectedOptions.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 // minWidth: '300px',\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","_ref2","_props$slots$contentP","_props$slots2","_props$value4","_params$placeholder","_props$value2","values","list","prioritized","others","_useState","useState","_useState2","_slicedToArray","anchorEl","setAnchorEl","_useState3","_useState4","selectedOptions","setSelectedOptions","_useState5","options","_useState6","setOptions","_useState7","_useState8","search","setSearch","_useState9","_useState0","filterLogic","setFilterLogic","mergeConfig","buttonProps","mergeObjects","slots","contentProps","contentPorps","handleClose","event","reason","useEffect","length","_props$value3","value","_jsxs","_Fragment","children","Button","_objectSpread","color","endIcon","_jsx","FilterAltOutlinedIcon","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","_props$value","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, 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\ntype ILogic = 'and' | 'or'\r\n\r\nexport interface IMultiSelectDropdownFilter {\r\n logic?: ILogic\r\n}\r\n\r\nexport interface IMultiSelectDropdownSlots {\r\n buttonProps?: ButtonProps\r\n contentPorps?: BoxProps\r\n}\r\n\r\nexport interface IMultiSelectDropdownProps {\r\n options?: string[]\r\n value?: string[]\r\n onChange?: (value: string[], filter?: IMultiSelectDropdownFilter) => void\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 [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\r\n const [selectedOptions, setSelectedOptions] = useState<string[]>([])\r\n const [options, setOptions] = useState<string[]>(props.options ?? params.options ?? [])\r\n const [search, setSearch] = useState('')\r\n const [filterLogic, setFilterLogic] = useState<ILogic>('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 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 }\r\n\r\n const handleToggle = (value: string) => {\r\n setSelectedOptions((prev) => (prev.includes(value) ? prev.filter((t) => t !== value) : [...prev, value]))\r\n }\r\n\r\n const handleClear = () => {\r\n setSelectedOptions([])\r\n props.onChange && props.onChange([])\r\n }\r\n\r\n const handleCancel = () => {\r\n setSelectedOptions(props.value ?? [])\r\n handleClose()\r\n }\r\n\r\n const handleApply = () => {\r\n props.onChange && props.onChange(selectedOptions)\r\n handleClose()\r\n }\r\n\r\n const getOptions = () => {\r\n const values = props.value ?? []\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 useEffect(() => {\r\n if (props.options && props.options.length > 0) setOptions(props.options)\r\n }, [props.options])\r\n\r\n useEffect(() => {\r\n setSelectedOptions(props.value ?? [])\r\n }, [props.value])\r\n\r\n return (\r\n <>\r\n <Button color='inherit' endIcon={<FilterAltOutlinedIcon />} {...mergeConfig.buttonProps} onClick={handleOpen}>\r\n {params.btnText}\r\n <ButtonBadge badgeContent={props.value?.length} color='error' overlap='circular' sx={{ transform: 'translateY(-50%) translateX(24px)' }} />\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\r\n size='small'\r\n exclusive\r\n color='primary'\r\n value={filterLogic}\r\n onChange={(_, value) => {\r\n if (value) setFilterLogic(value)\r\n }}\r\n >\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={selectedOptions.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 // minWidth: '300px',\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","_ref2","_props$slots$contentP","_props$slots2","_props$value4","_params$placeholder","_props$value2","values","list","prioritized","others","_useState","useState","_useState2","_slicedToArray","anchorEl","setAnchorEl","_useState3","_useState4","selectedOptions","setSelectedOptions","_useState5","options","_useState6","setOptions","_useState7","_useState8","search","setSearch","_useState9","_useState0","filterLogic","setFilterLogic","mergeConfig","buttonProps","mergeObjects","slots","contentProps","contentPorps","handleClose","event","reason","useEffect","length","_props$value3","value","_jsxs","_Fragment","children","Button","_objectSpread","color","endIcon","_jsx","FilterAltOutlinedIcon","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","_props$value","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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.filter-bar.js","sources":["../../src/filter-bar/create.filter-bar.tsx"],"sourcesContent":["import React from 'react'\r\nimport { Box, ClickAwayListener, IconButton, InputBase, styled } from '@mui/material'\r\nimport FilterListIcon from '@mui/icons-material/FilterList'\r\nimport { ButtonClear, FilterHelpNotes, FilterHelpNotesProps } from './ui.units'\r\nimport { IFilterFields, IFilterItemModel, IFilterModel, FilterReason, IFilterState } from './types'\r\nimport CreateFilterPanel, { FilterPanelState } from './create.filter-panel'\r\nimport FilterBarBase from './base'\r\nimport CreateFiltered from './create.filtered'\r\n\r\nexport interface FilterBarParams<T> {\r\n fields: IFilterFields<T>\r\n id?: string\r\n placeholder?: string\r\n helpNotes?: FilterHelpNotesProps\r\n}\r\n\r\ninterface IProps<T> {\r\n id?: string\r\n placeholder?: string\r\n value?: IFilterState<T>\r\n onChange?: (value: IFilterState<T>) => void\r\n}\r\n\r\ninterface IState {\r\n panelState: FilterPanelState\r\n keyword: string\r\n}\r\n\r\nfunction CreateFilterBar<T>(params: FilterBarParams<T>) {\r\n const FilterPanelInstance = CreateFilterPanel<T>({ fields: params.fields })\r\n const FilteredInstance = CreateFiltered<T>()\r\n\r\n class FilterBar extends FilterBarBase<IProps<T>, IState, T> {\r\n defaultState: IState = { keyword: '', panelState: { anchorEl: null } }\r\n constructor(props: IProps<T>) {\r\n super(props)\r\n this.state = this.defaultState\r\n }\r\n\r\n filterStateStore: IFilterState<T> = { filter: {} }\r\n get filterState(): IFilterState<T> {\r\n return this.props.value ?? this.filterStateStore\r\n }\r\n\r\n setFilterState = (filterState: IFilterState<T>) => {\r\n if (!this.props.value) {\r\n this.filterStateStore = filterState\r\n }\r\n this.props.onChange && this.props.onChange(filterState)\r\n }\r\n\r\n get configs() {\r\n return {\r\n id: this.props.id ?? params.id ?? new Date().getTime().toString(),\r\n placeholder: this.props.placeholder ?? params.placeholder ?? 'Filter',\r\n helpNotes: params.helpNotes\r\n }\r\n }\r\n\r\n refFilterButton: HTMLButtonElement | null = null\r\n refSortButton: HTMLButtonElement | null = null\r\n render() {\r\n return (\r\n <ClickAwayListener onClickAway={this.closePanel}>\r\n <Wrapper>\r\n <IconButton ref={(ref) => (this.refFilterButton = ref)} onClick={() => this.showPanel('filterButton')}>\r\n <FilterListIcon />\r\n </IconButton>\r\n <Content>\r\n <FilteredInstance fields={params.fields} filterState={this.filterState} onRemove={this.handleRemove} />\r\n {this.renderTextField()}\r\n </Content>\r\n <ButtonClear visibled={!this.isFilterEmpty(this.filterState)} onClick={this.handleClear} />\r\n {/* <IconButton ref={(ref) => (this.refSortButton = ref)} onClick={() => this.showPanel('sortButton')}>\r\n <SwapVertIcon />\r\n </IconButton> */}\r\n <FilterHelpNotes {...this.configs.helpNotes} />\r\n <FilterPanelInstance {...this.state.panelState} keyword={this.state.keyword} onSubmit={this.handleAdd} onClose={this.closePanel} />\r\n </Wrapper>\r\n </ClickAwayListener>\r\n )\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n refBeforeInput: HTMLElement | null = null\r\n renderTextField = () => (\r\n <Box component='label' htmlFor={this.configs.id} sx={{ flex: 1, display: 'flex', alignItems: 'flex-end' }}>\r\n <Box ref={(ref: HTMLElement) => (this.refBeforeInput = ref)} sx={{ height: '100%' }} />\r\n <InputBase\r\n id={this.configs.id}\r\n placeholder={this.configs.placeholder}\r\n fullWidth\r\n autoComplete='off'\r\n inputRef={(ref: HTMLInputElement) => (this.refInput = ref)}\r\n onChange={(event) => this.setState({ keyword: event.target.value })}\r\n value={this.state.keyword}\r\n onFocus={() => this.showPanel('searchInput')}\r\n onKeyDown={this.handleKeyDown}\r\n />\r\n </Box>\r\n )\r\n\r\n handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n const keyCode: number = event.keyCode\r\n if (keyCode === 13) {\r\n if (!this.state.keyword) return\r\n const temp = this.patchFilterWithKey(this.filterState, 'Search', { value: this.state.keyword })\r\n temp.filterState.details = 'add'\r\n if (!!temp.isChanged) {\r\n this.refInput?.blur()\r\n this.setFilterState(temp.filterState)\r\n this.setState(this.defaultState)\r\n }\r\n } else if (keyCode === 27) {\r\n this.refInput?.blur()\r\n this.setState(this.defaultState)\r\n }\r\n }\r\n\r\n handleAdd = (key: keyof IFilterModel<T>, value: IFilterItemModel) => {\r\n const temp = this.patchFilterWithKey(this.filterState, key, value)\r\n temp.filterState.details = 'add'\r\n if (!!temp.isChanged) {\r\n this.refInput?.blur()\r\n this.setFilterState(temp.filterState)\r\n this.setState(this.defaultState)\r\n }\r\n }\r\n\r\n handleRemove = (key: keyof IFilterModel<T>) => {\r\n const temp = this.deleteFilterWithKey(this.filterState, key)\r\n temp.filterState.details = 'remove'\r\n if (!!temp.isChanged) {\r\n this.refInput?.blur()\r\n this.setFilterState(temp.filterState)\r\n this.forceUpdate()\r\n }\r\n }\r\n\r\n handleClear = () => {\r\n this.setFilterState({ filter: {}, details: 'remove' })\r\n this.setState(this.defaultState)\r\n }\r\n\r\n showPanel = (reason: FilterReason) => {\r\n let anchorEl = null\r\n switch (reason) {\r\n case 'searchInput':\r\n anchorEl = this.refBeforeInput\r\n break\r\n case 'filterButton':\r\n anchorEl = this.refFilterButton\r\n break\r\n case 'sortButton':\r\n anchorEl = this.refSortButton\r\n break\r\n default:\r\n break\r\n }\r\n this.setState({ panelState: { anchorEl, reason } })\r\n }\r\n\r\n closePanel = () => this.setState({ panelState: { anchorEl: null } })\r\n }\r\n\r\n return FilterBar\r\n}\r\n\r\nexport default CreateFilterBar\r\n\r\nconst Wrapper = styled(Box)({\r\n display: 'flex',\r\n gap: '8px',\r\n width: '100%',\r\n borderRadius: '6px',\r\n transition: 'all linear 0.2s',\r\n padding: '2px',\r\n backgroundColor: '#fafafa',\r\n '&:hover': { backgroundColor: '#ededed' }\r\n})\r\n\r\nconst Content = styled(Box)({\r\n flex: 1,\r\n minHeight: '40px',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n alignItems: 'center',\r\n gap: '6px'\r\n})\r\n"],"names":["CreateFilterBar","params","FilterPanelInstance","CreateFilterPanel","fields","FilteredInstance","CreateFiltered","FilterBar","props","_this","_classCallCheck","_callSuper","_defineProperty","keyword","panelState","anchorEl","filter","filterState","value","filterStateStore","onChange","_jsxs","Box","component","htmlFor","configs","id","sx","flex","display","alignItems","children","_jsx","ref","refBeforeInput","height","InputBase","placeholder","fullWidth","autoComplete","inputRef","refInput","event","setState","target","state","onFocus","showPanel","onKeyDown","handleKeyDown","keyCode","_this$refInput","temp","patchFilterWithKey","details","isChanged","blur","setFilterState","defaultState","_this$refInput2","key","_this$refInput3","_this$refInput4","deleteFilterWithKey","forceUpdate","reason","refFilterButton","refSortButton","_inherits","FilterBarBase","_createClass","get","_this$props$value","this","_ref2","_this$props$id","_ref3","_this$props$placehold","Date","getTime","toString","helpNotes","_this2","ClickAwayListener","onClickAway","closePanel","Wrapper","IconButton","onClick","FilterListIcon","Content","onRemove","handleRemove","renderTextField","ButtonClear","visibled","isFilterEmpty","handleClear","FilterHelpNotes","_objectSpread","onSubmit","handleAdd","onClose","styled","gap","width","borderRadius","transition","padding","backgroundColor","minHeight","flexWrap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.filter-bar.js","sources":["../../src/filter-bar/create.filter-bar.tsx"],"sourcesContent":["import React from 'react'\r\nimport { Box, ClickAwayListener, IconButton, InputBase, styled } from '@mui/material'\r\nimport FilterListIcon from '@mui/icons-material/FilterList'\r\nimport { ButtonClear, FilterHelpNotes, IFilterHelpNotesProps } from './ui.units'\r\nimport { IFilterFields, IFilterItemModel, IFilterModel, FilterReason, IFilterState } from './types'\r\nimport CreateFilterPanel, { FilterPanelState } from './create.filter-panel'\r\nimport FilterBarBase from './base'\r\nimport CreateFiltered from './create.filtered'\r\n\r\nexport interface IFilterBarParams<T> {\r\n fields: IFilterFields<T>\r\n id?: string\r\n placeholder?: string\r\n helpNotes?: IFilterHelpNotesProps\r\n}\r\n\r\nexport interface IFilterBarProps<T> {\r\n id?: string\r\n placeholder?: string\r\n value?: IFilterState<T>\r\n onChange?: (value: IFilterState<T>) => void\r\n}\r\n\r\nexport interface IFilterBarState {\r\n panelState: FilterPanelState\r\n keyword: string\r\n}\r\n\r\nfunction CreateFilterBar<T>(params: IFilterBarParams<T>) {\r\n const FilterPanelInstance = CreateFilterPanel<T>({ fields: params.fields })\r\n const FilteredInstance = CreateFiltered<T>()\r\n\r\n class FilterBar extends FilterBarBase<IFilterBarProps<T>, IFilterBarState, T> {\r\n defaultState: IFilterBarState = { keyword: '', panelState: { anchorEl: null } }\r\n constructor(props: IFilterBarProps<T>) {\r\n super(props)\r\n this.state = this.defaultState\r\n }\r\n\r\n filterStateStore: IFilterState<T> = { filter: {} }\r\n get filterState(): IFilterState<T> {\r\n return this.props.value ?? this.filterStateStore\r\n }\r\n\r\n setFilterState = (filterState: IFilterState<T>) => {\r\n if (!this.props.value) {\r\n this.filterStateStore = filterState\r\n }\r\n this.props.onChange && this.props.onChange(filterState)\r\n }\r\n\r\n get configs() {\r\n return {\r\n id: this.props.id ?? params.id ?? new Date().getTime().toString(),\r\n placeholder: this.props.placeholder ?? params.placeholder ?? 'Filter',\r\n helpNotes: params.helpNotes\r\n }\r\n }\r\n\r\n refFilterButton: HTMLButtonElement | null = null\r\n refSortButton: HTMLButtonElement | null = null\r\n render() {\r\n return (\r\n <ClickAwayListener onClickAway={this.closePanel}>\r\n <Wrapper>\r\n <IconButton ref={(ref) => (this.refFilterButton = ref)} onClick={() => this.showPanel('filterButton')}>\r\n <FilterListIcon />\r\n </IconButton>\r\n <Content>\r\n <FilteredInstance fields={params.fields} filterState={this.filterState} onRemove={this.handleRemove} />\r\n {this.renderTextField()}\r\n </Content>\r\n <ButtonClear visibled={!this.isFilterEmpty(this.filterState)} onClick={this.handleClear} />\r\n {/* <IconButton ref={(ref) => (this.refSortButton = ref)} onClick={() => this.showPanel('sortButton')}>\r\n <SwapVertIcon />\r\n </IconButton> */}\r\n <FilterHelpNotes {...this.configs.helpNotes} />\r\n <FilterPanelInstance {...this.state.panelState} keyword={this.state.keyword} onSubmit={this.handleAdd} onClose={this.closePanel} />\r\n </Wrapper>\r\n </ClickAwayListener>\r\n )\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n refBeforeInput: HTMLElement | null = null\r\n renderTextField = () => (\r\n <Box component='label' htmlFor={this.configs.id} sx={{ flex: 1, display: 'flex', alignItems: 'flex-end' }}>\r\n <Box ref={(ref: HTMLElement) => (this.refBeforeInput = ref)} sx={{ height: '100%' }} />\r\n <InputBase\r\n id={this.configs.id}\r\n placeholder={this.configs.placeholder}\r\n fullWidth\r\n autoComplete='off'\r\n inputRef={(ref: HTMLInputElement) => (this.refInput = ref)}\r\n onChange={(event) => this.setState({ keyword: event.target.value })}\r\n value={this.state.keyword}\r\n onFocus={() => this.showPanel('searchInput')}\r\n onKeyDown={this.handleKeyDown}\r\n />\r\n </Box>\r\n )\r\n\r\n handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n const keyCode: number = event.keyCode\r\n if (keyCode === 13) {\r\n if (!this.state.keyword) return\r\n const temp = this.patchFilterWithKey(this.filterState, 'Search', { value: this.state.keyword })\r\n temp.filterState.details = 'add'\r\n if (!!temp.isChanged) {\r\n this.refInput?.blur()\r\n this.setFilterState(temp.filterState)\r\n this.setState(this.defaultState)\r\n }\r\n } else if (keyCode === 27) {\r\n this.refInput?.blur()\r\n this.setState(this.defaultState)\r\n }\r\n }\r\n\r\n handleAdd = (key: keyof IFilterModel<T>, value: IFilterItemModel) => {\r\n const temp = this.patchFilterWithKey(this.filterState, key, value)\r\n temp.filterState.details = 'add'\r\n if (!!temp.isChanged) {\r\n this.refInput?.blur()\r\n this.setFilterState(temp.filterState)\r\n this.setState(this.defaultState)\r\n }\r\n }\r\n\r\n handleRemove = (key: keyof IFilterModel<T>) => {\r\n const temp = this.deleteFilterWithKey(this.filterState, key)\r\n temp.filterState.details = 'remove'\r\n if (!!temp.isChanged) {\r\n this.refInput?.blur()\r\n this.setFilterState(temp.filterState)\r\n this.forceUpdate()\r\n }\r\n }\r\n\r\n handleClear = () => {\r\n this.setFilterState({ filter: {}, details: 'remove' })\r\n this.setState(this.defaultState)\r\n }\r\n\r\n showPanel = (reason: FilterReason) => {\r\n let anchorEl = null\r\n switch (reason) {\r\n case 'searchInput':\r\n anchorEl = this.refBeforeInput\r\n break\r\n case 'filterButton':\r\n anchorEl = this.refFilterButton\r\n break\r\n case 'sortButton':\r\n anchorEl = this.refSortButton\r\n break\r\n default:\r\n break\r\n }\r\n this.setState({ panelState: { anchorEl, reason } })\r\n }\r\n\r\n closePanel = () => this.setState({ panelState: { anchorEl: null } })\r\n }\r\n\r\n return FilterBar\r\n}\r\n\r\nexport default CreateFilterBar\r\n\r\nconst Wrapper = styled(Box)({\r\n display: 'flex',\r\n gap: '8px',\r\n width: '100%',\r\n borderRadius: '6px',\r\n transition: 'all linear 0.2s',\r\n padding: '2px',\r\n backgroundColor: '#fafafa',\r\n '&:hover': { backgroundColor: '#ededed' }\r\n})\r\n\r\nconst Content = styled(Box)({\r\n flex: 1,\r\n minHeight: '40px',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n alignItems: 'center',\r\n gap: '6px'\r\n})\r\n"],"names":["CreateFilterBar","params","FilterPanelInstance","CreateFilterPanel","fields","FilteredInstance","CreateFiltered","FilterBar","props","_this","_classCallCheck","_callSuper","_defineProperty","keyword","panelState","anchorEl","filter","filterState","value","filterStateStore","onChange","_jsxs","Box","component","htmlFor","configs","id","sx","flex","display","alignItems","children","_jsx","ref","refBeforeInput","height","InputBase","placeholder","fullWidth","autoComplete","inputRef","refInput","event","setState","target","state","onFocus","showPanel","onKeyDown","handleKeyDown","keyCode","_this$refInput","temp","patchFilterWithKey","details","isChanged","blur","setFilterState","defaultState","_this$refInput2","key","_this$refInput3","_this$refInput4","deleteFilterWithKey","forceUpdate","reason","refFilterButton","refSortButton","_inherits","FilterBarBase","_createClass","get","_this$props$value","this","_ref2","_this$props$id","_ref3","_this$props$placehold","Date","getTime","toString","helpNotes","_this2","ClickAwayListener","onClickAway","closePanel","Wrapper","IconButton","onClick","FilterListIcon","Content","onRemove","handleRemove","renderTextField","ButtonClear","visibled","isFilterEmpty","handleClear","FilterHelpNotes","_objectSpread","onSubmit","handleAdd","onClose","styled","gap","width","borderRadius","transition","padding","backgroundColor","minHeight","flexWrap"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.units.js","sources":["../../src/filter-bar/ui.units.tsx"],"sourcesContent":["import React, { FC } from 'react'\r\nimport { Box, Fade, IconButton, IconButtonProps, styled, Tooltip, Typography } from '@mui/material'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport HelpTooltip from '../components/help-tooltip'\r\n\r\
|
|
1
|
+
{"version":3,"file":"ui.units.js","sources":["../../src/filter-bar/ui.units.tsx"],"sourcesContent":["import React, { FC } from 'react'\r\nimport { Box, Fade, IconButton, IconButtonProps, styled, Tooltip, Typography } from '@mui/material'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport HelpTooltip from '../components/help-tooltip'\r\n\r\nexport interface IButtonClearProps {\r\n visibled?: boolean\r\n onClick: IconButtonProps['onClick']\r\n}\r\n\r\nexport const ButtonClear: FC<IButtonClearProps> = (props) => (\r\n <WrapIcon>\r\n <Tooltip title='Remove filter'>\r\n <Fade in={props.visibled} unmountOnExit>\r\n <IconButton size='small' onClick={props.onClick}>\r\n <CloseIcon fontSize='small' />\r\n </IconButton>\r\n </Fade>\r\n </Tooltip>\r\n </WrapIcon>\r\n)\r\n\r\nexport interface IFilterHelpNotesProps {\r\n title?: string\r\n items?: string[]\r\n}\r\n\r\nexport const FilterHelpNotes: FC<IFilterHelpNotesProps> = (props) => {\r\n if (!props.items || props.items.length < 1) return <></>\r\n return (\r\n <WrapIcon>\r\n <HelpTooltip small title={props.title ?? 'The search includes'}>\r\n <WrapList>\r\n {props.items.map((item, index) => (\r\n <Typography key={index} component='li' variant='body2'>\r\n {item}\r\n </Typography>\r\n ))}\r\n </WrapList>\r\n </HelpTooltip>\r\n </WrapIcon>\r\n )\r\n}\r\n\r\nconst WrapIcon = styled(Box)({\r\n display: 'flex',\r\n flex: '0 0 auto',\r\n width: '40px',\r\n height: '40px',\r\n justifyContent: 'center',\r\n alignItems: 'center'\r\n})\r\n\r\nconst WrapList = styled('ul')({\r\n paddingLeft: '1.7rem',\r\n marginBottom: 0,\r\n li: {\r\n position: 'relative',\r\n textAlign: 'justify',\r\n '&::before': {\r\n content: '\"►\"',\r\n display: 'block',\r\n position: 'absolute',\r\n top: '50%',\r\n right: 'calc(100% + 6px)',\r\n transform: 'translateY(-50%)',\r\n fontSize: '0.9em'\r\n }\r\n }\r\n})\r\n"],"names":["ButtonClear","props","_jsx","WrapIcon","children","Tooltip","title","Fade","in","visibled","unmountOnExit","IconButton","size","onClick","CloseIcon","fontSize","FilterHelpNotes","_props$title","items","length","HelpTooltip","small","WrapList","map","item","index","Typography","component","variant","styled","Box","display","flex","width","height","justifyContent","alignItems","paddingLeft","marginBottom","li","position","textAlign","content","top","right","transform"],"mappings":"uPAUaA,EAAqC,SAACC,GAAK,OACtDC,EAACC,EAAQ,CAAAC,SACPF,EAACG,EAAO,CAACC,MAAM,gBAAeF,SAC5BF,EAACK,EAAK,CAAAC,GAAIP,EAAMQ,SAAUC,eAAa,EAAAN,SACrCF,EAACS,EAAW,CAAAC,KAAK,QAAQC,QAASZ,EAAMY,iBACtCX,EAACY,EAAU,CAAAC,SAAS,iBAIjB,EAQAC,EAA6C,SAACf,GAAS,IAAAgB,EAClE,OAAKhB,EAAMiB,OAASjB,EAAMiB,MAAMC,OAAS,EAAUjB,QAEjDA,EAACC,EACC,CAAAC,SAAAF,EAACkB,EAAY,CAAAC,OAAM,EAAAf,MAAkB,QAAbW,EAAEhB,EAAMK,aAAK,IAAAW,EAAAA,EAAI,sBAAqBb,SAC5DF,EAACoB,EACE,CAAAlB,SAAAH,EAAMiB,MAAMK,KAAI,SAACC,EAAMC,GAAK,OAC3BvB,EAACwB,EAAuB,CAAAC,UAAU,KAAKC,QAAQ,QAAOxB,SACnDoB,GADcC,EAGlB,SAKX,EAEMtB,EAAW0B,EAAOC,EAAPD,CAAY,CAC3BE,QAAS,OACTC,KAAM,WACNC,MAAO,OACPC,OAAQ,OACRC,eAAgB,SAChBC,WAAY,WAGRd,EAAWO,EAAO,KAAPA,CAAa,CAC5BQ,YAAa,SACbC,aAAc,EACdC,GAAI,CACFC,SAAU,WACVC,UAAW,UACX,YAAa,CACXC,QAAS,MACTX,QAAS,QACTS,SAAU,WACVG,IAAK,MACLC,MAAO,mBACPC,UAAW,mBACX9B,SAAU"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as e,inherits as t,createClass as a,objectSpread2 as r,classCallCheck as s,callSuper as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,jsxs as l}from"react/jsx-runtime";import{Component as o}from"react";import{LocalizationProvider as u}from"@mui/x-date-pickers";import{AdapterDayjs as d}from"@mui/x-date-pickers/AdapterDayjs";import{styled as c,Box as p,TextField as h,Typography as f,Switch as m}from"@mui/material";import{getErrorMessage as g}from"./helper.js";import{mergeObjects as v,tryParseIntRequired as y}from"../utils/helpers.js";import"../utils/
|
|
1
|
+
import{defineProperty as e,inherits as t,createClass as a,objectSpread2 as r,classCallCheck as s,callSuper as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,jsxs as l}from"react/jsx-runtime";import{Component as o}from"react";import{LocalizationProvider as u}from"@mui/x-date-pickers";import{AdapterDayjs as d}from"@mui/x-date-pickers/AdapterDayjs";import{styled as c,Box as p,TextField as h,Typography as f,Switch as m}from"@mui/material";import{getErrorMessage as g}from"./helper.js";import{mergeObjects as v,tryParseIntRequired as y}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import D from"dayjs";var b="DateExpired-root",x="DateExpired-control",k="DateExpired-label",C="DateExpired-labelSwitch",w="DateExpired-input",O="DateExpired-switch";function j(c){var p=function(){function p(t){var a;return s(this,p),a=i(this,p,[t]),e(a,"defaultNumberOfDays",30),e(a,"getNumberOfDays",(function(){return"number"===a.slots.type?y(a.defaulValue,a.defaultNumberOfDays):a.getDaysUntilDate(a.defaulValue,a.defaultNumberOfDays)})),e(a,"mapTextFieldProps",(function(){var e=a.props,t=e.messageErrors,r=e.name,s=e.onBlur,i=a.props.disabled||!a.state.switchChecked,o={fullWidth:!0,className:w,label:l("span",{className:k,children:["Expiry date",a.state.switchChecked&&n("b",{children:a.getOffsetDate(a.state.numberOfDays)})]}),variant:"outlined",type:"number",disabled:i,value:a.state.switchChecked?a.state.numberOfDays:0,onChange:a.handleChange};if(r){o.onBlur=function(){return s&&s(r)};var u,d=g(t,r);if(d.error)o.error=Boolean(d.error),o.helperText=null!==(u=d.message)&&void 0!==u?u:""}return v({},o,a.slots.textFieldProps)})),e(a,"handleChange",(function(e){var t=""!=e.target.value?parseInt(e.target.value):0;a.setState({numberOfDays:t})})),e(a,"getOffsetDate",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MM-DD-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 a=D(e),r=D(),s=a.diff(r,"day",!0);return Math.round(s)}catch(e){return t}})),a.state={numberOfDays:a.getNumberOfDays(),switchChecked:a.slots.switchChecked},a.id=(new Date).getTime().toString(),a}return t(p,o),a(p,[{key:"slots",get:function(){var e,t,a=null!==(e=this.props.slots)&&void 0!==e?e:{},s=a.switchChecked,i=a.switchCheckedGetter,n=v(c,this.props.slots),l=null===(t=this.defaulValue?!!this.defaulValue:s)||void 0===t||t;return i&&(l=i(this.defaulValue,this.props.data)),r(r({},n),{},{switchChecked:l})}},{key:"defaulValue",get:function(){var e,t,a=this.props,r=a.data,s=a.name;return null!==(e=this.props.defaultValue)&&void 0!==e?e:r&&s?null===(t=r[s])||void 0===t?void 0:t.toString():void 0}},{key:"defaultValueInput",get:function(){return"number"===this.slots.type?this.state.numberOfDays:this.getOffsetDate(this.state.numberOfDays,"YYYY-MM-DDTHH:mm:ss.sssZ")}},{key:"render",value:function(){var e,t=this;return n(u,{dateAdapter:d,children:l(N,{className:b,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(h,r({},this.mapTextFieldProps())),l("div",{className:x,children:[n(f,r(r({variant:"caption",className:C},{component:"label",htmlFor:this.id}),{},{sx:{color:this.state.switchChecked?"success.main":"#767676"},children:this.state.switchChecked?"Use Expiration Date":"No Expiration"})),n(m,{id:this.id,size:"small",color:"success",checked:this.state.switchChecked,onChange:function(e,a){return t.setState({switchChecked:a})}})]})]})})}}])}();return p}var N=c(p)(e(e(e(e(e({display:"flex",alignItems:"center",gap:"10px",position:"relative"},".".concat(O),{margin:0,flex:"0 0 auto"}),".".concat(k),{b:{color:"#1976d2",marginLeft:"8px"}}),".".concat(C),{fontWeight:600,cursor:"pointer"}),".".concat(x),{position:"absolute",top:0,right:0,height:"100%",display:"flex",alignItems:"center"}),".".concat(w),{".MuiInputBase-input":{paddingRight:"160px"}}));export{j as default};
|
|
2
2
|
//# sourceMappingURL=create.date-expired.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.date-expired.js","sources":["../../src/form/create.date-expired.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { LocalizationProvider } from '@mui/x-date-pickers'\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\r\nimport { Switch, Typography, TextField, styled, Box, TextFieldProps } from '@mui/material'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helper'\r\nimport { dayjsCustom, mergeObjects, tryParseIntRequired } from '../utils'\r\n\r\nconst defaultFormatString = 'MM-DD-YYYY'\r\n\r\nconst dateExpiredClasses = {\r\n root: 'DateExpired-root',\r\n control: 'DateExpired-control',\r\n label: 'DateExpired-label',\r\n labelSwitch: 'DateExpired-labelSwitch',\r\n input: 'DateExpired-input',\r\n switch: 'DateExpired-switch'\r\n}\r\n\r\nexport interface IDateExpiredSlots<T> {\r\n /** @default string */\r\n type?: 'number' | 'string'\r\n textFieldProps?: Partial<TextFieldProps>\r\n switchChecked?: boolean\r\n switchCheckedGetter?: (value: any, model?: Partial<T>) => boolean\r\n}\r\n\r\nexport interface IDateExpiredProps<T> extends IFormInputBase<T> {\r\n slots?: IDateExpiredSlots<T>\r\n}\r\n\r\nexport interface IDateExpiredState {\r\n numberOfDays: number\r\n switchChecked: boolean\r\n}\r\n\r\nfunction CreateDateExpired<T>(params?: IDateExpiredSlots<T>): React.ComponentType<IDateExpiredProps<T>> {\r\n class DateExpired extends Component<IDateExpiredProps<T>, IDateExpiredState> {\r\n defaultNumberOfDays: number = 30\r\n private id\r\n constructor(props: IDateExpiredProps<T>) {\r\n super(props)\r\n this.state = {\r\n numberOfDays: this.getNumberOfDays(),\r\n switchChecked: this.slots.switchChecked\r\n }\r\n this.id = new Date().getTime().toString()\r\n }\r\n\r\n get slots(): IDateExpiredSlots<T> & { switchChecked: boolean } {\r\n const { switchChecked, switchCheckedGetter } = this.props.slots ?? {}\r\n const obj = mergeObjects(params, this.props.slots)\r\n let check = (this.defaulValue ? !!this.defaulValue : switchChecked) ?? true\r\n if (switchCheckedGetter) check = switchCheckedGetter(this.defaulValue, this.props.data)\r\n return { ...obj, switchChecked: check }\r\n }\r\n\r\n get defaulValue(): string {\r\n const { data, name } = this.props\r\n return this.props.defaultValue ?? (!!data && !!name ? data[name]?.toString() : undefined)\r\n }\r\n\r\n get defaultValueInput(): string | number {\r\n if (this.slots.type === 'number') {\r\n return this.state.numberOfDays\r\n } else {\r\n return this.getOffsetDate(this.state.numberOfDays, 'YYYY-MM-DDTHH:mm:ss.sssZ')\r\n }\r\n }\r\n\r\n getNumberOfDays = (): number => {\r\n if (this.slots.type === 'number') {\r\n return tryParseIntRequired(this.defaulValue, this.defaultNumberOfDays)\r\n } else {\r\n return this.getDaysUntilDate(this.defaulValue, this.defaultNumberOfDays)\r\n }\r\n }\r\n\r\n //#region Render\r\n render() {\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterDayjs}>\r\n <Wrap className={dateExpiredClasses.root}>\r\n <input key={this.defaultValueInput} type='text' hidden name={this.props.name?.toString()} defaultValue={this.defaultValueInput} />\r\n <TextField {...this.mapTextFieldProps()} />\r\n <div className={dateExpiredClasses.control}>\r\n <Typography\r\n variant='caption'\r\n className={dateExpiredClasses.labelSwitch}\r\n {...{ component: 'label', htmlFor: this.id }}\r\n sx={{ color: this.state.switchChecked ? 'success.main' : '#767676' }}\r\n >\r\n {this.state.switchChecked ? 'Use Expiration Date' : 'No Expiration'}\r\n </Typography>\r\n <Switch\r\n id={this.id}\r\n size='small'\r\n color='success'\r\n checked={this.state.switchChecked}\r\n onChange={(_, checked) => this.setState({ switchChecked: checked })}\r\n />\r\n </div>\r\n </Wrap>\r\n </LocalizationProvider>\r\n )\r\n }\r\n //#endregion\r\n\r\n mapTextFieldProps = (): TextFieldProps => {\r\n const { messageErrors, name, onBlur } = this.props\r\n const disabled = this.props.disabled || !this.state.switchChecked\r\n const obj: TextFieldProps = {\r\n fullWidth: true,\r\n className: dateExpiredClasses.input,\r\n label: (\r\n <span className={dateExpiredClasses.label}>\r\n Expiry date\r\n {this.state.switchChecked && <b>{this.getOffsetDate(this.state.numberOfDays)}</b>}\r\n </span>\r\n ),\r\n variant: 'outlined',\r\n type: 'number',\r\n disabled: disabled,\r\n value: this.state.switchChecked ? this.state.numberOfDays : 0,\r\n onChange: this.handleChange\r\n }\r\n if (!!name) {\r\n obj.onBlur = () => onBlur && onBlur(name)\r\n const temp = getErrorMessage(messageErrors, name)\r\n if (temp.error) {\r\n obj.error = Boolean(temp.error)\r\n obj.helperText = temp.message ?? ''\r\n }\r\n }\r\n return mergeObjects<TextFieldProps>({}, obj, this.slots.textFieldProps)\r\n }\r\n\r\n handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n const numberOfDays: number = e.target.value != '' ? parseInt(e.target.value) : 0\r\n this.setState({ numberOfDays })\r\n }\r\n\r\n getOffsetDate = (num: number, formatString = defaultFormatString): string => {\r\n return dayjsCustom().add(num, 'day').format(formatString)\r\n }\r\n\r\n getDaysUntilDate = (value?: string, defaultValue = 0): number => {\r\n try {\r\n if (!value) return defaultValue\r\n const target = dayjsCustom(value)\r\n const today = dayjsCustom()\r\n const diff = target.diff(today, 'day', true)\r\n return Math.round(diff)\r\n } catch {\r\n return defaultValue\r\n }\r\n }\r\n }\r\n return DateExpired\r\n}\r\nexport default CreateDateExpired\r\n\r\nconst Wrap = styled(Box)({\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '10px',\r\n position: 'relative',\r\n [`.${dateExpiredClasses.switch}`]: {\r\n margin: 0,\r\n flex: '0 0 auto'\r\n },\r\n [`.${dateExpiredClasses.label}`]: {\r\n b: {\r\n color: '#1976d2',\r\n marginLeft: '8px'\r\n }\r\n },\r\n [`.${dateExpiredClasses.labelSwitch}`]: {\r\n fontWeight: 600,\r\n cursor: 'pointer'\r\n },\r\n [`.${dateExpiredClasses.control}`]: {\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n [`.${dateExpiredClasses.input}`]: {\r\n '.MuiInputBase-input': {\r\n paddingRight: '160px'\r\n }\r\n }\r\n})\r\n"],"names":["dateExpiredClasses","CreateDateExpired","params","DateExpired","props","_this","_classCallCheck","_callSuper","_defineProperty","slots","type","tryParseIntRequired","defaulValue","defaultNumberOfDays","getDaysUntilDate","_this$props","messageErrors","name","onBlur","disabled","state","switchChecked","obj","fullWidth","className","label","_jsxs","children","_jsx","getOffsetDate","numberOfDays","variant","value","onChange","handleChange","_temp$message","temp","getErrorMessage","error","Boolean","helperText","message","mergeObjects","textFieldProps","e","target","parseInt","setState","num","formatString","arguments","length","undefined","dayjsCustom","add","format","defaultValue","today","diff","Math","round","_unused","getNumberOfDays","id","Date","getTime","toString","_inherits","Component","_createClass","key","get","_this$props$slots","_ref2","_ref","this","switchCheckedGetter","check","data","_objectSpread","_this$props$defaultVa","_data$name","_this$props2","_this$props$name","_this2","LocalizationProvider","dateAdapter","AdapterDayjs","Wrap","hidden","defaultValueInput","TextField","mapTextFieldProps","Typography","component","htmlFor","sx","color","Switch","size","checked","_","styled","Box","display","alignItems","gap","position","concat","margin","flex","b","marginLeft","fontWeight","cursor","top","right","height","paddingRight"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.date-expired.js","sources":["../../src/form/create.date-expired.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { LocalizationProvider } from '@mui/x-date-pickers'\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\r\nimport { Switch, Typography, TextField, styled, Box, TextFieldProps } from '@mui/material'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helper'\r\nimport { dayjsCustom, mergeObjects, tryParseIntRequired } from '../utils'\r\n\r\nconst defaultFormatString = 'MM-DD-YYYY'\r\n\r\nconst dateExpiredClasses = {\r\n root: 'DateExpired-root',\r\n control: 'DateExpired-control',\r\n label: 'DateExpired-label',\r\n labelSwitch: 'DateExpired-labelSwitch',\r\n input: 'DateExpired-input',\r\n switch: 'DateExpired-switch'\r\n}\r\n\r\nexport interface IDateExpiredSlots<T> {\r\n /** @default string */\r\n type?: 'number' | 'string'\r\n textFieldProps?: Partial<TextFieldProps>\r\n switchChecked?: boolean\r\n switchCheckedGetter?: (value: any, model?: Partial<T>) => boolean\r\n}\r\n\r\nexport interface IDateExpiredProps<T> extends IFormInputBase<T> {\r\n slots?: IDateExpiredSlots<T>\r\n}\r\n\r\nexport interface IDateExpiredState {\r\n numberOfDays: number\r\n switchChecked: boolean\r\n}\r\n\r\nfunction CreateDateExpired<T>(params?: IDateExpiredSlots<T>): React.ComponentType<IDateExpiredProps<T>> {\r\n class DateExpired extends Component<IDateExpiredProps<T>, IDateExpiredState> {\r\n defaultNumberOfDays: number = 30\r\n private id\r\n constructor(props: IDateExpiredProps<T>) {\r\n super(props)\r\n this.state = {\r\n numberOfDays: this.getNumberOfDays(),\r\n switchChecked: this.slots.switchChecked\r\n }\r\n this.id = new Date().getTime().toString()\r\n }\r\n\r\n get slots(): IDateExpiredSlots<T> & { switchChecked: boolean } {\r\n const { switchChecked, switchCheckedGetter } = this.props.slots ?? {}\r\n const obj = mergeObjects(params, this.props.slots)\r\n let check = (this.defaulValue ? !!this.defaulValue : switchChecked) ?? true\r\n if (switchCheckedGetter) check = switchCheckedGetter(this.defaulValue, this.props.data)\r\n return { ...obj, switchChecked: check }\r\n }\r\n\r\n get defaulValue(): string {\r\n const { data, name } = this.props\r\n return this.props.defaultValue ?? (!!data && !!name ? data[name]?.toString() : undefined)\r\n }\r\n\r\n get defaultValueInput(): string | number {\r\n if (this.slots.type === 'number') {\r\n return this.state.numberOfDays\r\n } else {\r\n return this.getOffsetDate(this.state.numberOfDays, 'YYYY-MM-DDTHH:mm:ss.sssZ')\r\n }\r\n }\r\n\r\n getNumberOfDays = (): number => {\r\n if (this.slots.type === 'number') {\r\n return tryParseIntRequired(this.defaulValue, this.defaultNumberOfDays)\r\n } else {\r\n return this.getDaysUntilDate(this.defaulValue, this.defaultNumberOfDays)\r\n }\r\n }\r\n\r\n //#region Render\r\n render() {\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterDayjs}>\r\n <Wrap className={dateExpiredClasses.root}>\r\n <input key={this.defaultValueInput} type='text' hidden name={this.props.name?.toString()} defaultValue={this.defaultValueInput} />\r\n <TextField {...this.mapTextFieldProps()} />\r\n <div className={dateExpiredClasses.control}>\r\n <Typography\r\n variant='caption'\r\n className={dateExpiredClasses.labelSwitch}\r\n {...{ component: 'label', htmlFor: this.id }}\r\n sx={{ color: this.state.switchChecked ? 'success.main' : '#767676' }}\r\n >\r\n {this.state.switchChecked ? 'Use Expiration Date' : 'No Expiration'}\r\n </Typography>\r\n <Switch\r\n id={this.id}\r\n size='small'\r\n color='success'\r\n checked={this.state.switchChecked}\r\n onChange={(_, checked) => this.setState({ switchChecked: checked })}\r\n />\r\n </div>\r\n </Wrap>\r\n </LocalizationProvider>\r\n )\r\n }\r\n //#endregion\r\n\r\n mapTextFieldProps = (): TextFieldProps => {\r\n const { messageErrors, name, onBlur } = this.props\r\n const disabled = this.props.disabled || !this.state.switchChecked\r\n const obj: TextFieldProps = {\r\n fullWidth: true,\r\n className: dateExpiredClasses.input,\r\n label: (\r\n <span className={dateExpiredClasses.label}>\r\n Expiry date\r\n {this.state.switchChecked && <b>{this.getOffsetDate(this.state.numberOfDays)}</b>}\r\n </span>\r\n ),\r\n variant: 'outlined',\r\n type: 'number',\r\n disabled: disabled,\r\n value: this.state.switchChecked ? this.state.numberOfDays : 0,\r\n onChange: this.handleChange\r\n }\r\n if (!!name) {\r\n obj.onBlur = () => onBlur && onBlur(name)\r\n const temp = getErrorMessage(messageErrors, name)\r\n if (temp.error) {\r\n obj.error = Boolean(temp.error)\r\n obj.helperText = temp.message ?? ''\r\n }\r\n }\r\n return mergeObjects<TextFieldProps>({}, obj, this.slots.textFieldProps)\r\n }\r\n\r\n handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n const numberOfDays: number = e.target.value != '' ? parseInt(e.target.value) : 0\r\n this.setState({ numberOfDays })\r\n }\r\n\r\n getOffsetDate = (num: number, formatString = defaultFormatString): string => {\r\n return dayjsCustom().add(num, 'day').format(formatString)\r\n }\r\n\r\n getDaysUntilDate = (value?: string, defaultValue = 0): number => {\r\n try {\r\n if (!value) return defaultValue\r\n const target = dayjsCustom(value)\r\n const today = dayjsCustom()\r\n const diff = target.diff(today, 'day', true)\r\n return Math.round(diff)\r\n } catch {\r\n return defaultValue\r\n }\r\n }\r\n }\r\n return DateExpired\r\n}\r\nexport default CreateDateExpired\r\n\r\nconst Wrap = styled(Box)({\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '10px',\r\n position: 'relative',\r\n [`.${dateExpiredClasses.switch}`]: {\r\n margin: 0,\r\n flex: '0 0 auto'\r\n },\r\n [`.${dateExpiredClasses.label}`]: {\r\n b: {\r\n color: '#1976d2',\r\n marginLeft: '8px'\r\n }\r\n },\r\n [`.${dateExpiredClasses.labelSwitch}`]: {\r\n fontWeight: 600,\r\n cursor: 'pointer'\r\n },\r\n [`.${dateExpiredClasses.control}`]: {\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n [`.${dateExpiredClasses.input}`]: {\r\n '.MuiInputBase-input': {\r\n paddingRight: '160px'\r\n }\r\n }\r\n})\r\n"],"names":["dateExpiredClasses","CreateDateExpired","params","DateExpired","props","_this","_classCallCheck","_callSuper","_defineProperty","slots","type","tryParseIntRequired","defaulValue","defaultNumberOfDays","getDaysUntilDate","_this$props","messageErrors","name","onBlur","disabled","state","switchChecked","obj","fullWidth","className","label","_jsxs","children","_jsx","getOffsetDate","numberOfDays","variant","value","onChange","handleChange","_temp$message","temp","getErrorMessage","error","Boolean","helperText","message","mergeObjects","textFieldProps","e","target","parseInt","setState","num","formatString","arguments","length","undefined","dayjsCustom","add","format","defaultValue","today","diff","Math","round","_unused","getNumberOfDays","id","Date","getTime","toString","_inherits","Component","_createClass","key","get","_this$props$slots","_ref2","_ref","this","switchCheckedGetter","check","data","_objectSpread","_this$props$defaultVa","_data$name","_this$props2","_this$props$name","_this2","LocalizationProvider","dateAdapter","AdapterDayjs","Wrap","hidden","defaultValueInput","TextField","mapTextFieldProps","Typography","component","htmlFor","sx","color","Switch","size","checked","_","styled","Box","display","alignItems","gap","position","concat","margin","flex","b","marginLeft","fontWeight","cursor","top","right","height","paddingRight"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as t,createClass as e,objectSpread2 as r,classCallCheck as o,callSuper as a,defineProperty as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as s,jsx as n}from"react/jsx-runtime";import{Component as i}from"react";import{styled as u}from"@mui/material";import{AdapterDayjs as p}from"@mui/x-date-pickers/AdapterDayjs";import{DatePicker as d,LocalizationProvider as m}from"@mui/x-date-pickers";import{getErrorMessage as f}from"./helper.js";import{mergeObjects as c}from"../utils/helpers.js";import"../utils/
|
|
1
|
+
import{inherits as t,createClass as e,objectSpread2 as r,classCallCheck as o,callSuper as a,defineProperty as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as s,jsx as n}from"react/jsx-runtime";import{Component as i}from"react";import{styled as u}from"@mui/material";import{AdapterDayjs as p}from"@mui/x-date-pickers/AdapterDayjs";import{DatePicker as d,LocalizationProvider as m}from"@mui/x-date-pickers";import{getErrorMessage as f}from"./helper.js";import{mergeObjects as c}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import v from"dayjs";var h=function(u){return function(){function d(t){var e,r;return o(this,d),r=a(this,d,[t]),l(r,"_cachedSlots",{}),l(r,"getDatePickerProps",(function(){var t,e,o,a,l,s=null!==(t=null==u?void 0:u.minDateOffset)&&void 0!==t?t:0,n=s>0?v().add(s,"day").startOf("day"):null==u?void 0:u.minDate,i=null!==(e=r.props.label)&&void 0!==e?e:null===(o=r.props.name)||void 0===o?void 0:o.toString(),p=null!==(a=r.props.format)&&void 0!==a?a:"MM/DD/YYYY",d=f(r.props.messageErrors,r.props.name),m={label:i,format:p,views:["day","month","year"],value:r.state.value,onChange:r.handleChange,disabled:r.props.disabled,minDate:n,slotProps:{textField:{onBlur:r.handleBlur,fullWidth:!0,error:d.error,helperText:d.message,variant:"outlined"}}};return c(m,null==u?void 0:u.datePickerProps,null===(l=r.slots)||void 0===l?void 0:l.datePickerProps)})),l(r,"refInput",null),l(r,"mergeSlots",(function(t){return c({},u,t)})),l(r,"handleBlur",(function(){r.props.name&&r.props.onBlur&&r.props.onBlur(r.props.name)})),l(r,"handleChange",(function(t){r.setState({value:t}),r.refInput&&(r.refInput.value=t&&!isNaN(t.toDate().getTime())?t.toDate().toISOString():""),setTimeout(r.handleBlur,50)})),l(r,"getDefaultValue",(function(){try{var t,e;if(!r.props.defaultValue&&!r.slots.defaultValue&&r.slots.minDateOffset)return v().add(1,"day").startOf("day");if(!r.props.defaultValue&&r.slots.minDate)return r.slots.minDate;var o=r.props,a=o.data,l=o.name,s=null!==(t=null!==(e=r.props.defaultValue)&&void 0!==e?e:r.slots.defaultValue)&&void 0!==t?t:l?null==a?void 0:a[l]:"";return s?v(s.toString()):v()}catch(t){return v()}})),r._cachedSlots=null!==(e=r.mergeSlots(t.slots))&&void 0!==e?e:{},r.state={value:r.getDefaultValue()},r}return t(d,i),e(d,[{key:"slots",get:function(){return this._cachedSlots}},{key:"componentDidUpdate",value:function(t){t.slots!==this.props.slots&&(this._cachedSlots=this.mergeSlots(this.props.slots))}},{key:"render",value:function(){var t,e,o=this;return s(m,{dateAdapter:p,children:[n(g,r({},this.getDatePickerProps())),n("input",{hidden:!0,name:null===(t=this.props.name)||void 0===t?void 0:t.toString(),defaultValue:null===(e=this.getDefaultValue())||void 0===e?void 0:e.toDate().toISOString(),ref:function(t){return o.refInput=t}})]})}}])}()},g=u(d)({"& .MuiInputBase-root::before, & .MuiInputBase-root::after":{borderBottom:"none !important"}});export{h as default};
|
|
2
2
|
//# sourceMappingURL=create.date-picker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.date-picker.js","sources":["../../src/form/create.date-picker.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Dayjs } from 'dayjs'\r\nimport { styled } from '@mui/material'\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\r\nimport { DatePicker as MUIDatePicker, LocalizationProvider, DatePickerProps } from '@mui/x-date-pickers'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helper'\r\nimport { dayjsCustom, mergeObjects } from '../utils'\r\n\r\nconst formatDefault = 'MM/DD/YYYY'\r\n\r\nexport interface IDatePickerSlots {\r\n defaultValue?: string\r\n minDate?: Dayjs\r\n minDateOffset?: number\r\n datePickerProps?: DatePickerProps<Dayjs>\r\n}\r\n\r\nexport interface IDatePickerProps<T> extends IFormInputBase<T> {\r\n format?: string\r\n slots?: Omit<IDatePickerSlots, 'defaultValue'>\r\n}\r\n\r\nexport interface IDatePickerState {\r\n value: Dayjs | null\r\n}\r\n\r\nconst CreateDatePicker = function <T extends Object>(params?: IDatePickerSlots): ComponentType<IDatePickerProps<T>> {\r\n class DatePicker extends Component<IDatePickerProps<T>, IDatePickerState> {\r\n private _cachedSlots: IDatePickerSlots = {}\r\n constructor(props: IDatePickerProps<T>) {\r\n super(props)\r\n this._cachedSlots = this.mergeSlots(props.slots) ?? {}\r\n this.state = { value: this.getDefaultValue() }\r\n }\r\n\r\n get slots() {\r\n return this._cachedSlots\r\n }\r\n\r\n componentDidUpdate(prevProps: IDatePickerProps<T>) {\r\n if (prevProps.slots !== this.props.slots) {\r\n this._cachedSlots = this.mergeSlots(this.props.slots)\r\n }\r\n }\r\n\r\n getDatePickerProps = (): DatePickerProps<Dayjs> => {\r\n const delayInDays = params?.minDateOffset ?? 0\r\n const minDate = delayInDays > 0 ? dayjsCustom().add(delayInDays, 'day').startOf('day') : params?.minDate\r\n const label = this.props.label ?? this.props.name?.toString()\r\n const format = this.props.format ?? formatDefault\r\n const eMessage = getErrorMessage<T>(this.props.messageErrors, this.props.name)\r\n const obj: DatePickerProps<Dayjs> = {\r\n label,\r\n format,\r\n views: ['day', 'month', 'year'],\r\n value: this.state.value,\r\n onChange: this.handleChange,\r\n disabled: this.props.disabled,\r\n minDate,\r\n slotProps: {\r\n textField: { onBlur: this.handleBlur, fullWidth: true, error: eMessage.error, helperText: eMessage.message, variant: 'outlined' }\r\n }\r\n }\r\n return mergeObjects(obj, params?.datePickerProps, this.slots?.datePickerProps)\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n render() {\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterDayjs}>\r\n <CustomDatePicker {...this.getDatePickerProps()} />\r\n <input\r\n hidden\r\n name={this.props.name?.toString()}\r\n defaultValue={this.getDefaultValue()?.toDate().toISOString()}\r\n ref={(ref) => (this.refInput = ref)}\r\n />\r\n </LocalizationProvider>\r\n )\r\n }\r\n\r\n private mergeSlots = (currentSlots?: IDatePickerSlots): IDatePickerSlots => {\r\n return mergeObjects<IDatePickerSlots>({}, params, currentSlots)\r\n }\r\n\r\n handleBlur = () => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }\r\n\r\n handleChange = (newValue: Dayjs | null) => {\r\n this.setState({ value: newValue })\r\n if (this.refInput) {\r\n this.refInput.value = newValue && !isNaN(newValue.toDate().getTime()) ? newValue.toDate().toISOString() : ''\r\n }\r\n setTimeout(this.handleBlur, 50)\r\n }\r\n\r\n getDefaultValue = (): Dayjs => {\r\n try {\r\n if (!this.props.defaultValue && !this.slots.defaultValue && this.slots.minDateOffset) return dayjsCustom().add(1, 'day').startOf('day')\r\n if (!this.props.defaultValue && this.slots.minDate) return this.slots.minDate\r\n\r\n const { data, name } = this.props\r\n const dValue = this.props.defaultValue ?? this.slots.defaultValue ?? (name ? data?.[name] : '')\r\n return dValue ? dayjsCustom(dValue.toString()) : dayjsCustom()\r\n } catch {\r\n return dayjsCustom()\r\n }\r\n }\r\n }\r\n return DatePicker\r\n}\r\n\r\nexport default CreateDatePicker\r\n\r\nconst CustomDatePicker = styled(MUIDatePicker<Dayjs>)({\r\n '& .MuiInputBase-root::before, & .MuiInputBase-root::after': {\r\n borderBottom: 'none !important'\r\n }\r\n})\r\n"],"names":["CreateDatePicker","params","DatePicker","props","_this$mergeSlots","_this","_classCallCheck","_callSuper","_defineProperty","_params$minDateOffset","_this$props$label","_this$props$name","_this$props$format","_this$slots","delayInDays","minDateOffset","minDate","dayjsCustom","add","startOf","label","name","toString","format","eMessage","getErrorMessage","messageErrors","obj","views","value","state","onChange","handleChange","disabled","slotProps","textField","onBlur","handleBlur","fullWidth","error","helperText","message","variant","mergeObjects","datePickerProps","slots","currentSlots","newValue","setState","refInput","isNaN","toDate","getTime","toISOString","setTimeout","_ref","_this$props$defaultVa","defaultValue","_this$props","data","dValue","_unused","_cachedSlots","mergeSlots","getDefaultValue","_inherits","Component","_createClass","key","get","this","prevProps","_this$props$name2","_this$getDefaultValue","_this2","_jsxs","LocalizationProvider","dateAdapter","AdapterDayjs","children","_jsx","CustomDatePicker","_objectSpread","getDatePickerProps","hidden","ref","styled","MUIDatePicker","borderBottom"],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.date-picker.js","sources":["../../src/form/create.date-picker.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Dayjs } from 'dayjs'\r\nimport { styled } from '@mui/material'\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\r\nimport { DatePicker as MUIDatePicker, LocalizationProvider, DatePickerProps } from '@mui/x-date-pickers'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helper'\r\nimport { dayjsCustom, mergeObjects } from '../utils'\r\n\r\nconst formatDefault = 'MM/DD/YYYY'\r\n\r\nexport interface IDatePickerSlots {\r\n defaultValue?: string\r\n minDate?: Dayjs\r\n minDateOffset?: number\r\n datePickerProps?: DatePickerProps<Dayjs>\r\n}\r\n\r\nexport interface IDatePickerProps<T> extends IFormInputBase<T> {\r\n format?: string\r\n slots?: Omit<IDatePickerSlots, 'defaultValue'>\r\n}\r\n\r\nexport interface IDatePickerState {\r\n value: Dayjs | null\r\n}\r\n\r\nconst CreateDatePicker = function <T extends Object>(params?: IDatePickerSlots): ComponentType<IDatePickerProps<T>> {\r\n class DatePicker extends Component<IDatePickerProps<T>, IDatePickerState> {\r\n private _cachedSlots: IDatePickerSlots = {}\r\n constructor(props: IDatePickerProps<T>) {\r\n super(props)\r\n this._cachedSlots = this.mergeSlots(props.slots) ?? {}\r\n this.state = { value: this.getDefaultValue() }\r\n }\r\n\r\n get slots() {\r\n return this._cachedSlots\r\n }\r\n\r\n componentDidUpdate(prevProps: IDatePickerProps<T>) {\r\n if (prevProps.slots !== this.props.slots) {\r\n this._cachedSlots = this.mergeSlots(this.props.slots)\r\n }\r\n }\r\n\r\n getDatePickerProps = (): DatePickerProps<Dayjs> => {\r\n const delayInDays = params?.minDateOffset ?? 0\r\n const minDate = delayInDays > 0 ? dayjsCustom().add(delayInDays, 'day').startOf('day') : params?.minDate\r\n const label = this.props.label ?? this.props.name?.toString()\r\n const format = this.props.format ?? formatDefault\r\n const eMessage = getErrorMessage<T>(this.props.messageErrors, this.props.name)\r\n const obj: DatePickerProps<Dayjs> = {\r\n label,\r\n format,\r\n views: ['day', 'month', 'year'],\r\n value: this.state.value,\r\n onChange: this.handleChange,\r\n disabled: this.props.disabled,\r\n minDate,\r\n slotProps: {\r\n textField: { onBlur: this.handleBlur, fullWidth: true, error: eMessage.error, helperText: eMessage.message, variant: 'outlined' }\r\n }\r\n }\r\n return mergeObjects(obj, params?.datePickerProps, this.slots?.datePickerProps)\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n render() {\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterDayjs}>\r\n <CustomDatePicker {...this.getDatePickerProps()} />\r\n <input\r\n hidden\r\n name={this.props.name?.toString()}\r\n defaultValue={this.getDefaultValue()?.toDate().toISOString()}\r\n ref={(ref) => (this.refInput = ref)}\r\n />\r\n </LocalizationProvider>\r\n )\r\n }\r\n\r\n private mergeSlots = (currentSlots?: IDatePickerSlots): IDatePickerSlots => {\r\n return mergeObjects<IDatePickerSlots>({}, params, currentSlots)\r\n }\r\n\r\n handleBlur = () => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }\r\n\r\n handleChange = (newValue: Dayjs | null) => {\r\n this.setState({ value: newValue })\r\n if (this.refInput) {\r\n this.refInput.value = newValue && !isNaN(newValue.toDate().getTime()) ? newValue.toDate().toISOString() : ''\r\n }\r\n setTimeout(this.handleBlur, 50)\r\n }\r\n\r\n getDefaultValue = (): Dayjs => {\r\n try {\r\n if (!this.props.defaultValue && !this.slots.defaultValue && this.slots.minDateOffset) return dayjsCustom().add(1, 'day').startOf('day')\r\n if (!this.props.defaultValue && this.slots.minDate) return this.slots.minDate\r\n\r\n const { data, name } = this.props\r\n const dValue = this.props.defaultValue ?? this.slots.defaultValue ?? (name ? data?.[name] : '')\r\n return dValue ? dayjsCustom(dValue.toString()) : dayjsCustom()\r\n } catch {\r\n return dayjsCustom()\r\n }\r\n }\r\n }\r\n return DatePicker\r\n}\r\n\r\nexport default CreateDatePicker\r\n\r\nconst CustomDatePicker = styled(MUIDatePicker<Dayjs>)({\r\n '& .MuiInputBase-root::before, & .MuiInputBase-root::after': {\r\n borderBottom: 'none !important'\r\n }\r\n})\r\n"],"names":["CreateDatePicker","params","DatePicker","props","_this$mergeSlots","_this","_classCallCheck","_callSuper","_defineProperty","_params$minDateOffset","_this$props$label","_this$props$name","_this$props$format","_this$slots","delayInDays","minDateOffset","minDate","dayjsCustom","add","startOf","label","name","toString","format","eMessage","getErrorMessage","messageErrors","obj","views","value","state","onChange","handleChange","disabled","slotProps","textField","onBlur","handleBlur","fullWidth","error","helperText","message","variant","mergeObjects","datePickerProps","slots","currentSlots","newValue","setState","refInput","isNaN","toDate","getTime","toISOString","setTimeout","_ref","_this$props$defaultVa","defaultValue","_this$props","data","dValue","_unused","_cachedSlots","mergeSlots","getDefaultValue","_inherits","Component","_createClass","key","get","this","prevProps","_this$props$name2","_this$getDefaultValue","_this2","_jsxs","LocalizationProvider","dateAdapter","AdapterDayjs","children","_jsx","CustomDatePicker","_objectSpread","getDatePickerProps","hidden","ref","styled","MUIDatePicker","borderBottom"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as r,createClass as t,classCallCheck as e,callSuper as n,defineProperty as o,asyncToGenerator as i,regeneratorRuntime as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,jsxs as s}from"react/jsx-runtime";import{Component as c}from"react";import{styled as u,Button as p,Box as d,Card as
|
|
1
|
+
import{inherits as r,createClass as t,classCallCheck as e,callSuper as n,defineProperty as o,asyncToGenerator as i,regeneratorRuntime as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,jsxs as s}from"react/jsx-runtime";import{Component as c}from"react";import{styled as u,Button as p,Box as d,Card as m,DialogTitle as f,DialogContent as h,DialogActions as v}from"@mui/material";import{fetchDelay as g}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import"../api-context/alert-global.js";import"../api-context/drawer-global.js";import{mapGlobalModalContext as x}from"../api-context/global-modal.js";var C=function(u){var p=function(){function p(r){var t;return e(this,p),t=n(this,p,[r]),o(t,"handleClickNo",(function(r){r.close(),t.props.onCancel&&t.props.onCancel()})),o(t,"handleClickYes",function(){var r=i(l().mark((function r(e){return l().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(t.props.onSubmit){r.next=2;break}return r.abrupt("return");case 2:return r.prev=2,t.setState({loading:!0}),r.next=6,g((function(){return t.props.onSubmit(t.props.data)}),700);case 6:e.close(),r.next=12;break;case 9:r.prev=9,r.t0=r.catch(2),console.log(r.t0);case 12:return r.prev=12,t.setState({loading:!1}),r.finish(12);case 15:case"end":return r.stop()}}),r,null,[[2,9,12,15]])})));return function(t){return r.apply(this,arguments)}}()),t.state={loading:!1},t}return r(p,c),t(p,[{key:"render",value:function(){var r,t,e=this,n=this.props.children||(null!=u&&u.content?null==u?void 0:u.content(this.props.data):void 0),o=null!==(r=null!==(t=this.props.title)&&void 0!==t?t:null==u?void 0:u.title)&&void 0!==r?r:"Are you sure?";return a(d,{sx:{flex:1,display:"flex",alignItems:"center",justifyContent:"center"},children:x((function(r){var t,i;return s(m,{children:[a(f,{id:"alert-dialog-title",children:o}),a(h,{sx:{minWidth:"300px"},children:n}),s(v,{children:[a(b,{disabled:e.state.loading,color:(null==u||null===(t=u.colors)||void 0===t?void 0:t.no)||"inherit",onClick:function(){return e.handleClickNo(r)},children:"No"}),a(b,{color:(null==u||null===(i=u.colors)||void 0===i?void 0:i.yes)||"error",disabled:e.state.loading,onClick:function(){return e.handleClickYes(r)},children:"Yes"})]})]})}))})}}])}();return p},b=u(p)({textTransform:"capitalize",fontWeight:600,"&.MuiButton-colorInherit":{color:"#606060!important"}});export{C as default};
|
|
2
2
|
//# sourceMappingURL=create.form-comfirm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.form-comfirm.js","sources":["../../src/form/create.form-comfirm.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, Button, Card, DialogActions, DialogContent, DialogTitle, styled } from '@mui/material'\r\nimport { fetchDelay } from '../utils'\r\nimport { IGlobalModalContext,
|
|
1
|
+
{"version":3,"file":"create.form-comfirm.js","sources":["../../src/form/create.form-comfirm.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, Button, Card, DialogActions, DialogContent, DialogTitle, styled } from '@mui/material'\r\nimport { fetchDelay } from '../utils'\r\nimport { IGlobalModalContext, mapGlobalModalContext } from '../api-context'\r\n\r\nexport interface IFormComfirmParam<T> {\r\n title?: string\r\n content: (value?: T) => JSX.Element\r\n colors?: {\r\n yes?: 'inherit' | 'error' | 'primary' | 'secondary' | 'success' | 'info' | 'warning'\r\n no?: 'inherit' | 'error' | 'primary' | 'secondary' | 'success' | 'info' | 'warning'\r\n }\r\n}\r\n\r\nexport interface IFormComfirmProps<T> {\r\n data?: T\r\n title?: string\r\n onSubmit: (value?: T) => Promise<void>\r\n onCancel?: () => void\r\n}\r\n\r\nexport interface IFormComfirmState {\r\n loading?: boolean\r\n}\r\n\r\nconst CreateFormComfirm = function <T = any>(param?: IFormComfirmParam<T>): ComponentType<React.PropsWithChildren<IFormComfirmProps<T>>> {\r\n class FormConfirm extends Component<React.PropsWithChildren<IFormComfirmProps<T>>, IFormComfirmState> {\r\n constructor(props: IFormComfirmProps<T>) {\r\n super(props)\r\n this.state = { loading: false }\r\n }\r\n\r\n render() {\r\n const content = this.props.children || (param?.content ? param?.content(this.props.data) : undefined)\r\n const title = this.props.title ?? param?.title ?? 'Are you sure?'\r\n return (\r\n <Box sx={{ flex: 1, display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\r\n {mapGlobalModalContext((context) => (\r\n <Card>\r\n <DialogTitle id='alert-dialog-title'>{title}</DialogTitle>\r\n <DialogContent sx={{ minWidth: '300px' }}>{content}</DialogContent>\r\n <DialogActions>\r\n <CustomButton disabled={this.state.loading} color={param?.colors?.no || 'inherit'} onClick={() => this.handleClickNo(context)}>\r\n No\r\n </CustomButton>\r\n <CustomButton color={param?.colors?.yes || 'error'} disabled={this.state.loading} onClick={() => this.handleClickYes(context)}>\r\n Yes\r\n </CustomButton>\r\n </DialogActions>\r\n </Card>\r\n ))}\r\n </Box>\r\n )\r\n }\r\n\r\n handleClickNo = (context: IGlobalModalContext) => {\r\n context.close()\r\n this.props.onCancel && this.props.onCancel()\r\n }\r\n\r\n handleClickYes = async (context: IGlobalModalContext) => {\r\n if (!this.props.onSubmit) return\r\n try {\r\n this.setState({ loading: true })\r\n await fetchDelay(() => this.props.onSubmit(this.props.data), 700)\r\n context.close()\r\n } catch (error) {\r\n console.log(error)\r\n } finally {\r\n this.setState({ loading: false })\r\n }\r\n }\r\n }\r\n return FormConfirm\r\n}\r\nexport default CreateFormComfirm\r\n\r\nconst CustomButton = styled(Button)({\r\n textTransform: 'capitalize',\r\n fontWeight: 600,\r\n '&.MuiButton-colorInherit': {\r\n color: '#606060!important'\r\n }\r\n})\r\n"],"names":["CreateFormComfirm","param","FormConfirm","props","_this","_classCallCheck","_callSuper","_defineProperty","context","close","onCancel","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","onSubmit","abrupt","setState","loading","fetchDelay","data","t0","console","log","finish","stop","_x","apply","this","arguments","state","_inherits","Component","_createClass","key","value","_ref2","_this$props$title","_this2","content","children","undefined","title","_jsx","Box","sx","flex","display","alignItems","justifyContent","mapGlobalModalContext","_param$colors","_param$colors2","_jsxs","Card","DialogTitle","id","DialogContent","minWidth","DialogActions","CustomButton","disabled","color","colors","no","onClick","handleClickNo","yes","handleClickYes","styled","Button","textTransform","fontWeight"],"mappings":"4qBAyBA,IAAMA,EAAoB,SAAmBC,GAA4B,IACjEC,aACJ,SAAAA,EAAYC,GAA2B,IAAAC,EAEN,OAFMC,OAAAH,GACrCE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EA2BE,iBAAA,SAACI,GACfA,EAAQC,QACRL,EAAKD,MAAMO,UAAYN,EAAKD,MAAMO,cACnCH,EAAAH,EAAA,iBAAA,WAAA,IAAAO,EAAAC,EAAAC,IAAAC,MAEgB,SAAAC,EAAOP,GAA4B,OAAAK,IAAAG,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,GAC7Cf,EAAKD,MAAMiB,SAAQ,CAAAH,EAAAE,KAAA,EAAA,KAAA,CAAA,OAAAF,EAAAI,OAAA,UAAA,KAAA,EAEU,OAFVJ,EAAAC,KAAA,EAEtBd,EAAKkB,SAAS,CAAEC,SAAS,IAAON,EAAAE,KAAA,EAC1BK,GAAW,WAAA,OAAMpB,EAAKD,MAAMiB,SAAShB,EAAKD,MAAMsB,KAAK,GAAE,KAAI,KAAA,EACjEjB,EAAQC,QAAOQ,EAAAE,KAAA,GAAA,MAAA,KAAA,EAAAF,EAAAC,KAAA,EAAAD,EAAAS,GAAAT,EAAA,MAAA,GAEfU,QAAQC,IAAGX,EAAAS,IAAO,KAAA,GAEe,OAFfT,EAAAC,KAAA,GAElBd,EAAKkB,SAAS,CAAEC,SAAS,IAAQN,EAAAY,OAAA,IAAA,KAAA,GAAA,IAAA,MAAA,OAAAZ,EAAAa,OAAA,GAAAf,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,GAAA,UAEpC,OAAA,SAAAgB,GAAA,OAAApB,EAAAqB,MAAAC,KAAAC,UAAA,CAAA,CAbA,IA7BC9B,EAAK+B,MAAQ,CAAEZ,SAAS,GAAOnB,CACjC,CAAC,OAAAgC,EAAAlC,EAJuBmC,GAIvBC,EAAApC,EAAA,CAAA,CAAAqC,IAAA,SAAAC,MAED,WAAM,IAAAC,EAAAC,EAAAC,EAAAV,KACEW,EAAUX,KAAK9B,MAAM0C,WAAa5C,SAAAA,EAAO2C,QAAU3C,aAAK,EAALA,EAAO2C,QAAQX,KAAK9B,MAAMsB,WAAQqB,GACrFC,EAAwC,QAAnCN,EAAmB,QAAnBC,EAAGT,KAAK9B,MAAM4C,aAAK,IAAAL,EAAAA,EAAIzC,aAAK,EAALA,EAAO8C,aAAK,IAAAN,EAAAA,EAAI,gBAClD,OACEO,EAACC,EAAG,CAACC,GAAI,CAAEC,KAAM,EAAGC,QAAS,OAAQC,WAAY,SAAUC,eAAgB,UACxET,SAAAU,GAAsB,SAAC/C,GAAO,IAAAgD,EAAAC,EAAA,OAC7BC,EAACC,EACC,CAAAd,SAAA,CAAAG,EAACY,EAAW,CAACC,GAAG,qBAAoBhB,SAAEE,IACtCC,EAACc,EAAc,CAAAZ,GAAI,CAAEa,SAAU,kBAAYnB,IAC3Cc,EAACM,EAAa,CAAAnB,SAAA,CACZG,EAACiB,GAAaC,SAAUvB,EAAKR,MAAMZ,QAAS4C,OAAOlE,iBAAKuD,EAALvD,EAAOmE,cAAM,IAAAZ,OAAA,EAAbA,EAAea,KAAM,UAAWC,QAAS,WAAF,OAAQ3B,EAAK4B,cAAc/D,EAAQ,EAAAqC,SAAA,OAG7HG,EAACiB,EAAY,CAACE,OAAOlE,iBAAKwD,EAALxD,EAAOmE,cAAM,IAAAX,OAAA,EAAbA,EAAee,MAAO,QAASN,SAAUvB,EAAKR,MAAMZ,QAAS+C,QAAS,WAAF,OAAQ3B,EAAK8B,eAAejE,EAAQ,EAE9GqC,SAAA,aAGpB,KAGP,IAAC,IAoBH,OAAO3C,CACT,EAGM+D,EAAeS,EAAOC,EAAPD,CAAe,CAClCE,cAAe,aACfC,WAAY,IACZ,2BAA4B,CAC1BV,MAAO"}
|