dinocollab-core 2.2.10 → 2.2.13
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/README.md +0 -22
- package/dist/data-surface/index.js +1 -1
- package/dist/filter-bar/index.js +1 -1
- package/dist/src/data-surface/index.create.js +1 -1
- package/dist/src/data-surface/index.create.js.map +1 -1
- package/dist/src/data-surface/index.dino.js +1 -1
- package/dist/src/data-surface/index.dino.js.map +1 -1
- package/dist/src/data-surface/types.js +1 -1
- package/dist/src/data-surface/types.js.map +1 -1
- package/dist/src/data-surface/ui.units.js +1 -1
- package/dist/src/data-surface/view-grid/hooks.js +1 -1
- package/dist/src/data-surface/view-grid/hooks.js.map +1 -1
- package/dist/src/data-surface/view-grid/index.js +1 -1
- package/dist/src/data-surface/view-grid/index.js.map +1 -1
- package/dist/src/data-surface/view-grid/styleds.js +1 -1
- package/dist/src/data-surface/view-grid/styleds.js.map +1 -1
- package/dist/src/data-surface/view-list/hooks.js +1 -1
- package/dist/src/data-surface/view-list/hooks.js.map +1 -1
- package/dist/src/data-surface/view-list/index.js +1 -1
- package/dist/src/data-surface/view-list/index.js.map +1 -1
- package/dist/src/data-surface/view-list/styled.js +1 -1
- package/dist/src/data-surface/view-list/styled.js.map +1 -1
- package/dist/src/data-surface/view-list/types.js.map +1 -1
- package/dist/src/data-surface/view-switch-transition.js.map +1 -1
- package/dist/src/filter-bar/components/chip-viewer.js +1 -1
- package/dist/src/filter-bar/components/chip-viewer.js.map +1 -1
- package/dist/src/filter-bar/components/filter-sort.js +1 -1
- package/dist/src/filter-bar/components/filter-sort.js.map +1 -1
- package/dist/src/filter-bar/components/filter-summary.js +1 -1
- package/dist/src/filter-bar/components/filter-summary.js.map +1 -1
- package/dist/src/filter-bar/components/{units.js → icons.js} +1 -1
- package/dist/src/filter-bar/components/{units.js.map → icons.js.map} +1 -1
- package/dist/src/filter-bar/components/popper-custom.js +1 -1
- package/dist/src/filter-bar/components/popper-custom.js.map +1 -1
- package/dist/src/filter-bar/components/ui.units.js +2 -0
- package/dist/src/filter-bar/components/ui.units.js.map +1 -0
- package/dist/src/filter-bar/convert-to-graphql.js +1 -1
- package/dist/src/filter-bar/convert-to-graphql.js.map +1 -1
- package/dist/src/filter-bar/index.create.js +1 -1
- package/dist/src/filter-bar/index.create.js.map +1 -1
- package/dist/src/filter-bar/index.dino.js +1 -1
- package/dist/src/filter-bar/index.dino.js.map +1 -1
- package/dist/src/filter-bar/local-filter-builder.js +2 -0
- package/dist/src/filter-bar/local-filter-builder.js.map +1 -0
- package/dist/src/filter-bar/menu/create-form-field-select-multiple.js +2 -0
- package/dist/src/filter-bar/menu/create-form-field-select-multiple.js.map +1 -0
- package/dist/src/filter-bar/menu/create-form-field-select.js +2 -0
- package/dist/src/filter-bar/menu/create-form-field-select.js.map +1 -0
- package/dist/src/filter-bar/menu/create-form-field-string.js +2 -0
- package/dist/src/filter-bar/menu/create-form-field-string.js.map +1 -0
- package/dist/src/filter-bar/menu/create.js +2 -0
- package/dist/src/filter-bar/menu/create.js.map +1 -0
- package/dist/src/form/create.form-base.js +1 -1
- package/dist/src/form/create.text-editor.js +1 -1
- package/dist/src/form/helpers.js +1 -1
- package/dist/src/table/create.table.js +1 -1
- package/dist/src/table/csv-export-helper.js +2 -0
- package/dist/src/table/csv-export-helper.js.map +1 -0
- package/dist/src/table/custom.export-button.js +2 -0
- package/dist/src/table/custom.export-button.js.map +1 -0
- package/dist/src/table/dino.js +1 -1
- package/dist/src/table/dino.js.map +1 -1
- package/dist/src/table/toolbar-pannel.js +1 -1
- package/dist/src/table/toolbar-pannel.js.map +1 -1
- package/dist/src/utils/helpers.js +1 -1
- package/dist/types/data-surface/index.create.d.ts +22 -6
- package/dist/types/data-surface/index.dino.d.ts +2 -0
- package/dist/types/data-surface/types.d.ts +5 -0
- package/dist/types/data-surface/view-grid/hooks.d.ts +6 -0
- package/dist/types/data-surface/view-grid/styleds.d.ts +2 -0
- package/dist/types/data-surface/view-grid/types.d.ts +17 -3
- package/dist/types/data-surface/view-list/hooks.d.ts +6 -0
- package/dist/types/data-surface/view-list/styled.d.ts +2 -0
- package/dist/types/data-surface/view-list/types.d.ts +17 -3
- package/dist/types/data-surface/view-switch-transition.d.ts +1 -1
- package/dist/types/filter-bar/components/chip-viewer.d.ts +1 -3
- package/dist/types/filter-bar/components/popper-custom.d.ts +2 -2
- package/dist/types/filter-bar/components/ui.units.d.ts +22 -0
- package/dist/types/filter-bar/convert-to-graphql.d.ts +8 -0
- package/dist/types/filter-bar/index.create.d.ts +1 -1
- package/dist/types/filter-bar/index.d.ts +1 -0
- package/dist/types/filter-bar/index.dino.d.ts +8 -1
- package/dist/types/filter-bar/local-filter-builder.d.ts +39 -0
- package/dist/types/filter-bar/menu/create-form-field-select-multiple.d.ts +13 -0
- package/dist/types/filter-bar/menu/create-form-field-select.d.ts +17 -0
- package/dist/types/filter-bar/menu/create-form-field-string.d.ts +10 -0
- package/dist/types/filter-bar/{components/filter-menu.d.ts → menu/create.d.ts} +2 -2
- package/dist/types/filter-bar/{components/filter-menu.types.d.ts → menu/types.d.ts} +6 -1
- package/dist/types/table/csv-export-helper.d.ts +20 -0
- package/dist/types/table/custom.export-button.d.ts +8 -0
- package/dist/types/table/dino.d.ts +1 -0
- package/dist/types/table/index.d.ts +1 -0
- package/dist/types/table/toolbar-pannel.d.ts +2 -0
- package/package.json +1 -1
- package/dist/src/filter-bar/components/filter-menu.js +0 -2
- package/dist/src/filter-bar/components/filter-menu.js.map +0 -1
- package/dist/src/filter-bar/components/filter-menu.units.js +0 -2
- package/dist/src/filter-bar/components/filter-menu.units.js.map +0 -1
- package/dist/types/filter-bar/components/filter-menu.units.d.ts +0 -18
- /package/dist/types/filter-bar/components/{units.d.ts → icons.d.ts} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{slicedToArray as e}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as l,jsxs as i}from"react/jsx-runtime";import{useMemo as r,useState as o,createRef as n}from"react";import{styled as t,TextField as a,Button as s,Box as u}from"@mui/material";import{createChipViewers as c}from"../components/chip-viewer.js";import{getErrorMessage as m,convertFormDataToJson as v}from"../../form/helpers.js";import{ButtonBack as d,ChipDark as p,FilterLogicToggle as f}from"../components/ui.units.js";import{PopperContent as b,PopperBody as g,PopperFooter as h}from"../components/popper-custom.js";function y(t){var y=c();return function(c){var C,j=r(function(){return Object.assign({},c.currentConfig,null==t?void 0:t.config)},[null==t?void 0:t.config,c.currentConfig]),z=n(),A=c.value,k=void 0===A?{values:[],logic:"or"}:A,T=o(k.logic),B=e(T,2),F=B[0],R=B[1],S=null!==(C=null==j?void 0:j.label)&&void 0!==C?C:j.field.toString(),w=o({}),I=e(w,2),V=I[0],D=I[1],E=function(e){c.onSubmit(j.field,e,j)},H=m(V,j.field),L=r(function(){var e=Array.isArray(k.values)?k.values:[k.values];return{field:j.field,items:e.map(function(e){return{value:e}})}},[j.field,k]),M=[];return c.isLoading&&M.push("disabled"),l(x,{className:M.join(" "),noValidate:!0,onSubmit:function(e){var l;e.preventDefault(),e.stopPropagation();var i=new FormData(e.currentTarget),r=v(i),o=null===(l=c.validator)||void 0===l?void 0:l.run(r);if(D(o||{}),!o||0===Object.keys(o).length){var n=j.field,t=Array.isArray(r[n])?r[n]:[r[n]];E({values:t,logic:F}),z.current&&(z.current.blur(),z.current.value="")}},children:i(b,{title:"Filter by ".concat(S),onClose:c.onClose,slots:{beforeTitle:l(d,{size:"small",onClick:c.onBack}),afterTitle:j.singleValue?l(p,{sx:{ml:1.5},size:"small",label:"Last value only"}):!k.values||k.values.length<2?null:l(f,{sx:{ml:1},value:F,onChange:function(e,l){return function(e){R(e);var l={values:k.values,logic:e};E(l)}(l)}})},children:[i(g,{children:[l(y,{sx:{mb:1,borderBottom:"none!important"},label:"Applied",placement:"horizontal",enableMinimalesticView:!0,value:L,onRemove:c.onRemove}),l(a,{inputRef:z,autoFocus:!0,name:j.field.toString(),size:"small",fullWidth:!0,placeholder:"Enter value",error:H.error,helperText:H.message,sx:{".MuiInputBase-root":{minHeight:"42px"}}})]}),i(h,{children:[l(s,{size:"small",color:"error",variant:"text",disabled:!k.values||0===k.values.length,onClick:function(){var e;null===(e=c.onRemoveField)||void 0===e||e.call(c,j.field)},children:"Clear All"}),l(u,{sx:{flex:1}}),l(s,{size:"small",color:"inherit",variant:"text",onClick:c.onClose,children:"Cancel"}),l(s,{size:"small",type:"submit",color:"primary",variant:"contained",children:"Apply"})]})]})})}}var x=t("form")({position:"relative","&::after":{content:'""',display:"block",position:"absolute",inset:0,backgroundColor:"rgba(0, 0, 0, 0.2)",filter:"blur(2px)",zIndex:-1,opacity:0,transition:"opacity 0.3s",visibility:"hidden"},"&.disabled":{pointerEvents:"none","&::after":{zIndex:1,opacity:1,visibility:"visible"}}});export{y as default};
|
|
2
|
+
//# sourceMappingURL=create-form-field-string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-form-field-string.js","sources":["../../../../src/filter-bar/menu/create-form-field-string.tsx"],"sourcesContent":["// Copyright (c) 2024-present, Dinocollab Technologies, Inc. and its affiliates. All rights reserved.\r\n\r\n// imports\r\nimport { createRef, useMemo, useState } from 'react'\r\nimport { Box, Button, styled, TextField } from '@mui/material'\r\nimport { createChipViewers } from '../components/chip-viewer'\r\nimport { convertFormDataToJson, getErrorMessage } from '../../form/helpers'\r\nimport { ButtonBack, ChipDark, FilterLogicToggle } from '../components/ui.units'\r\nimport { PopperBody, PopperContent, PopperFooter } from '../components/popper-custom'\r\n// types\r\nimport type { FC } from 'react'\r\nimport type { IPartialError } from '../../form/validator'\r\nimport type { TChipViewerGroup } from '../components/chip-viewer'\r\nimport type { IFieldMenuConfig, IFilterMenuFormProps } from './types'\r\nimport type { TFieldModelValid, TFieldValid, TFieldValue, TLogic } from '../types'\r\n\r\nexport interface IFormFieldStringProps<T> extends IFilterMenuFormProps<T> {}\r\n\r\nexport interface IFormFieldStringParam<T> {\r\n /** Optional configuration for the form field */\r\n config?: IFieldMenuConfig<T>\r\n}\r\n\r\nfunction createFormFieldString<T>(params?: IFormFieldStringParam<T>) {\r\n const ChipViewers = createChipViewers<T>()\r\n\r\n const FormFieldString: FC<IFormFieldStringProps<T>> = (props) => {\r\n /** Merge `props.currentConfig` with `params.config` (if provided).\r\n * Fields from `params.config` override the corresponding keys in `props.currentConfig`.\r\n * Any keys not present in `params.config` are preserved from `props.currentConfig`.\r\n */\r\n const mergedConfig = useMemo(() => Object.assign({}, props.currentConfig, params?.config), [params?.config, props.currentConfig])\r\n\r\n const refInput = createRef<HTMLInputElement>()\r\n const { value = { values: [], logic: 'or' } } = props\r\n const [filterLogic, setFilterLogic] = useState<TLogic>(value.logic!)\r\n\r\n const label = mergedConfig?.label ?? mergedConfig.field.toString()\r\n\r\n const [errorData, setErrorData] = useState<IPartialError<TFieldModelValid<T>>>({})\r\n\r\n const handleSubmit = (newValue: TFieldValue) => {\r\n props.onSubmit(mergedConfig.field, newValue, mergedConfig)\r\n }\r\n\r\n const handleSubmitForm = (event: React.FormEvent<HTMLFormElement>) => {\r\n event.preventDefault() // Prevent default form submission behavior\r\n event.stopPropagation() // Stop the event from bubbling up to parent elements (like Popper) which might cause it to close prematurely\r\n const formData = new FormData(event.currentTarget)\r\n const obj = convertFormDataToJson<TFieldModelValid<T>>(formData)\r\n let errorData = props.validator?.run(obj) as IPartialError<TFieldModelValid<T>>\r\n\r\n setErrorData(errorData || {})\r\n\r\n if (!errorData || Object.keys(errorData).length === 0) {\r\n const { field } = mergedConfig\r\n const newValues = (Array.isArray(obj[field]) ? obj[field] : [obj[field]]) as TFieldValid[]\r\n const newValue: TFieldValue = { values: newValues, logic: filterLogic }\r\n handleSubmit(newValue)\r\n\r\n if (refInput.current) {\r\n refInput.current.blur()\r\n refInput.current.value = ''\r\n }\r\n }\r\n }\r\n\r\n const error = getErrorMessage(errorData, mergedConfig.field)\r\n\r\n const filterViewerValue = useMemo<TChipViewerGroup<T>>(() => {\r\n const items = Array.isArray(value.values) ? value.values : [value.values]\r\n return { field: mergedConfig.field, items: items.map((v) => ({ value: v })) }\r\n }, [mergedConfig.field, value])\r\n\r\n const handleChangeLogic = (newLogic: TLogic) => {\r\n setFilterLogic(newLogic)\r\n const newValue: TFieldValue = { values: value.values, logic: newLogic }\r\n handleSubmit(newValue)\r\n }\r\n\r\n const handleClearAll = () => {\r\n props.onRemoveField?.(mergedConfig.field)\r\n }\r\n\r\n const renderAfterTitle = () => {\r\n if (mergedConfig.singleValue) return <ChipDark sx={{ ml: 1.5 }} size='small' label='Last value only' />\r\n if (!value.values || value.values.length < 2) return null\r\n return <FilterLogicToggle sx={{ ml: 1 }} value={filterLogic} onChange={(_, nVal) => handleChangeLogic(nVal)} />\r\n }\r\n\r\n const rootClasses: string[] = []\r\n if (props.isLoading) rootClasses.push('disabled')\r\n\r\n return (\r\n <RootStyled className={rootClasses.join(' ')} noValidate onSubmit={handleSubmitForm}>\r\n <PopperContent\r\n title={`Filter by ${label}`}\r\n onClose={props.onClose}\r\n slots={{\r\n beforeTitle: <ButtonBack size='small' onClick={props.onBack} />,\r\n afterTitle: renderAfterTitle()\r\n }}\r\n >\r\n <PopperBody>\r\n <ChipViewers\r\n sx={{ mb: 1, borderBottom: 'none!important' }}\r\n label='Applied'\r\n placement='horizontal'\r\n enableMinimalesticView\r\n value={filterViewerValue}\r\n onRemove={props.onRemove}\r\n />\r\n <TextField\r\n inputRef={refInput}\r\n autoFocus\r\n name={mergedConfig.field.toString()}\r\n size='small'\r\n fullWidth\r\n placeholder='Enter value'\r\n error={error.error}\r\n helperText={error.message}\r\n sx={{ '.MuiInputBase-root': { minHeight: '42px' } }}\r\n />\r\n </PopperBody>\r\n <PopperFooter>\r\n <Button size='small' color='error' variant='text' disabled={!value.values || value.values.length === 0} onClick={handleClearAll}>\r\n Clear All\r\n </Button>\r\n <Box sx={{ flex: 1 }} />\r\n <Button size='small' color='inherit' variant='text' onClick={props.onClose}>\r\n Cancel\r\n </Button>\r\n <Button size='small' type='submit' color='primary' variant='contained'>\r\n Apply\r\n </Button>\r\n </PopperFooter>\r\n </PopperContent>\r\n </RootStyled>\r\n )\r\n }\r\n\r\n return FormFieldString\r\n}\r\n\r\nexport default createFormFieldString\r\n\r\nconst RootStyled = styled('form')({\r\n position: 'relative',\r\n '&::after': {\r\n content: '\"\"',\r\n display: 'block',\r\n position: 'absolute',\r\n inset: 0, // top: 0, left: 0, right: 0, bottom: 0\r\n backgroundColor: 'rgba(0, 0, 0, 0.2)',\r\n filter: 'blur(2px)',\r\n zIndex: -1,\r\n opacity: 0,\r\n transition: 'opacity 0.3s',\r\n visibility: 'hidden'\r\n },\r\n '&.disabled': {\r\n pointerEvents: 'none',\r\n '&::after': {\r\n zIndex: 1,\r\n opacity: 1,\r\n visibility: 'visible'\r\n }\r\n }\r\n})\r\n"],"names":["createFormFieldString","params","ChipViewers","createChipViewers","props","_mergedConfig$label","mergedConfig","useMemo","Object","assign","currentConfig","config","refInput","createRef","_props$value","value","values","logic","_useState","useState","_useState2","_slicedToArray","filterLogic","setFilterLogic","label","field","toString","_useState3","_useState4","errorData","setErrorData","handleSubmit","newValue","onSubmit","error","getErrorMessage","filterViewerValue","items","Array","isArray","map","v","rootClasses","isLoading","push","_jsx","RootStyled","className","join","noValidate","event","_props$validator","preventDefault","stopPropagation","formData","FormData","currentTarget","obj","convertFormDataToJson","validator","run","keys","length","newValues","current","blur","children","_jsxs","PopperContent","title","concat","onClose","slots","beforeTitle","ButtonBack","size","onClick","onBack","afterTitle","singleValue","ChipDark","sx","ml","FilterLogicToggle","onChange","_","nVal","newLogic","handleChangeLogic","PopperBody","mb","borderBottom","placement","enableMinimalesticView","onRemove","TextField","inputRef","autoFocus","name","fullWidth","placeholder","helperText","message","minHeight","PopperFooter","Button","color","variant","disabled","_props$onRemoveField","onRemoveField","call","Box","flex","type","styled","position","content","display","inset","backgroundColor","filter","zIndex","opacity","transition","visibility","pointerEvents"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{defineProperty as e,objectWithoutProperties as n,objectSpread2 as r,slicedToArray as t,asyncToGenerator as o,regenerator as i}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as l,jsxs as a}from"react/jsx-runtime";import{useState as u,useContext as c,useMemo as s,createRef as m}from"react";import{styled as d,Box as f,MenuList as p,Tooltip as v,IconButton as h,Badge as b,MenuItem as g,Typography as y,Button as j}from"@mui/material";import F from"@mui/icons-material/FilterList";import C from"@mui/material/ClickAwayListener";import{KeySpecial as k}from"../types.js";import{useFilterActions as I}from"../hooks.js";import{FilterBarContext as x}from"../index.context.js";import{mapSpecialLabel as S,mapSpecialTexts as w}from"../helpers.js";import{SingleRuleValidate as P,FormValidator as R}from"../../form/validator.js";import{PopperCustom as q,PopperContent as T,PopperFooter as A}from"../components/popper-custom.js";import{FilterMenuNoField as B}from"../components/ui.units.js";import O from"./create-form-field-string.js";var M=["fields","validation","enableQuickSearch"];function D(d){var f=L,p=function(e){var t=e.fields,o=e.validation,i=e.enableQuickSearch,l=void 0===i||i,a=n(e,M),u=k.quickSearch,c=r({},t);if(l){var s=c[u],m=null!=s&&s.label?s.label:S[u],d=Object.assign({},c[u],{field:u,label:m,singleValue:!0});c[u]=d}else delete c[u];var f=Object.keys(c),p=f.reduce(function(e,n){var t=c[n];return t?(e[n]=r(r({},t),{},{field:n}),e):e},{}),v=r({},o);return f.forEach(function(e){var n,r,t,o=v[e],i=null!==(n=null!==(r=null==o?void 0:o.label)&&void 0!==r?r:null===(t=c[e])||void 0===t?void 0:t.label)&&void 0!==n?n:e.toString();o?o.Rules.some(function(e){return e.rule===P.Required})||(o.label=i,o.Rules.push({rule:P.Required})):v[e]={Rules:[{rule:P.Required}],label:i}}),r(r({},a),{},{fields:p,validation:v,enableQuickSearch:l})}(d),D=function(n){return Object.keys(n.fields).reduce(function(r,t){var o,i=t,l=null===(o=n.validation)||void 0===o?void 0:o[i];return l&&(r[i]=new R(e({},i,l))),r},{})}(p),V=function(e){var n=e.fields;return Object.keys(n).reduce(function(e,r){var t,o=r,i=n[o];return i&&(e[o]=null!==(t=i.FormComponent)&&void 0!==t?t:O()),e},{})}(p),z=d.quickSearchHint;return function(e){var n=m(),S=u(null),P=t(S,2),R=P[0],O=P[1],M=Boolean(R),L=c(x),E=I(L),H=u(null),_=t(H,2),G=_[0],W=_[1],J=s(function(){var n=d.popperProps,r=d.rootProps;return Object.assign({},{popperProps:n,rootProps:r},e.slots)},[d,e.slots]),K=function(){O(null),setTimeout(function(){W(null)},300)},U=function(){E.clearAllFilters(),K()},X=function(){var e=o(i().m(function e(n,r,t){return i().w(function(e){for(;;)switch(e.n){case 0:if(r){e.n=1;break}return e.a(2);case 1:null!=t&&t.singleValue?E.replaceFilter(n,r,{logic:r.logic}):E.upsertManyFilter(n,r,{logic:r.logic});case 2:return e.a(2)}},e)}));return function(n,r,t){return e.apply(this,arguments)}}(),Y=s(function(){var e=Object.values(p.fields);return Array.from(e)},[p.fields]),Z=E.getTotalCount(),$="".concat(Z," Filter").concat(1!==Z?"s":"");return l(C,{onClickAway:K,children:a(N,r(r({className:f.root},J.rootProps),{},{children:[l(v,{title:$,arrow:!0,placement:"top",children:l(h,{size:"small",ref:n,onClick:function(){W(null),O(n.current)},children:l(b,{badgeContent:Z,color:"primary",invisible:0===Z,children:l(F,{fontSize:"small"})})})}),l(q,r(r({open:M,anchorEl:R,placement:"bottom",transition:!0,disablePortal:!0},J.popperProps),{},{children:function(){if(0===Y.length)return l(B,{onClose:K});var e=G?p.fields[G]:void 0;if(G&&e){var n,t=V[G];if(!t)return null;var o=r({},e);null!=o&&o.FormComponent&&delete o.FormComponent;var i=null===(n=L.filterState.storeFilter)||void 0===n?void 0:n[G];return l(t,{currentConfig:o,value:i,isLoading:L.isLoading,onRemove:E.removeFilterByFieldValue,validator:D[G],onSubmit:X,onClose:K,onRemoveField:function(e){return E.removeFilter(e)},onBack:function(){return W(null)}})}return a(T,{title:"Filter by",onClose:K,children:[l(Q,{className:f.menu,children:Y.map(function(e){var n,r,t=e.field.toString();if(!t)return null;var o=E.getFieldInfo(e.field),i=null!==(n=null==o?void 0:o.values.join(", "))&&void 0!==n?n:"",u=o?o.values.length:0,c=u>0?" (".concat(u,")"):"",s=null!==(r=e.label)&&void 0!==r?r:t.toString(),m=u>0?"Filter by ".concat(s,": ").concat(i):void 0;if(e.field===k.quickSearch){var d=w.qsTooltip;m="function"==typeof z?z(d):null!=z?z:d}return l(g,{className:f.menuItem,sx:{justifyContent:"space-between"},onClick:function(){return n=e.field,void W(n);var n},children:l(v,{title:m,placement:"right",arrow:!0,children:a("div",{className:f.menuItemInner,children:[l(y,{variant:"body2",children:s}),l(y,{variant:"caption",sx:{ml:1,color:"text.secondary"},children:c})]})})},t)})}),l(A,{children:l(j,{color:"error",disabled:0===Z,onClick:U,children:"Clear All"})})]})}()}))]}))})}}var L={root:"DinoFilterMenu-root",menu:"DinoFilterMenu-menu",menuItem:"DinoFilterMenu-menuItem",menuItemInner:"DinoFilterMenu-menuItemInner"},N=d(f)(e({},"&.".concat(L.root),{display:"inline-flex",justifyContent:"center",alignItems:"center",flex:"0 0 auto"})),Q=d(p)(e(e({},".".concat(L.menuItem),{paddingTop:0,paddingBottom:0}),".".concat(L.menuItemInner),{display:"flex",justifyContent:"space-between",alignItems:"center",width:"100%",gap:"4px",paddingTop:"6px",paddingBottom:"6px"}));export{D as createFilterMenu,L as filterMenuClasses};
|
|
2
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sources":["../../../../src/filter-bar/menu/create.tsx"],"sourcesContent":["// Copyright (c) 2024-present, Dinocollab Technologies, Inc. and its affiliates. All rights reserved.\r\n\r\n// imports\r\nimport { createRef, useContext, useMemo, useState } from 'react'\r\nimport { Badge, Box, Button, IconButton, MenuItem, MenuList, styled, Tooltip, Typography } from '@mui/material'\r\nimport FilterListIcon from '@mui/icons-material/FilterList'\r\nimport ClickAwayListener from '@mui/material/ClickAwayListener'\r\nimport { KeySpecial } from '../types'\r\nimport { useFilterActions } from '../hooks'\r\nimport { FilterBarContext } from '../index.context'\r\nimport { mapSpecialLabel, mapSpecialTexts } from '../helpers'\r\nimport { FormValidator, SingleRuleValidate } from '../../form/validator'\r\nimport { PopperContent, PopperCustom, PopperFooter } from '../components/popper-custom'\r\nimport { FilterMenuNoField } from '../components/ui.units'\r\nimport createFormFieldString from './create-form-field-string'\r\n// types\r\nimport type { FC } from 'react'\r\nimport type { IFilterBarContext } from '../index.context'\r\nimport type { TFieldModelValid, TFieldType, TFieldValue } from '../types'\r\nimport type { IConfigValue, IFormValidatorConfig } from '../../form/validator'\r\nimport type { IFilterMenuConfigInternal, TFieldMenuConfigsInternal } from './types'\r\nimport type { IFilterMenuProps, IFilterMenuSlots, TFieldMenuConfigs } from './types'\r\nimport type { IFieldMenuConfig, IFilterMenuConfig, IFilterMenuFormProps } from './types'\r\n\r\nfunction generateValidatorMap<T>(config: IFilterMenuConfig<T>) {\r\n const keys = Object.keys(config.fields) as TFieldType<T>[]\r\n const validateMaps = keys.reduce(\r\n (acc, key) => {\r\n const fieldKey = key as TFieldType<T>\r\n const fieldConfig = config.validation?.[fieldKey]\r\n if (fieldConfig) {\r\n acc[fieldKey] = new FormValidator({ [fieldKey]: fieldConfig } as IFormValidatorConfig<Partial<TFieldModelValid<T>>>)\r\n }\r\n return acc\r\n },\r\n {} as Record<TFieldType<T>, FormValidator<Partial<TFieldModelValid<T>>>>\r\n )\r\n return validateMaps\r\n}\r\n\r\nfunction generateFormInputMap<T>(config: IFilterMenuConfig<T>) {\r\n const { fields } = config\r\n const keys = Object.keys(fields) as TFieldType<T>[]\r\n const formInputMaps = keys.reduce(\r\n (acc, key) => {\r\n const fieldKey = key as TFieldType<T>\r\n const fieldConfig = fields[fieldKey] as IFieldMenuConfig<T>\r\n if (fieldConfig) {\r\n acc[fieldKey] = fieldConfig.FormComponent ?? createFormFieldString()\r\n }\r\n return acc\r\n },\r\n {} as Record<TFieldType<T>, React.ComponentType<IFilterMenuFormProps<T>>>\r\n )\r\n return formInputMaps\r\n}\r\n\r\nfunction generateConfigs<T>(config: IFilterMenuConfig<T>): IFilterMenuConfigInternal<T> {\r\n const { fields, validation, enableQuickSearch = true, ...rest } = config\r\n const qsKey = KeySpecial.quickSearch\r\n\r\n // Merge quick search field if enabled\r\n const mergedFields: TFieldMenuConfigs<T> = { ...fields }\r\n if (enableQuickSearch) {\r\n const item = mergedFields[qsKey]\r\n const label = item?.label ? item.label : mapSpecialLabel[qsKey]\r\n const temp = Object.assign({}, mergedFields[qsKey], { field: qsKey, label, singleValue: true })\r\n mergedFields[qsKey] = temp\r\n } else {\r\n delete mergedFields[qsKey]\r\n }\r\n\r\n const keys = Object.keys(mergedFields) as TFieldType<T>[]\r\n const finalFields = keys.reduce<TFieldMenuConfigsInternal<T>>((acc, key) => {\r\n const fieldConfig = mergedFields[key]\r\n if (!fieldConfig) return acc\r\n acc[key] = { ...fieldConfig, field: key }\r\n return acc\r\n }, {} as TFieldMenuConfigsInternal<T>)\r\n\r\n // Merge validation config with default required rule\r\n const mergedValidation: IFormValidatorConfig<Partial<TFieldModelValid<T>>> = { ...validation }\r\n keys.forEach((key) => {\r\n const item: IConfigValue<Partial<TFieldModelValid<T>>> | undefined = mergedValidation[key]\r\n const label = item?.label ?? mergedFields[key]?.label ?? key.toString()\r\n if (!item) {\r\n mergedValidation[key] = { Rules: [{ rule: SingleRuleValidate.Required }], label }\r\n } else if (!item.Rules.some((r) => r.rule === SingleRuleValidate.Required)) {\r\n item.label = label\r\n item.Rules.push({ rule: SingleRuleValidate.Required })\r\n }\r\n })\r\n\r\n return { ...rest, fields: finalFields, validation: mergedValidation, enableQuickSearch }\r\n}\r\n\r\nexport function createFilterMenu<T>(config: IFilterMenuConfig<T>) {\r\n const classes = filterMenuClasses\r\n const mergedConfigs = generateConfigs(config)\r\n const validateMaps = generateValidatorMap(mergedConfigs)\r\n const formInputMaps = generateFormInputMap(mergedConfigs)\r\n const quickSearchHint = config.quickSearchHint\r\n\r\n // Component\r\n const FilterMenu: FC<IFilterMenuProps<T>> = (props) => {\r\n const refButton = createRef<HTMLButtonElement>()\r\n\r\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\r\n const isOpen = Boolean(anchorEl)\r\n\r\n const context = useContext(FilterBarContext) as IFilterBarContext<T>\r\n const filterActions = useFilterActions<T>(context)\r\n\r\n const [fieldSelected, setFieldSelected] = useState<TFieldType<T> | null>(null)\r\n\r\n const mergedSlots = useMemo<IFilterMenuSlots>(() => {\r\n const { popperProps, rootProps } = config\r\n return Object.assign({}, { popperProps, rootProps }, props.slots)\r\n }, [config, props.slots])\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null)\r\n setTimeout(() => {\r\n setFieldSelected(null)\r\n }, 300)\r\n }\r\n\r\n const handleOpen = () => {\r\n setFieldSelected(null)\r\n setAnchorEl(refButton.current)\r\n }\r\n\r\n const handleMenuItemClick = (field: TFieldType<T>) => {\r\n setFieldSelected(field)\r\n }\r\n\r\n const handleClearAll = () => {\r\n filterActions.clearAllFilters()\r\n handleClose()\r\n }\r\n\r\n const handleSubmit = async (key: TFieldType<T>, value?: TFieldValue, config?: IFieldMenuConfig<T>) => {\r\n if (!value) return\r\n if (config?.singleValue) {\r\n filterActions.replaceFilter(key, value, { logic: value.logic })\r\n } else {\r\n filterActions.upsertManyFilter(key, value, { logic: value.logic })\r\n }\r\n }\r\n\r\n const data = useMemo(() => {\r\n const keys = Object.values(mergedConfigs.fields)\r\n return Array.from(keys) as IFieldMenuConfig<T>[]\r\n }, [mergedConfigs.fields])\r\n\r\n const renderContent = () => {\r\n if (data.length === 0) {\r\n return <FilterMenuNoField onClose={handleClose} />\r\n }\r\n const currentConfig = fieldSelected ? mergedConfigs.fields[fieldSelected] : undefined\r\n\r\n if (fieldSelected && currentConfig) {\r\n const FormComponent = formInputMaps[fieldSelected] as React.ComponentType<IFilterMenuFormProps<T>>\r\n if (!FormComponent) return null\r\n\r\n const config: IFieldMenuConfig<T> = { ...currentConfig }\r\n // Remove FormComponent from config before passing to form, as it's not needed there and can cause unnecessary re-renders\r\n if (config?.FormComponent) delete config.FormComponent\r\n\r\n const value = context.filterState.storeFilter?.[fieldSelected]\r\n return (\r\n <FormComponent\r\n currentConfig={config}\r\n value={value}\r\n isLoading={context.isLoading}\r\n onRemove={filterActions.removeFilterByFieldValue}\r\n validator={validateMaps[fieldSelected]}\r\n onSubmit={handleSubmit}\r\n onClose={handleClose}\r\n onRemoveField={(f) => filterActions.removeFilter(f)}\r\n onBack={() => setFieldSelected(null)}\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <PopperContent title='Filter by' onClose={handleClose}>\r\n <MenuListCustom className={classes.menu}>\r\n {data.map((item) => {\r\n const key = item.field.toString()\r\n if (!key) return null\r\n const info = filterActions.getFieldInfo(item.field)\r\n const note = info?.values.join(', ') ?? ''\r\n const fieldCount = info ? info.values.length : 0\r\n const suffix = fieldCount > 0 ? ` (${fieldCount})` : ''\r\n const label = item.label ?? key.toString()\r\n let tooltipTitle = fieldCount > 0 ? `Filter by ${label}: ${note}` : undefined\r\n if (item.field === KeySpecial.quickSearch) {\r\n const txt = mapSpecialTexts.qsTooltip\r\n tooltipTitle = typeof quickSearchHint === 'function' ? quickSearchHint(txt) : (quickSearchHint ?? txt)\r\n }\r\n return (\r\n <MenuItem\r\n key={key}\r\n className={classes.menuItem}\r\n sx={{ justifyContent: 'space-between' }}\r\n onClick={() => handleMenuItemClick(item.field)}\r\n >\r\n <Tooltip title={tooltipTitle} placement='right' arrow>\r\n <div className={classes.menuItemInner}>\r\n <Typography variant='body2'>{label}</Typography>\r\n <Typography variant='caption' sx={{ ml: 1, color: 'text.secondary' }}>\r\n {suffix}\r\n </Typography>\r\n </div>\r\n </Tooltip>\r\n </MenuItem>\r\n )\r\n })}\r\n </MenuListCustom>\r\n <PopperFooter>\r\n <Button color='error' disabled={filterCount === 0} onClick={handleClearAll}>\r\n Clear All\r\n </Button>\r\n </PopperFooter>\r\n </PopperContent>\r\n )\r\n }\r\n\r\n const filterCount = filterActions.getTotalCount()\r\n const iconTitle = `${filterCount} Filter${filterCount !== 1 ? 's' : ''}`\r\n return (\r\n <ClickAwayListener onClickAway={handleClose}>\r\n <FilterInputStyled className={classes.root} {...mergedSlots.rootProps}>\r\n <Tooltip title={iconTitle} arrow placement='top'>\r\n <IconButton size='small' ref={refButton} onClick={handleOpen}>\r\n <Badge badgeContent={filterCount} color='primary' invisible={filterCount === 0}>\r\n <FilterListIcon fontSize='small' />\r\n </Badge>\r\n </IconButton>\r\n </Tooltip>\r\n <PopperCustom open={isOpen} anchorEl={anchorEl} placement='bottom' transition disablePortal {...mergedSlots.popperProps}>\r\n {renderContent()}\r\n </PopperCustom>\r\n </FilterInputStyled>\r\n </ClickAwayListener>\r\n )\r\n }\r\n return FilterMenu\r\n}\r\n\r\n// styles\r\nexport const filterMenuClasses = {\r\n root: 'DinoFilterMenu-root',\r\n input: 'DinoFilterMenu-input',\r\n beforeInput: 'DinoFilterMenu-beforeInput',\r\n menu: 'DinoFilterMenu-menu',\r\n menuItem: 'DinoFilterMenu-menuItem',\r\n menuItemInner: 'DinoFilterMenu-menuItemInner'\r\n}\r\n\r\nconst FilterInputStyled = styled(Box)({\r\n [`&.${filterMenuClasses.root}`]: {\r\n display: 'inline-flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n flex: '0 0 auto'\r\n }\r\n})\r\n\r\nconst MenuListCustom = styled(MenuList)({\r\n [`.${filterMenuClasses.menuItem}`]: {\r\n paddingTop: 0,\r\n paddingBottom: 0\r\n },\r\n [`.${filterMenuClasses.menuItemInner}`]: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n width: '100%',\r\n gap: '4px',\r\n paddingTop: '6px',\r\n paddingBottom: '6px'\r\n }\r\n})\r\n"],"names":["createFilterMenu","config","classes","filterMenuClasses","mergedConfigs","fields","validation","_config$enableQuickSe","enableQuickSearch","rest","_objectWithoutProperties","_excluded","qsKey","KeySpecial","quickSearch","mergedFields","_objectSpread","item","label","mapSpecialLabel","temp","Object","assign","field","singleValue","keys","finalFields","reduce","acc","key","fieldConfig","mergedValidation","forEach","_ref","_item$label","_mergedFields$key","toString","Rules","some","r","rule","SingleRuleValidate","Required","push","generateConfigs","validateMaps","_config$validation","fieldKey","FormValidator","_defineProperty","generateValidatorMap","formInputMaps","_fieldConfig$FormComp","FormComponent","createFormFieldString","generateFormInputMap","quickSearchHint","props","refButton","createRef","_useState","useState","_useState2","_slicedToArray","anchorEl","setAnchorEl","isOpen","Boolean","context","useContext","FilterBarContext","filterActions","useFilterActions","_useState3","_useState4","fieldSelected","setFieldSelected","mergedSlots","useMemo","popperProps","rootProps","slots","handleClose","setTimeout","handleClearAll","clearAllFilters","handleSubmit","_ref2","_asyncToGenerator","_regenerator","m","_callee","value","w","_context","n","a","replaceFilter","logic","upsertManyFilter","_x","_x2","_x3","apply","this","arguments","data","values","Array","from","filterCount","getTotalCount","iconTitle","concat","_jsx","ClickAwayListener","onClickAway","children","_jsxs","FilterInputStyled","className","root","Tooltip","title","arrow","placement","IconButton","size","ref","onClick","current","Badge","badgeContent","color","invisible","FilterListIcon","fontSize","PopperCustom","open","transition","disablePortal","length","FilterMenuNoField","onClose","currentConfig","undefined","_context$filterState$","filterState","storeFilter","isLoading","onRemove","removeFilterByFieldValue","validator","onSubmit","onRemoveField","f","removeFilter","onBack","PopperContent","MenuListCustom","menu","map","_info$values$join","_item$label2","info","getFieldInfo","note","join","fieldCount","suffix","tooltipTitle","txt","mapSpecialTexts","qsTooltip","MenuItem","menuItem","sx","justifyContent","menuItemInner","Typography","variant","ml","PopperFooter","Button","disabled","renderContent","styled","Box","display","alignItems","flex","MenuList","paddingTop","paddingBottom","width","gap"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as r,createClass as e,objectSpread2 as t,classCallCheck as a,callSuper as o,defineProperty as s,asyncToGenerator as n,regenerator as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i}from"react/jsx-runtime";import{Box as u}from"@mui/material";import{createContext as m,Component as c}from"react";import{validateMerge as f,
|
|
1
|
+
import{inherits as r,createClass as e,objectSpread2 as t,classCallCheck as a,callSuper as o,defineProperty as s,asyncToGenerator as n,regenerator as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i}from"react/jsx-runtime";import{Box as u}from"@mui/material";import{createContext as m,Component as c}from"react";import{validateMerge as f,convertFormDataToJson as p,trimAllStrings as d,singleValidate as v,getErrorCommonFromResponse as E,getErrorFromResponse as g}from"./helpers.js";import{FormValidator as S,SingleRuleValidate as h}from"./validator.js";import{ApiAlertContext as b}from"../api-context/alert-global.js";var j=function(j){var A=m({setModelState:function(){},messageErrors:{},onBlur:function(){},setError:function(){},removeError:function(){},clearErrorAll:function(){}}),C=function(){function m(r){var e;return a(this,m),e=o(this,m,[r]),s(e,"refForm",null),s(e,"mapContext",function(){var r=e,t=r.setError,a=r.removeError,o=r.setModelState,s=r.clearErrorAll,n=r.onBlur,l=e.state;return{modelState:l.modelState,messageErrors:l.messageErrors,setError:t,onBlur:n,clearErrorAll:s,setModelState:o,removeError:a}}),s(e,"setModelState",function(r){var t=Object.assign({},e.state.modelState,r);e.setState({modelState:t})}),s(e,"getValidate",function(){var r=new S({});return f(r,null==j?void 0:j.validate,e.props.validate)}),s(e,"setError",function(r,t){var a=s({},r,[{rule:h.Custom,message:t}]);e.setState({messageErrors:Object.assign({},e.state.messageErrors,a)})}),s(e,"removeError",function(r){var a=t({},e.state.messageErrors);Array.isArray(r)?r.forEach(function(r){a[r]&&delete a[r]}):a[r]&&delete a[r],e.setState({messageErrors:a})}),s(e,"clearErrorAll",function(){e.setState({messageErrors:{}})}),s(e,"onSubmit",function(){var r=n(l().m(function r(a){var o,s,n,i,u,m,c,f;return l().w(function(r){for(;;)switch(r.p=r.n){case 0:if(a.preventDefault(),o=new FormData(a.currentTarget),s=p(o),n=d(s),e.setState({modelState:n}),i=e.validate.run(n),e.props.onError&&Object.keys(i).length>0&&e.props.onError(i),!i){r.n=1;break}if(e.setState({messageErrors:i}),!(Object.keys(i).length>0)){r.n=1;break}return r.a(2);case 1:return r.p=1,r.n=2,e.props.onSubmit(n,a);case 2:r.n=4;break;case 3:r.p=3,f=r.v,(m=E(f)).length>0&&(null===(u=b.ApiAlert)||void 0===u||u.PushError(m[0])),c=g(f,n),e.setState({messageErrors:t(t({},e.state.messageErrors),c||{})});case 4:return r.a(2)}},r,null,[[1,3]])}));return function(e){return r.apply(this,arguments)}}()),s(e,"onBlur",function(r){if(e.refForm){var t=e.state.messageErrors,a=new FormData(e.refForm),o=p(a),s=d(o);e.setState({modelState:s});var n=v(r,s,t,e.validate)||{};e.setState({messageErrors:n})}}),e.validate=e.getValidate(),e.state={messageErrors:{}},e}return r(m,c),e(m,[{key:"render",value:function(){var r,e=this;return i(u,t(t({component:"form",ref:function(r){return e.refForm=r},onSubmit:this.onSubmit},null===(r=this.props.slots)||void 0===r?void 0:r.formProps),{},{children:i(A.Provider,{value:this.mapContext(),children:this.props.children})}))}}])}();return{Form:C,Validator:null==j?void 0:j.validate,Context:A,mapContext:function(r){return i(A.Consumer,{children:r})}}};export{j as default};
|
|
2
2
|
//# sourceMappingURL=create.form-base.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as e,objectWithoutProperties as t,objectSpread2 as n,inherits as r,createClass as l,classCallCheck as o,callSuper as i}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s,jsxs as c}from"react/jsx-runtime";import{
|
|
1
|
+
import{defineProperty as e,objectWithoutProperties as t,objectSpread2 as n,inherits as r,createClass as l,classCallCheck as o,callSuper as i}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s,jsxs as c}from"react/jsx-runtime";import{createRef as a,Component as u}from"react";import{styled as h,Box as p,IconButton as d,Typography as f,Tooltip as m}from"@mui/material";import g from"@mui/icons-material/Fullscreen";import v from"@mui/icons-material/FullscreenExit";import{getErrorMessage as x}from"./helpers.js";import F,{textEditorClasses as C}from"../components/text-editor.js";var y=["children"];function b(t){return function(){function n(t){var r;return o(this,n),r=i(this,n,[t]),e(r,"handleFullscreenChange",function(){r.setState({isFullscreen:!!document.fullscreenElement})}),e(r,"handleFullscreenToggle",function(){r.contentRef.current&&(document.fullscreenElement?document.exitFullscreen():r.contentRef.current.requestFullscreen().catch(function(e){console.error("Error attempting to enable full-screen mode: ".concat(e.message))}))}),e(r,"getWrapClasses",function(){var e=[];return r.state.isFullscreen&&e.push(C.fullscreen),e.join(" ")}),r.state={isFullscreen:!1},r.contentRef=a(),r}return r(n,u),l(n,[{key:"componentDidMount",value:function(){document.addEventListener("fullscreenchange",this.handleFullscreenChange)}},{key:"componentWillUnmount",value:function(){document.removeEventListener("fullscreenchange",this.handleFullscreenChange)}},{key:"render",value:function(){var e,n,r,l,o,i=this,a=x(this.props.messageErrors,this.props.name),u=null!==(e=null===(n=this.props.name?null===(r=this.props.data)||void 0===r?void 0:r[this.props.name]:"")||void 0===n?void 0:n.toString())&&void 0!==e?e:"";return c(p,{id:t.id,ref:this.contentRef,sx:{backgroundColor:"#fff"},children:[this.state.isFullscreen&&s(j,{children:s(f,{variant:"h4",sx:{fontWeight:600,flex:1,textAlign:"center"},children:t.title})}),c(k,{className:this.getWrapClasses(),children:[s(E,{children:s(m,{title:this.state.isFullscreen?"Exit Fullscreen":"Fullscreen",arrow:!0,children:s(S,{sx:{color:"#06c"},onClick:this.handleFullscreenToggle,children:this.state.isFullscreen?s(v,{}):s(g,{})})})}),s(W,{children:s(F,{defautValue:u,name:null!==(l=null===(o=this.props.name)||void 0===o?void 0:o.toString())&&void 0!==l?l:"",readOnly:this.props.disabled,error:a.error,onBlur:function(){var e,t;i.props.name&&(null===(e=(t=i.props).onBlur)||void 0===e||e.call(t,i.props.name))}})})]})]})}}])}()}var k=h(p)(function(t){var n=t.theme;return e(e({maxWidth:n.breakpoints.values.xl,margin:"0 auto",position:"relative"},"&.".concat(C.fullscreen," .").concat(C.root),{height:"calc(100vh - ".concat(74,"px)")}),"&.".concat(C.fullscreen),{width:"871px"})}),j=h(p)({height:"".concat(64,"px"),display:"flex",justifyContent:"center",alignItems:"center"}),E=h(function(e){var r=e.children,l=t(e,y);return s(p,n(n({},l),{},{children:s(p,{children:r})}))})({position:"sticky",top:"-1px",zIndex:2,"& > div":{height:0,display:"flex",justifyContent:"right",padding:"0 6px"}}),S=h(d)({flex:"0 0 auto",marginTop:"1px",width:"40px",height:"40px"}),W=h(p)({backgroundColor:"#fff",width:"100%","& .ql-container":{fontFamily:'"Roboto", serif',fontSize:"14px"},"& .ql-toolbar":{position:"sticky",top:"-1px",backgroundColor:"#fff",zIndex:1}});export{b as default};
|
|
2
2
|
//# sourceMappingURL=create.text-editor.js.map
|
package/dist/src/form/helpers.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{toConsumableArray as r,typeof as n,objectSpread2 as e,createForOfIteratorHelper as t}from"../../_virtual/_rollupPluginBabelHelpers.js";import{FormValidator as i}from"./validator.js";var o=function(r){for(var n=arguments.length,e=new Array(n>1?n-1:0),t=1;t<n;t++)e[t-1]=arguments[t];return e.length<1?r:e.filter(function(r){return r}).reduce(function(r,n){return r=Object.assign(r,n)},r)},a=function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),u=1;u<t;u++)i[u-1]=arguments[u];if((i=i.filter(function(r){return!!r})).length<1)return e;for(var f=[e].concat(r(i)).filter(function(r){return r}),c=f.reduce(function(e,t){if(!t)return e;var i=Object.keys(t).filter(function(r){return"object"===n(t[r])&&!Array.isArray(t[r])});return e.push.apply(e,r(i)),e},[]),l=o.apply(void 0,[e].concat(r(f.slice(1)))),s=l,v=f.slice(1).filter(function(r){return!!r}),p=function(){var n=c[y];s[n]=a.apply(void 0,[{},s[n]].concat(r(v.map(function(r){return r[n]}))))},y=0;y<c.length;y++)p();return l},u=function(r,n){return r&&r[n]?e(e({},r[n][0]),{},{error:!0}):{error:!1,message:""}},f=function(r){var n=Array.from(r).reduce(function(r,n){return r[n[0]]?Array.isArray(r[n[0]])?r[n[0]].push(n[1]):r[n[0]]=[r[n[0]],n[1]]:r[n[0]]=n[1],r},{});return Object.keys(n).forEach(function(r){var e=n[r];"string"!=typeof e||"true"!==e.toString().toLocaleLowerCase()&&"false"!==e.toString().toLocaleLowerCase()||(n[r]="true"===e.toString().toLocaleLowerCase())}),n},c=function(r){if("string"==typeof r)return r.startsWith("#")&&/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(r)?r:r.trim();if(Array.isArray(r))return r.map(function(r){return c(r)});if(r instanceof File)return r;if(r instanceof FileList)return r;if(r instanceof Date)return r;if("number"==typeof r||"boolean"==typeof r||null==r)return r;if(r instanceof HTMLElement)return r;if("function"==typeof r)return r;if(r&&"object"===n(r)){var e={};return Object.keys(r).forEach(function(n){e[n]=c(r[n])}),e}return r},l=function(r,n,e,t){var i=t.run(n);if(i){var o=e||{},a=Object.keys(n).filter(function(r){return!!n[r]}).filter(function(r){return n[r]instanceof File&&!!n[r].size});return a.push(r),a.forEach(function(r){i[r]?o[r]=i[r]:delete o[r]}),o}return null},s=function(r,n){var e,t=null===(e=r.response)||void 0===e?void 0:e.data,i=(null==t?void 0:t.errors)||t;if(i){var o=Object.keys(n),a={};return o.forEach(function(r){var n=i[r];Array.isArray(n)&&n.length>0&&(a[r]=[{message:n[0]}])}),a}},v=function(r){var n,e=null===(n=r.response)||void 0===n?void 0:n.data,t=(null==e?void 0:e.errors)||e;if(t&&t[""]){var i=t[""];if(Array.isArray(i))return i.filter(function(r){return r&&"string"==typeof r&&""!==r.trim()})}return[]},p=function(){for(var n=arguments.length,e=new Array(n),t=0;t<n;t++)e[t]=arguments[t];for(var o=e.map(function(r){return null==r?void 0:r.configs}).filter(function(r){return!!r}),u=Object.assign.apply(Object,[{}].concat(r(o))),f=function(){var n=Object.keys(u)[c];u[n]=a.apply(void 0,[{}].concat(r(o.map(function(r){return r?r[n]:{Rules:[]}})))),u[n].Rules=o.map(function(r){return r?r[n]:{Rules:[]}}).reduce(function(n,e){var t;return n.push.apply(n,r(null!==(t=null==e?void 0:e.Rules)&&void 0!==t?t:[])),n},[])},c=0;c<Object.keys(u).length;c++)f();return new i(u)},y=function(r,n){if(0===r.length)return{valid:!1,message:"File is empty or cannot be parsed"};var e=Object.keys(r[0]),i=n.filter(function(r){return!e.includes(r)});if(i.length>0)return{valid:!1,message:"Missing required columns: ".concat(i.join(", "))};for(var o=0;o<r.length;o++){var a,u=r[o],f=t(n);try{for(f.s();!(a=f.n()).done;){var c=a.value,l=u[c];if("string"!=typeof l||""===l.trim())return{valid:!1,message:'Invalid or missing value for "'.concat(c.toString(),'" at row ').concat(o+2)}}}catch(r){f.e(r)}finally{f.f()}}return{valid:!0}};export{f as convertFormDataToJson,v as getErrorCommonFromResponse,s as getErrorFromResponse,u as getErrorMessage,l as singleValidate,c as trimAllStrings,y as validateCsvModel,p as validateMerge};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{objectWithoutProperties as e,objectSpread2 as o,defineProperty as i,inherits as r,createClass as a,classCallCheck as t,callSuper as l,toConsumableArray as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s}from"react/jsx-runtime";import{
|
|
1
|
+
import{objectWithoutProperties as e,objectSpread2 as o,defineProperty as i,inherits as r,createClass as a,classCallCheck as t,callSuper as l,toConsumableArray as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s}from"react/jsx-runtime";import{Component as d,Fragment as u}from"react";import{styled as p,Box as c}from"@mui/material";import{DataGrid as g}from"@mui/x-data-grid";import{mergeObjects as m}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{TableBaseContext as h}from"./context.js";import{customFilterOperators as f}from"./custom.filter-operators.js";import v,{dinoTableClasses as b}from"./helpers.js";import y from"./toolbar-pannel.js";import{GlobalModal as C,mapGlobalModalContext as P}from"../api-context/global-modal.js";var w=["children"];function S(e){return function(){function p(r){var a;return t(this,p),a=l(this,p,[r]),i(a,"setTableQueryParams",function(e){a.tableQueryParams=m({},a.tableQueryParams,e)}),i(a,"renderWrapContext",function(o){var i=e.disableGlobalModalProvider?u:C;return s(i,{children:P(function(e){return s(h.Provider,{value:{showModal:e.show,closeModal:e.close},children:o})})})}),i(a,"getDataGridProps",function(){var o,i,r,t,l=v.mapInitialState(a.props.query,{columns:{columnVisibilityModel:e.columnVisibilityModel}}),n={getRowId:e.getRowId,initialState:l,columns:a.columns,rows:null!==(o=null===(i=a.props.data)||void 0===i?void 0:i.items)&&void 0!==o?o:[],checkboxSelection:!0,pagination:!0,density:null!==(r=null===(t=a.props.slots)||void 0===t?void 0:t.density)&&void 0!==r?r:"standard",filterDebounceMs:800,sx:{border:0},slots:{toolbar:a.mergeConfig.toolbar},rowSelectionModel:a.rowSelecteds,onRowSelectionModelChange:a.handleRowSelectionChange};if("server"===e.featureMode){var s,d,u={filterMode:"server",sortingMode:"server",paginationMode:"server",onPaginationModelChange:a.onPaginationModelChange,onFilterModelChange:a.onFilterModelChange,onSortModelChange:a.onSortModelChange,rowCount:null!==(s=null===(d=a.props.data)||void 0===d?void 0:d.rowTotal)&&void 0!==s?s:0,paginationModel:a.tableQueryParams.pagination,filterModel:a.tableQueryParams.filter,sortModel:v.mapSortModel(a.tableQueryParams.sort),loading:a.mergeConfig.loading};Object.assign(n,u)}return m(n,a.mergeConfig.dataGridProps)}),i(a,"initialColumns",function(){var i,r,t=a.mergeConfig,l=t.ActionRow,d=t.disableActionRow,u=[];return l&&!0!==d&&u.push(o({field:"Actions",minWidth:100,headerAlign:"right",align:"right",filterable:!1,sortable:!1,renderCell:function(e){return s(l,{value:e.row})}},e.actionRow)),i=u,r=Object.keys(e.columns).map(function(i){var r=o({field:i},e.columns[i]);return r.filterOperators=e.filterOperators?e.filterOperators(r):f(r),r}),i&&i.length>0&&r.push.apply(r,n(i)),r}),i(a,"onPaginationModelChange",function(e,o){a.mergeConfig.loading||(a.setTableQueryParams({pagination:e,detail:"pagination"}),a.handleChange())}),i(a,"onFilterModelChange",function(e,o){var i;if(!a.mergeConfig.loading){var r=a.tableQueryParams.pagination;a.setTableQueryParams({filter:e,pagination:{page:0,pageSize:null!==(i=null==r?void 0:r.pageSize)&&void 0!==i?i:25},detail:v.detectSearchType(e)}),a.handleChange()}}),i(a,"onSortModelChange",function(e,o){if(!a.mergeConfig.loading){var i,r,t,l,n,s=e,d=a.tableQueryParams.sort;if(null!=d&&d.length&&!s.length)if((null==d||null===(i=d[0])||void 0===i?void 0:i.field)===(null===(r=a.defaultTableQueryParams.sort)||void 0===r||null===(r=r[0])||void 0===r?void 0:r.field))s=[{field:null===(t=d[0])||void 0===t?void 0:t.field,sort:"desc"===(null===(l=d[0])||void 0===l?void 0:l.sort)?"asc":"desc"}];else s=null!==(n=a.defaultTableQueryParams.sort)&&void 0!==n?n:[];a.setTableQueryParams({sort:s,detail:"sort"}),a.handleChange()}}),i(a,"handleChange",function(){a.changeTimeout&&clearTimeout(a.changeTimeout),a.changeTimeout=setTimeout(function(){a.props.onChange&&a.props.onChange(a.tableQueryParams)},300)}),i(a,"handleRowSelectionChange",function(e,o){a.mergeConfig.maxSelcion&&e.length>a.mergeConfig.maxSelcion?a.rowSelecteds=e.slice(0,a.mergeConfig.maxSelcion):a.rowSelecteds=e,a.props.onRowSelectionChange&&a.props.onRowSelectionChange(a.rowSelecteds,o),a.forceUpdate()}),a.columns=a.initialColumns(),a.tableQueryParams=o({},r.query),a.defaultTableQueryParams=a.tableQueryParams,a.rowSelecteds=[],a}return r(p,d),a(p,[{key:"mergeConfig",get:function(){var i,r,a,t,l,n,d,u,p,c,g=m({},null==e?void 0:e.toolbarProps,null===(i=this.props.slots)||void 0===i?void 0:i.toolbarProps);return{toolbar:null!==(r=null===(a=this.props.slots)||void 0===a?void 0:a.toolbar)&&void 0!==r?r:function(){return s(y,o({},g))},ActionRow:null===(t=this.props.slots)||void 0===t?void 0:t.actionRow,disableActionRow:e.disableActionRow,columnVisibilityModel:e.columnVisibilityModel,maxSelcion:null!==(l=null===(n=this.props.slots)||void 0===n?void 0:n.maxSelection)&&void 0!==l?l:e.maxSelection,dataGridProps:m({},e.dataGridProps,null===(d=this.props.slots)||void 0===d?void 0:d.dataGridProps),wrapProps:m({},e.wrapProps,null===(u=this.props.slots)||void 0===u?void 0:u.wrapProps),loading:null!==(p=void 0!==this.props.loading?this.props.loading:null===(c=this.tableQueryParams)||void 0===c?void 0:c.loading)&&void 0!==p&&p}}},{key:"componentWillUnmount",value:function(){this.changeTimeout&&clearTimeout(this.changeTimeout)}},{key:"shouldComponentUpdate",value:function(o){var i;return"server"!==e.featureMode||(v.equalTableQueryParams(o.query,this.props.query)?JSON.stringify(o.data)!==JSON.stringify(this.props.data)||o.loading!==this.props.loading:(this.setTableQueryParams(null!==(i=o.query)&&void 0!==i?i:{}),!0))}},{key:"render",value:function(){return this.renderWrapContext(s(M,o(o({},this.mergeConfig.wrapProps),{},{children:s(g,o({loading:this.props.loading},this.getDataGridProps()))})))}}])}()}var M=p(function(i){var r=i.children,a=e(i,w);return s(c,o(o({},a),{},{children:s("div",{children:r})}))})(i(i({flex:1,position:"relative","& > div":{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflowY:"auto"},".MuiDataGrid-root":{"--unstable_DataGrid-radius":0,overflow:"hidden"}},".MuiDataGrid-cell.".concat(b.whiteSpacePre," .MuiDataGrid-cellContent"),{whiteSpace:"pre"}),".MuiTablePagination-root p",{marginBottom:0}));export{S as CreateTable,S as default};
|
|
2
2
|
//# sourceMappingURL=create.table.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createClass as e,classCallCheck as t,toConsumableArray as r,typeof as n}from"../../_virtual/_rollupPluginBabelHelpers.js";var a=function(e){return e},i=function(){return e(function e(){t(this,e)},null,[{key:"exportToCsv",value:function(e,t){var n=this;try{var a,i=t.fields.map(function(e){return String(e)}),o=e.map(function(e){return t.fields.map(function(t){var r=e[t];return n.formatFieldValue(r)})}),l=[i].concat(r(o)).map(function(e){return e.join(",")}).join("\n");if(t.utf8WithBom){a=new Blob(["\ufeff"+l],{type:"text/csv;charset=utf-8;"})}else a=new Blob([l],{type:"text/csv;charset=utf-8;"});var u=document.createElement("a"),c=URL.createObjectURL(a);u.setAttribute("href",c),u.setAttribute("download","".concat(t.fileName,".csv")),u.style.visibility="hidden",document.body.appendChild(u),u.click(),document.body.removeChild(u),URL.revokeObjectURL(c)}catch(e){throw console.error("Error exporting CSV:",e),new Error("Failed to export CSV file")}}},{key:"formatFieldValue",value:function(e){return null==e?"":e instanceof Date?this.escapeCSVValue(e.toISOString()):Array.isArray(e)?this.escapeCSVValue(e.join("; ")):"object"===n(e)?this.escapeCSVValue(JSON.stringify(e)):this.escapeCSVValue(String(e))}},{key:"escapeCSVValue",value:function(e){return e.includes(",")||e.includes("\n")||e.includes("\r")||e.includes('"')?'"'+e.replace(/"/g,'""')+'"':e}}])}();export{i as CsvExportHelper,a as generateExportCsvOptions};
|
|
2
|
+
//# sourceMappingURL=csv-export-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv-export-helper.js","sources":["../../../src/table/csv-export-helper.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nexport interface IExportCsvOptionsModel<T = any> {\r\n fileName: string\r\n fields: (keyof T)[]\r\n utf8WithBom?: boolean\r\n}\r\n\r\nexport const generateExportCsvOptions = <T>(options: IExportCsvOptionsModel<T>): IExportCsvOptionsModel<T> => {\r\n return options\r\n}\r\n\r\nexport class CsvExportHelper {\r\n /**\r\n * Export data to CSV with UTF-8 BOM encoding support\r\n */\r\n static exportToCsv<T = any>(data: T[], options: IExportCsvOptionsModel<T>): void {\r\n try {\r\n // Extract headers\r\n const headers = options.fields.map((field) => String(field))\r\n\r\n // Extract rows data\r\n const rows = data.map((item) =>\r\n options.fields.map((field) => {\r\n const value = item[field]\r\n return this.formatFieldValue(value)\r\n })\r\n )\r\n\r\n // Combine headers and rows\r\n const csvContent = [headers, ...rows].map((row) => row.join(',')).join('\\n')\r\n\r\n // Create blob with UTF-8 BOM\r\n let blob: Blob\r\n if (options.utf8WithBom) {\r\n // UTF-8 BOM (Byte Order Mark) - helps Excel and other apps recognize UTF-8 encoding\r\n const BOM = '\\uFEFF'\r\n blob = new Blob([BOM + csvContent], { type: 'text/csv;charset=utf-8;' })\r\n } else {\r\n blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' })\r\n }\r\n\r\n // Create download link\r\n const link = document.createElement('a')\r\n const url = URL.createObjectURL(blob)\r\n link.setAttribute('href', url)\r\n link.setAttribute('download', `${options.fileName}.csv`)\r\n link.style.visibility = 'hidden'\r\n\r\n // Trigger download\r\n document.body.appendChild(link)\r\n link.click()\r\n document.body.removeChild(link)\r\n\r\n // Clean up\r\n URL.revokeObjectURL(url)\r\n } catch (error) {\r\n console.error('Error exporting CSV:', error)\r\n throw new Error('Failed to export CSV file')\r\n }\r\n }\r\n\r\n /**\r\n * Format field value for CSV export\r\n */\r\n private static formatFieldValue(value: any): string {\r\n if (value === null || value === undefined) return ''\r\n\r\n // Handle dates\r\n if (value instanceof Date) {\r\n return this.escapeCSVValue(value.toISOString())\r\n }\r\n\r\n // Handle arrays\r\n if (Array.isArray(value)) {\r\n return this.escapeCSVValue(value.join('; '))\r\n }\r\n\r\n // Handle objects\r\n if (typeof value === 'object') {\r\n return this.escapeCSVValue(JSON.stringify(value))\r\n }\r\n\r\n return this.escapeCSVValue(String(value))\r\n }\r\n\r\n /**\r\n * Escape CSV value by wrapping in quotes if needed\r\n */\r\n private static escapeCSVValue(value: string): string {\r\n // If value contains comma, newline, or quote, wrap in quotes and escape internal quotes\r\n if (value.includes(',') || value.includes('\\n') || value.includes('\\r') || value.includes('\"')) {\r\n return '\"' + value.replace(/\"/g, '\"\"') + '\"'\r\n }\r\n return value\r\n }\r\n}\r\n"],"names":["generateExportCsvOptions","options","CsvExportHelper","_createClass","_classCallCheck","key","value","data","_this","this","blob","headers","fields","map","field","String","rows","item","formatFieldValue","csvContent","concat","_toConsumableArray","row","join","utf8WithBom","Blob","type","link","document","createElement","url","URL","createObjectURL","setAttribute","fileName","style","visibility","body","appendChild","click","removeChild","revokeObjectURL","error","console","Error","Date","escapeCSVValue","toISOString","Array","isArray","_typeof","JSON","stringify","includes","replace"],"mappings":"qIAQaA,EAA2B,SAAIC,GAC1C,OAAOA,CACT,EAEaC,EAAe,WAAA,OAAAC,EAAA,SAAAD,IAAAE,OAAAF,EAAA,EAAA,KAAA,CAAA,CAAAG,IAAA,cAAAC,MAI1B,SAA4BC,EAAWN,GAAkC,IAAAO,EAAAC,KACvE,IAEE,IAcIC,EAdEC,EAAUV,EAAQW,OAAOC,IAAI,SAACC,GAAK,OAAKC,OAAOD,KAG/CE,EAAOT,EAAKM,IAAI,SAACI,GAAI,OACzBhB,EAAQW,OAAOC,IAAI,SAACC,GAClB,IAAMR,EAAQW,EAAKH,GACnB,OAAON,EAAKU,iBAAiBZ,EAC/B,KAIIa,EAAa,CAACR,GAAOS,OAAAC,EAAKL,IAAMH,IAAI,SAACS,GAAG,OAAKA,EAAIC,KAAK,IAAI,GAAEA,KAAK,MAIvE,GAAItB,EAAQuB,YAAa,CAGvBd,EAAO,IAAIe,KAAK,CADJ,SACWN,GAAa,CAAEO,KAAM,2BAC7C,MACChB,EAAO,IAAIe,KAAK,CAACN,GAAa,CAAEO,KAAM,4BAIxC,IAAMC,EAAOC,SAASC,cAAc,KAC9BC,EAAMC,IAAIC,gBAAgBtB,GAChCiB,EAAKM,aAAa,OAAQH,GAC1BH,EAAKM,aAAa,WAAU,GAAAb,OAAKnB,EAAQiC,SAAQ,SACjDP,EAAKQ,MAAMC,WAAa,SAGxBR,SAASS,KAAKC,YAAYX,GAC1BA,EAAKY,QACLX,SAASS,KAAKG,YAAYb,GAG1BI,IAAIU,gBAAgBX,EACrB,CAAC,MAAOY,GAEP,MADAC,QAAQD,MAAM,uBAAwBA,GAChC,IAAIE,MAAM,4BACjB,CACH,GAEA,CAAAvC,IAAA,mBAAAC,MAGQ,SAAwBA,GAC9B,OAAIA,QAA8C,GAG9CA,aAAiBuC,KACZpC,KAAKqC,eAAexC,EAAMyC,eAI/BC,MAAMC,QAAQ3C,GACTG,KAAKqC,eAAexC,EAAMiB,KAAK,OAInB,WAAjB2B,EAAO5C,GACFG,KAAKqC,eAAeK,KAAKC,UAAU9C,IAGrCG,KAAKqC,eAAe/B,OAAOT,GACpC,GAEA,CAAAD,IAAA,iBAAAC,MAGQ,SAAsBA,GAE5B,OAAIA,EAAM+C,SAAS,MAAQ/C,EAAM+C,SAAS,OAAS/C,EAAM+C,SAAS,OAAS/C,EAAM+C,SAAS,KACjF,IAAM/C,EAAMgD,QAAQ,KAAM,MAAQ,IAEpChD,CACT,IAAC,CAnFyB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{objectWithoutProperties as r,objectSpread2 as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as t}from"react/jsx-runtime";import{Tooltip as e,Button as i}from"@mui/material";import{Download as a}from"@mui/icons-material";import{useGridApiContext as n,useGridSelector as l,gridRowsLookupSelector as p,GridToolbarExport as s}from"@mui/x-data-grid";import{CsvExportHelper as c}from"./csv-export-helper.js";var m=["csvOptions","tooltip","children"],v=function(v){var u=v.csvOptions,d=v.tooltip,f=void 0===d?"Export CSV with UTF-8 encoding":d,x=v.children,h=r(v,m),j=n(),b=l(j,p);return u?t(e,{title:f,arrow:!0,children:t(i,o(o({size:"small",variant:"text",startIcon:t(a,{}),onClick:function(){try{if(!u)return void console.warn("No CSV export options provided");var r=Object.values(b);if(0===r.length)return void console.warn("No data available for export");var o=j.current.getSelectedRows();return 0===o.size?c.exportToCsv(r,u):c.exportToCsv(Array.from(o.values()),u)}catch(r){console.error("Export failed:",r)}}},h),{},{children:x||"Export"}))}):t(s,{})};export{v as CustomExportButton};
|
|
2
|
+
//# sourceMappingURL=custom.export-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom.export-button.js","sources":["../../../src/table/custom.export-button.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { FC } from 'react'\r\nimport { Button, ButtonProps, Tooltip } from '@mui/material'\r\nimport { Download as DownloadIcon } from '@mui/icons-material'\r\nimport { useGridApiContext, useGridSelector, gridRowsLookupSelector, GridToolbarExport } from '@mui/x-data-grid'\r\nimport { CsvExportHelper, IExportCsvOptionsModel } from './csv-export-helper'\r\n\r\nexport interface CustomExportButtonProps extends Omit<ButtonProps, 'onClick'> {\r\n csvOptions?: IExportCsvOptionsModel\r\n tooltip?: string\r\n}\r\n\r\nexport const CustomExportButton: FC<CustomExportButtonProps> = (props) => {\r\n const { csvOptions, tooltip = 'Export CSV with UTF-8 encoding', children, ...buttonProps } = props\r\n\r\n const apiRef = useGridApiContext()\r\n const rowsLookup = useGridSelector(apiRef, gridRowsLookupSelector)\r\n\r\n const handleExport = () => {\r\n try {\r\n if (!csvOptions) {\r\n console.warn('No CSV export options provided')\r\n return\r\n }\r\n\r\n // Get all rows data from the grid\r\n const data = Object.values(rowsLookup)\r\n\r\n if (data.length === 0) {\r\n console.warn('No data available for export')\r\n return\r\n }\r\n\r\n const selectedRows = apiRef.current.getSelectedRows()\r\n if (selectedRows.size === 0) {\r\n // Export to CSV with UTF-8 BOM\r\n return CsvExportHelper.exportToCsv(data, csvOptions)\r\n }\r\n return CsvExportHelper.exportToCsv(Array.from(selectedRows.values()), csvOptions)\r\n } catch (error) {\r\n console.error('Export failed:', error)\r\n }\r\n }\r\n\r\n if (!csvOptions) return <GridToolbarExport />\r\n\r\n return (\r\n <Tooltip title={tooltip} arrow>\r\n <Button size='small' variant='text' startIcon={<DownloadIcon />} onClick={handleExport} {...buttonProps}>\r\n {children || 'Export'}\r\n </Button>\r\n </Tooltip>\r\n )\r\n}\r\n"],"names":["CustomExportButton","props","csvOptions","_props$tooltip","tooltip","children","buttonProps","_objectWithoutProperties","_excluded","apiRef","useGridApiContext","rowsLookup","useGridSelector","gridRowsLookupSelector","_jsx","Tooltip","title","arrow","Button","_objectSpread","size","variant","startIcon","DownloadIcon","onClick","console","warn","data","Object","values","length","selectedRows","current","getSelectedRows","CsvExportHelper","exportToCsv","Array","from","error","GridToolbarExport"],"mappings":"odAYaA,EAAkD,SAACC,GAC9D,IAAQC,EAAqFD,EAArFC,WAAUC,EAA2EF,EAAzEG,QAAAA,OAAU,IAAHD,EAAG,iCAAgCA,EAAEE,EAA6BJ,EAA7BI,SAAaC,EAAWC,EAAKN,EAAKO,GAE5FC,EAASC,IACTC,EAAaC,EAAgBH,EAAQI,GA4B3C,OAAKX,EAGHY,EAACC,EAAQ,CAAAC,MAAOZ,EAASa,OAAK,EAAAZ,SAC5BS,EAACI,EAAMC,EAAAA,EAAA,CAACC,KAAK,QAAQC,QAAQ,OAAOC,UAAWR,EAACS,EAAe,IAAEC,QA9BhD,WACnB,IACE,IAAKtB,EAEH,YADAuB,QAAQC,KAAK,kCAKf,IAAMC,EAAOC,OAAOC,OAAOlB,GAE3B,GAAoB,IAAhBgB,EAAKG,OAEP,YADAL,QAAQC,KAAK,gCAIf,IAAMK,EAAetB,EAAOuB,QAAQC,kBACpC,OAA0B,IAAtBF,EAAaX,KAERc,EAAgBC,YAAYR,EAAMzB,GAEpCgC,EAAgBC,YAAYC,MAAMC,KAAKN,EAAaF,UAAW3B,EACvE,CAAC,MAAOoC,GACPb,QAAQa,MAAM,iBAAkBA,EACjC,CACF,GAM+FhC,GAAW,GAAA,UACpGD,GAAY,cALKS,EAACyB,EAAiB,CAAA,EAS5C"}
|
package/dist/src/table/dino.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createClass as r,classCallCheck as t,defineProperty as e,objectSpread2 as o,objectWithoutProperties as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a}from"react/jsx-runtime";import i from"dayjs";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{MapTableBaseContext as u}from"./context.js";import{BtnFormDetail as l,BtnDetail as s}from"./ui.buttons.js";import{CreateStatusCell as c,CellChips as m,CellBase as f,CellImageSmall as
|
|
1
|
+
import{createClass as r,classCallCheck as t,defineProperty as e,objectSpread2 as o,objectWithoutProperties as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a}from"react/jsx-runtime";import i from"dayjs";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{MapTableBaseContext as u}from"./context.js";import{BtnFormDetail as l,BtnDetail as s}from"./ui.buttons.js";import{CreateStatusCell as c,CellChips as m,CellBase as f,CellImageSmall as p,CellDate as v}from"./ui.units.js";import h from"./toolbar-pannel.js";import d from"./helpers.js";import{CreateTable as g}from"./create.table.js";import y from"./create.action-row.js";import{generateExportCsvOptions as j}from"./csv-export-helper.js";import{Breadcrumbs as b}from"../components/breadcrumbs.js";var C=["imageUrl","valueFormatter","typographyProps","typographyPropsGetter"],S=["formatString"],w="MM/DD/YYYY HH:mm",P=new(r(function r(){var P=this;t(this,r),e(this,"createTable",g),e(this,"createActionRow",y),e(this,"generateExportCsvOptions",j),e(this,"setUrlQuery",d.setUrlQuery),e(this,"getUrlQuery",d.getUrlQuery),e(this,"mapContext",u),e(this,"ToolbarPannel",h),e(this,"createToolbar",function(r){return function(t){return a(h,o({},o(o({},t),r)))}}),e(this,"BtnFormDetail",l),e(this,"BtnDetail",s),e(this,"createBreadcrumbConfigs",function(r){return r}),e(this,"createBreadcrumbs",function(r){return function(){return a(b,{value:r})}}),e(this,"createStatusCell",c),e(this,"formatterDate",function(r,t){var e,o,n=null!==(e=null==t?void 0:t.formatString)&&void 0!==e?e:w,a=null!==(o=null==t?void 0:t.showRelative)&&void 0!==o&&o;try{if(!r)return"";var u=i(r),l=u.format(n);return a?"".concat(l," (").concat(i().to(u),")"):l}catch(r){return""}}),e(this,"valueFormatterDate",function(r){return function(t){return P.formatterDate(t.value,r)}}),e(this,"renderCellChips",function(r){return function(t){var e;return a(m,o(o({},r),{},{value:null!==(e=t.value)&&void 0!==e?e:null==r?void 0:r.value}))}}),e(this,"renderCellStatus",function(r,t){var e=c(r,o({sx:{minWidth:"90px"}},t));return function(r){return a(e,{value:r.value})}}),e(this,"renderCellBase",function(r){return function(t){var e=null!=r?r:{},i=e.imageUrl,u=e.valueFormatter,l=e.typographyProps,s=e.typographyPropsGetter,c=n(e,C),m=u?u(t.value,t.row):void 0,p=i?i(t.value,t.row):void 0,v=null!=r&&r.icon?"function"==typeof r.icon?r.icon(t.value,t.row):r.icon:void 0,h=s?s(t.value,t.row):l;return a(f,o(o({value:t.value,valueFormatted:m},c),{},{imageUrl:p,icon:v,typographyProps:h}))}}),e(this,"renderCellImage",function(r,t){return function(e){var o;return a(p,{value:e.value,imageUri:null===(o=r(e.row))||void 0===o?void 0:o.toString(),fallbackSrc:null==t?void 0:t.fallbackSrc})}}),e(this,"renderCellDate",function(r){return function(t){var e=null!=r?r:{},i=e.formatString,u=n(e,S);return a(v,o(o({},u),{},{value:t.value,formatString:null!=i?i:w}))}})}));export{P as default};
|
|
2
2
|
//# sourceMappingURL=dino.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dino.js","sources":["../../../src/table/dino.tsx"],"sourcesContent":["import { GridRenderCellParams, GridTreeNodeWithRender, GridValueFormatterParams } from '@mui/x-data-grid'\r\nimport type { FC, ReactNode } from 'react'\r\nimport { dayjsCustom } from '../utils'\r\nimport { MapTableBaseContext } from './context'\r\nimport { BtnDetail, BtnFormDetail } from './ui.buttons'\r\nimport { Breadcrumbs, IBreadcrumbConfig } from '../components'\r\nimport { CreateStatusCell, IStatusCellOptions, IStatusCellConfig } from './ui.units'\r\nimport { CellBase, CellImageSmall, CellBaseOptions, CellChips, CellChipsProps, CellDate, CellDatePropsOwner } from './ui.units'\r\nimport ToolbarPannel, { IToolbarPannelProps } from './toolbar-pannel'\r\nimport TableHelper from './helpers'\r\nimport CreateTable from './create.table'\r\nimport CreateActionRow from './create.action-row'\r\nimport { TypographyProps } from '@mui/material'\r\n\r\nconst formatDateString = 'MM/DD/YYYY HH:mm'\r\n\r\ntype RenderCellBaseParams<T> = Omit<CellBaseOptions, 'imageUrl'> & {\r\n imageUrl?: (value: any, model: T) => string\r\n valueFormatter?: (value: any, model: T) => string\r\n icon?: ReactNode | ((value: any, model: T) => ReactNode)\r\n typographyPropsGetter?: (value: any, model: T) => TypographyProps & { [key: string]: any }\r\n}\r\n\r\ninterface FormatterDateOptions {\r\n formatString?: string\r\n showRelative?: boolean\r\n}\r\n\r\nclass DinoTableBase {\r\n //#region Base\r\n\r\n createTable = CreateTable\r\n\r\n createActionRow = CreateActionRow\r\n\r\n setUrlQuery = TableHelper.setUrlQuery\r\n\r\n getUrlQuery = TableHelper.getUrlQuery\r\n\r\n mapContext = MapTableBaseContext\r\n\r\n ToolbarPannel = ToolbarPannel\r\n\r\n createToolbar = (props: IToolbarPannelProps): FC<IToolbarPannelProps> => {\r\n return (p) => <ToolbarPannel {...{ ...p, ...props }} />\r\n }\r\n\r\n BtnFormDetail = BtnFormDetail\r\n\r\n BtnDetail = BtnDetail\r\n\r\n createBreadcrumbConfigs = (value: IBreadcrumbConfig[]) => value\r\n\r\n createBreadcrumbs = (value: IBreadcrumbConfig[]): FC => {\r\n return () => <Breadcrumbs value={value} />\r\n }\r\n\r\n createStatusCell = CreateStatusCell\r\n //#endregion\r\n\r\n //#region Value Formatter\r\n formatterDate = (value: any, options?: FormatterDateOptions): string => {\r\n const f = options?.formatString ?? formatDateString\r\n const showRelative = options?.showRelative ?? false\r\n try {\r\n if (!value) return ''\r\n\r\n const date = dayjsCustom(value)\r\n const formatted = date.format(f)\r\n\r\n return showRelative ? `${formatted} (${dayjsCustom().to(date)})` : formatted\r\n } catch (error) {\r\n return ''\r\n }\r\n }\r\n\r\n valueFormatterDate = (options?: FormatterDateOptions) => {\r\n return (params: GridValueFormatterParams<any>) => this.formatterDate(params.value, options)\r\n }\r\n //#endregion\r\n\r\n //#region Render Cell\r\n renderCellChips = (params?: CellChipsProps) => {\r\n return function func(tableRow: GridRenderCellParams<any, any, any, GridTreeNodeWithRender>) {\r\n return <CellChips {...params} value={tableRow.value ?? params?.value} />\r\n }\r\n }\r\n\r\n renderCellStatus = function <E extends string>(config: IStatusCellConfig<E>, options?: IStatusCellOptions) {\r\n const StatusCellInstance = CreateStatusCell(config, { sx: { minWidth: '90px' }, ...options })\r\n return function func(tableRow: GridRenderCellParams<any, any, any, GridTreeNodeWithRender>) {\r\n return <StatusCellInstance value={tableRow.value} />\r\n }\r\n }\r\n\r\n renderCellBase = function <T = any>(options?: RenderCellBaseParams<T>) {\r\n return function func(tableRow: GridRenderCellParams<any, any, any, GridTreeNodeWithRender>) {\r\n const { imageUrl, valueFormatter, typographyProps, typographyPropsGetter, ...p } = options ?? {}\r\n const value = valueFormatter ? valueFormatter(tableRow.value, tableRow.row) : undefined\r\n const img = imageUrl ? imageUrl(tableRow.value, tableRow.row) : undefined\r\n const icon = options?.icon ? (typeof options.icon === 'function' ? options.icon(tableRow.value, tableRow.row) : options.icon) : undefined\r\n const mergedTypographyProps = typographyPropsGetter ? typographyPropsGetter(tableRow.value, tableRow.row) : typographyProps\r\n return <CellBase value={tableRow.value} valueFormatted={value} {...p} imageUrl={img} icon={icon} typographyProps={mergedTypographyProps} />\r\n }\r\n }\r\n\r\n renderCellImage = function <T>(selectImage: (value: T) => T[keyof T], options?: { fallbackSrc?: string }) {\r\n return function func(tableRow: GridRenderCellParams<any, any, any, GridTreeNodeWithRender>) {\r\n return <CellImageSmall value={tableRow.value} imageUri={selectImage(tableRow.row)?.toString()} fallbackSrc={options?.fallbackSrc} />\r\n }\r\n }\r\n\r\n renderCellDate = function (params?: CellDatePropsOwner) {\r\n return function func(tableRow: GridRenderCellParams<any, any, any, GridTreeNodeWithRender>) {\r\n const { formatString, ...props } = params ?? {}\r\n return <CellDate {...props} value={tableRow.value} formatString={formatString ?? formatDateString} />\r\n }\r\n }\r\n //#endregion\r\n}\r\n\r\nconst DinoTable = new DinoTableBase()\r\n\r\nexport default DinoTable\r\n"],"names":["formatDateString","DinoTable","_createClass","DinoTableBase","_this","this","_classCallCheck","_defineProperty","CreateTable","CreateActionRow","TableHelper","setUrlQuery","getUrlQuery","MapTableBaseContext","ToolbarPannel","props","p","_jsx","_objectSpread","BtnFormDetail","BtnDetail","value","Breadcrumbs","CreateStatusCell","options","_options$formatString","_options$showRelative","f","formatString","showRelative","date","dayjsCustom","formatted","format","concat","to","error","params","formatterDate","tableRow","_tableRow$value","CellChips","config","StatusCellInstance","sx","minWidth","_ref","imageUrl","valueFormatter","typographyProps","typographyPropsGetter","_objectWithoutProperties","_excluded","row","undefined","img","icon","mergedTypographyProps","CellBase","valueFormatted","selectImage","_selectImage","CellImageSmall","imageUri","toString","fallbackSrc","_ref2","_excluded2","CellDate"],"mappings":"
|
|
1
|
+
{"version":3,"file":"dino.js","sources":["../../../src/table/dino.tsx"],"sourcesContent":["import { GridRenderCellParams, GridTreeNodeWithRender, GridValueFormatterParams } from '@mui/x-data-grid'\r\nimport type { FC, ReactNode } from 'react'\r\nimport { dayjsCustom } from '../utils'\r\nimport { MapTableBaseContext } from './context'\r\nimport { BtnDetail, BtnFormDetail } from './ui.buttons'\r\nimport { Breadcrumbs, IBreadcrumbConfig } from '../components'\r\nimport { CreateStatusCell, IStatusCellOptions, IStatusCellConfig } from './ui.units'\r\nimport { CellBase, CellImageSmall, CellBaseOptions, CellChips, CellChipsProps, CellDate, CellDatePropsOwner } from './ui.units'\r\nimport ToolbarPannel, { IToolbarPannelProps } from './toolbar-pannel'\r\nimport TableHelper from './helpers'\r\nimport CreateTable from './create.table'\r\nimport CreateActionRow from './create.action-row'\r\nimport { TypographyProps } from '@mui/material'\r\nimport { generateExportCsvOptions } from './csv-export-helper'\r\n\r\nconst formatDateString = 'MM/DD/YYYY HH:mm'\r\n\r\ntype RenderCellBaseParams<T> = Omit<CellBaseOptions, 'imageUrl'> & {\r\n imageUrl?: (value: any, model: T) => string\r\n valueFormatter?: (value: any, model: T) => string\r\n icon?: ReactNode | ((value: any, model: T) => ReactNode)\r\n typographyPropsGetter?: (value: any, model: T) => TypographyProps & { [key: string]: any }\r\n}\r\n\r\ninterface FormatterDateOptions {\r\n formatString?: string\r\n showRelative?: boolean\r\n}\r\n\r\nclass DinoTableBase {\r\n //#region Base\r\n\r\n createTable = CreateTable\r\n\r\n createActionRow = CreateActionRow\r\n\r\n generateExportCsvOptions = generateExportCsvOptions\r\n\r\n setUrlQuery = TableHelper.setUrlQuery\r\n\r\n getUrlQuery = TableHelper.getUrlQuery\r\n\r\n mapContext = MapTableBaseContext\r\n\r\n ToolbarPannel = ToolbarPannel\r\n\r\n createToolbar = (props: IToolbarPannelProps): FC<IToolbarPannelProps> => {\r\n return (p) => <ToolbarPannel {...{ ...p, ...props }} />\r\n }\r\n\r\n BtnFormDetail = BtnFormDetail\r\n\r\n BtnDetail = BtnDetail\r\n\r\n createBreadcrumbConfigs = (value: IBreadcrumbConfig[]) => value\r\n\r\n createBreadcrumbs = (value: IBreadcrumbConfig[]): FC => {\r\n return () => <Breadcrumbs value={value} />\r\n }\r\n\r\n createStatusCell = CreateStatusCell\r\n //#endregion\r\n\r\n //#region Value Formatter\r\n formatterDate = (value: any, options?: FormatterDateOptions): string => {\r\n const f = options?.formatString ?? formatDateString\r\n const showRelative = options?.showRelative ?? false\r\n try {\r\n if (!value) return ''\r\n\r\n const date = dayjsCustom(value)\r\n const formatted = date.format(f)\r\n\r\n return showRelative ? `${formatted} (${dayjsCustom().to(date)})` : formatted\r\n } catch (error) {\r\n return ''\r\n }\r\n }\r\n\r\n valueFormatterDate = (options?: FormatterDateOptions) => {\r\n return (params: GridValueFormatterParams<any>) => this.formatterDate(params.value, options)\r\n }\r\n //#endregion\r\n\r\n //#region Render Cell\r\n renderCellChips = (params?: CellChipsProps) => {\r\n return function func(tableRow: GridRenderCellParams<any, any, any, GridTreeNodeWithRender>) {\r\n return <CellChips {...params} value={tableRow.value ?? params?.value} />\r\n }\r\n }\r\n\r\n renderCellStatus = function <E extends string>(config: IStatusCellConfig<E>, options?: IStatusCellOptions) {\r\n const StatusCellInstance = CreateStatusCell(config, { sx: { minWidth: '90px' }, ...options })\r\n return function func(tableRow: GridRenderCellParams<any, any, any, GridTreeNodeWithRender>) {\r\n return <StatusCellInstance value={tableRow.value} />\r\n }\r\n }\r\n\r\n renderCellBase = function <T = any>(options?: RenderCellBaseParams<T>) {\r\n return function func(tableRow: GridRenderCellParams<any, any, any, GridTreeNodeWithRender>) {\r\n const { imageUrl, valueFormatter, typographyProps, typographyPropsGetter, ...p } = options ?? {}\r\n const value = valueFormatter ? valueFormatter(tableRow.value, tableRow.row) : undefined\r\n const img = imageUrl ? imageUrl(tableRow.value, tableRow.row) : undefined\r\n const icon = options?.icon ? (typeof options.icon === 'function' ? options.icon(tableRow.value, tableRow.row) : options.icon) : undefined\r\n const mergedTypographyProps = typographyPropsGetter ? typographyPropsGetter(tableRow.value, tableRow.row) : typographyProps\r\n return <CellBase value={tableRow.value} valueFormatted={value} {...p} imageUrl={img} icon={icon} typographyProps={mergedTypographyProps} />\r\n }\r\n }\r\n\r\n renderCellImage = function <T>(selectImage: (value: T) => T[keyof T], options?: { fallbackSrc?: string }) {\r\n return function func(tableRow: GridRenderCellParams<any, any, any, GridTreeNodeWithRender>) {\r\n return <CellImageSmall value={tableRow.value} imageUri={selectImage(tableRow.row)?.toString()} fallbackSrc={options?.fallbackSrc} />\r\n }\r\n }\r\n\r\n renderCellDate = function (params?: CellDatePropsOwner) {\r\n return function func(tableRow: GridRenderCellParams<any, any, any, GridTreeNodeWithRender>) {\r\n const { formatString, ...props } = params ?? {}\r\n return <CellDate {...props} value={tableRow.value} formatString={formatString ?? formatDateString} />\r\n }\r\n }\r\n //#endregion\r\n}\r\n\r\nconst DinoTable = new DinoTableBase()\r\n\r\nexport default DinoTable\r\n"],"names":["formatDateString","DinoTable","_createClass","DinoTableBase","_this","this","_classCallCheck","_defineProperty","CreateTable","CreateActionRow","generateExportCsvOptions","TableHelper","setUrlQuery","getUrlQuery","MapTableBaseContext","ToolbarPannel","props","p","_jsx","_objectSpread","BtnFormDetail","BtnDetail","value","Breadcrumbs","CreateStatusCell","options","_options$formatString","_options$showRelative","f","formatString","showRelative","date","dayjsCustom","formatted","format","concat","to","error","params","formatterDate","tableRow","_tableRow$value","CellChips","config","StatusCellInstance","sx","minWidth","_ref","imageUrl","valueFormatter","typographyProps","typographyPropsGetter","_objectWithoutProperties","_excluded","row","undefined","img","icon","mergedTypographyProps","CellBase","valueFormatted","selectImage","_selectImage","CellImageSmall","imageUri","toString","fallbackSrc","_ref2","_excluded2","CellDate"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as t,inherits as i,createClass as
|
|
1
|
+
import{defineProperty as t,inherits as i,createClass as r,objectSpread2 as e,classCallCheck as o,callSuper as a}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as n,jsx as l,Fragment as s}from"react/jsx-runtime";import{Component as c}from"react";import{GridToolbarColumnsButton as p,GridToolbarFilterButton as d,GridToolbarDensitySelector as h,GridToolbarQuickFilter as m}from"@mui/x-data-grid";import{styled as u,Box as f,Typography as b}from"@mui/material";import{BtnFormCreate as v}from"./ui.buttons.js";import{CustomExportButton as g}from"./custom.export-button.js";import{Breadcrumbs as x}from"../components/breadcrumbs.js";import{HelpTooltip as T}from"../components/help-tooltip.js";var y=function(){function u(){var i;o(this,u);for(var r=arguments.length,c=new Array(r),p=0;p<r;p++)c[p]=arguments[p];return i=a(this,u,[].concat(c)),t(i,"renderTitle",function(){var t,r=i.props,o=r.title,a=r.afterTitle,c=r.breadcrumbs,p=r.icon,d="".concat(P.titleWrap).concat(null!==(t=i.props.titleProps)&&void 0!==t&&t.className?" ".concat(i.props.titleProps.className):"");if(!(!!o||!!c||!!a))return l(s,{});var h=o;return"string"==typeof o&&(h=l(b,{noWrap:!0,variant:"subtitle1",className:P.titleText,children:o})),c&&(h=l(x,{value:c})),n(f,e(e({},i.props.titleProps),{},{className:d,children:[p&&l("div",{className:P.icon,children:p}),h,a]}))}),t(i,"renderEndAdornment",function(){return!i.props.searchInclude||i.props.searchInclude.length<=0?l(s,{}):l(T,{title:"The search includes",small:!0,children:l("ul",{className:P.searchHelp,children:i.props.searchInclude.map(function(t,i){return l("li",{children:l(b,{variant:"body2",children:t})},i)})})})}),i}return i(u,c),r(u,[{key:"render",value:function(){var t,i,r,o;return n(W,{className:P.root,sx:this.props.sx,children:[this.renderTitle(),this.props.aboveAction,n(f,e(e({className:P.actionsRow},this.props.actionWrapProps),{},{children:[n(f,{className:P.actionsLeft,children:[n(f,{className:P.gridToolbar,children:[!1!==(null===(t=this.props.visibilityToolbar)||void 0===t?void 0:t.columns)&&l(p,{}),!1!==(null===(i=this.props.visibilityToolbar)||void 0===i?void 0:i.filters)&&l(d,{}),!1!==(null===(r=this.props.visibilityToolbar)||void 0===r?void 0:r.density)&&l(h,{}),!1!==(null===(o=this.props.visibilityToolbar)||void 0===o?void 0:o.export)&&l(g,{csvOptions:this.props.exportCsvOptions})]}),this.props.formCreate&&l(v,{children:this.props.formCreate}),this.props.afterAction]}),l(f,{className:P.actionsRight,children:n(f,{className:P.quickFilterWrap,children:[l(m,{fullWidth:!0,variant:"standard",size:"small",debounceMs:800,quickFilterParser:function(t){return[t]}}),this.renderEndAdornment()]})})]})),this.props.belowAction]})}}])}(),P={root:"Dino-ToolbarPannel-root",actionsRow:"Dino-ToolbarPannel-actionsRow",actionsLeft:"Dino-ToolbarPannel-actionsLeft",actionsRight:"Dino-ToolbarPannel-actionsRight",quickFilterWrap:"Dino-ToolbarPannel-quickFilterWrap",gridToolbar:"Dino-ToolbarPannel-gridToolbar",titleWrap:"Dino-ToolbarPannel-titleWrap",titleText:"Dino-ToolbarPannel-titleText",searchHelp:"Dino-ToolbarPannel-searchHelp",icon:"Dino-ToolbarPannel-icon"},W=u(f)(function(i){var r=i.theme;return t(t(t(t(t(t(t(t(t(t({padding:r.spacing(1,2,0)},".".concat(P.actionsRow),{display:"flex",flexWrap:"wrap"}),".".concat(P.actionsLeft),{flex:1,display:"flex",alignItems:"center",flexWrap:"wrap"}),".".concat(P.actionsRight),t({display:"flex",gap:"8px",alignItems:"center",width:"auto"},r.breakpoints.down("md"),{width:"100%"})),".".concat(P.quickFilterWrap),{display:"flex",alignItems:"center"}),".".concat(P.gridToolbar),{padding:0}),".".concat(P.titleWrap),{height:"var(--height-table-topbar, 48px)",display:"flex",alignItems:"center"}),".".concat(P.titleText),{fontWeight:700,flex:1}),".".concat(P.icon),{marginRight:8,display:"flex",alignItems:"center",justifyContent:"center",flex:"0 0 auto"}),".".concat(P.searchHelp),{margin:"0 0 0 18px",padding:0,li:{position:"relative"},"li::after":{content:'"►"',display:"inline-block",top:"50%",transform:"translateY(-50%)",position:"absolute",left:"-18px"}}),r.breakpoints.down("md"),{padding:r.spacing(1,1,0)})});export{y as default};
|
|
2
2
|
//# sourceMappingURL=toolbar-pannel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar-pannel.js","sources":["../../../src/table/toolbar-pannel.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { GridToolbarColumnsButton, GridToolbarDensitySelector } from '@mui/x-data-grid'\r\nimport { GridToolbarExport, GridToolbarFilterButton, GridToolbarQuickFilter } from '@mui/x-data-grid'\r\nimport { Box, BoxProps, styled, Typography } from '@mui/material'\r\nimport { BtnFormCreate } from './ui.buttons'\r\nimport { Breadcrumbs, IBreadcrumbConfig, HelpTooltip } from '../components'\r\n\r\nexport interface IToolbarPannelToolbarConfig {\r\n columns?: boolean\r\n filters?: boolean\r\n density?: boolean\r\n export?: boolean\r\n}\r\n\r\nexport interface IToolbarPannelProps {\r\n title?: React.ReactNode\r\n titleProps?: BoxProps\r\n icon?: React.ReactNode\r\n afterTitle?: React.ReactNode\r\n searchInclude?: string[]\r\n visibilityToolbar?: IToolbarPannelToolbarConfig\r\n formCreate?: React.ReactNode\r\n breadcrumbs?: IBreadcrumbConfig[]\r\n afterAction?: React.ReactNode\r\n belowAction?: React.ReactNode\r\n aboveAction?: React.ReactNode\r\n actionWrapProps?: BoxProps\r\n sx?: BoxProps['sx']\r\n}\r\n\r\nclass ToolbarPannel extends Component<React.PropsWithChildren<IToolbarPannelProps>> {\r\n render() {\r\n return (\r\n <ToolbarPannelStyled className={toolbarPannelClasses.root} sx={this.props.sx}>\r\n {this.renderTitle()}\r\n {this.props.aboveAction}\r\n <Box className={toolbarPannelClasses.actionsRow} {...this.props.actionWrapProps}>\r\n <Box className={toolbarPannelClasses.actionsLeft}>\r\n <Box className={toolbarPannelClasses.gridToolbar}>\r\n {this.props.visibilityToolbar?.columns !== false && <GridToolbarColumnsButton />}\r\n {this.props.visibilityToolbar?.filters !== false && <GridToolbarFilterButton />}\r\n {this.props.visibilityToolbar?.density !== false && <GridToolbarDensitySelector />}\r\n {this.props.visibilityToolbar?.export !== false && <GridToolbarExport />}\r\n </Box>\r\n {this.props.formCreate && <BtnFormCreate>{this.props.formCreate}</BtnFormCreate>}\r\n {this.props.afterAction}\r\n </Box>\r\n <Box className={toolbarPannelClasses.actionsRight}>\r\n <Box className={toolbarPannelClasses.quickFilterWrap}>\r\n <GridToolbarQuickFilter fullWidth variant='standard' size='small' debounceMs={800} quickFilterParser={(x: any) => [x]} />\r\n {this.renderEndAdornment()}\r\n </Box>\r\n </Box>\r\n </Box>\r\n {this.props.belowAction}\r\n </ToolbarPannelStyled>\r\n )\r\n }\r\n\r\n renderTitle = () => {\r\n const { title, afterTitle, breadcrumbs, icon } = this.props\r\n const titleClassName = `${toolbarPannelClasses.titleWrap}${this.props.titleProps?.className ? ` ${this.props.titleProps.className}` : ''}`\r\n\r\n const isVisible = !!title || !!breadcrumbs || !!afterTitle\r\n if (!isVisible) return <></>\r\n\r\n let titleElm = title\r\n if (typeof title === 'string') {\r\n titleElm = (\r\n <Typography noWrap variant='subtitle1' className={toolbarPannelClasses.titleText}>\r\n {title}\r\n </Typography>\r\n )\r\n }\r\n if (breadcrumbs) titleElm = <Breadcrumbs value={breadcrumbs} />\r\n\r\n return (\r\n <Box {...this.props.titleProps} className={titleClassName}>\r\n {icon && <div className={toolbarPannelClasses.icon}>{icon}</div>}\r\n {titleElm}\r\n {afterTitle}\r\n </Box>\r\n )\r\n }\r\n\r\n renderEndAdornment = () => {\r\n if (!this.props.searchInclude || this.props.searchInclude.length <= 0) return <></>\r\n return (\r\n <HelpTooltip title='The search includes' small>\r\n <ul className={toolbarPannelClasses.searchHelp}>\r\n {this.props.searchInclude.map((item, index) => (\r\n <li key={index}>\r\n <Typography variant='body2'>{item}</Typography>\r\n </li>\r\n ))}\r\n </ul>\r\n </HelpTooltip>\r\n )\r\n }\r\n}\r\nexport default ToolbarPannel\r\n\r\nconst toolbarPannelClasses = {\r\n root: 'Dino-ToolbarPannel-root',\r\n actionsRow: 'Dino-ToolbarPannel-actionsRow',\r\n actionsLeft: 'Dino-ToolbarPannel-actionsLeft',\r\n actionsRight: 'Dino-ToolbarPannel-actionsRight',\r\n quickFilterWrap: 'Dino-ToolbarPannel-quickFilterWrap',\r\n gridToolbar: 'Dino-ToolbarPannel-gridToolbar',\r\n titleWrap: 'Dino-ToolbarPannel-titleWrap',\r\n titleText: 'Dino-ToolbarPannel-titleText',\r\n searchHelp: 'Dino-ToolbarPannel-searchHelp',\r\n icon: 'Dino-ToolbarPannel-icon'\r\n}\r\n\r\nconst ToolbarPannelStyled = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(1, 2, 0),\r\n [`.${toolbarPannelClasses.actionsRow}`]: { display: 'flex', flexWrap: 'wrap' },\r\n [`.${toolbarPannelClasses.actionsLeft}`]: { flex: 1, display: 'flex', alignItems: 'center', flexWrap: 'wrap' },\r\n [`.${toolbarPannelClasses.actionsRight}`]: {\r\n display: 'flex',\r\n gap: '8px',\r\n alignItems: 'center',\r\n width: 'auto',\r\n [theme.breakpoints.down('md')]: { width: '100%' }\r\n },\r\n [`.${toolbarPannelClasses.quickFilterWrap}`]: { display: 'flex', alignItems: 'center' },\r\n [`.${toolbarPannelClasses.gridToolbar}`]: { padding: 0 },\r\n [`.${toolbarPannelClasses.titleWrap}`]: { height: 'var(--height-table-topbar, 48px)', display: 'flex', alignItems: 'center' },\r\n [`.${toolbarPannelClasses.titleText}`]: { fontWeight: 700, flex: 1 },\r\n [`.${toolbarPannelClasses.icon}`]: {\r\n marginRight: 8,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flex: '0 0 auto'\r\n },\r\n [`.${toolbarPannelClasses.searchHelp}`]: {\r\n margin: '0 0 0 18px',\r\n padding: 0,\r\n li: { position: 'relative' },\r\n 'li::after': {\r\n content: '\"►\"',\r\n display: 'inline-block',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n position: 'absolute',\r\n left: '-18px'\r\n }\r\n },\r\n [theme.breakpoints.down('md')]: { padding: theme.spacing(1, 1, 0) }\r\n}))\r\n"],"names":["ToolbarPannel","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","_this$props$titleProp","_this$props","props","title","afterTitle","breadcrumbs","icon","titleClassName","toolbarPannelClasses","titleWrap","titleProps","className","_jsx","titleElm","Typography","noWrap","variant","titleText","Breadcrumbs","value","_jsxs","Box","_objectSpread","children","searchInclude","HelpTooltip","small","searchHelp","map","item","index","_inherits","Component","_createClass","key","_this$props$visibilit","_this$props$visibilit2","_this$props$visibilit3","_this$props$visibilit4","ToolbarPannelStyled","root","sx","renderTitle","aboveAction","actionsRow","actionWrapProps","actionsLeft","gridToolbar","visibilityToolbar","columns","GridToolbarColumnsButton","filters","GridToolbarFilterButton","density","GridToolbarDensitySelector","GridToolbarExport","formCreate","BtnFormCreate","afterAction","actionsRight","quickFilterWrap","GridToolbarQuickFilter","fullWidth","size","debounceMs","quickFilterParser","x","renderEndAdornment","belowAction","styled","_ref","theme","padding","spacing","display","flexWrap","flex","alignItems","gap","width","breakpoints","down","height","fontWeight","marginRight","justifyContent","margin","li","position","content","top","transform","left"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"toolbar-pannel.js","sources":["../../../src/table/toolbar-pannel.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { GridToolbarColumnsButton, GridToolbarDensitySelector } from '@mui/x-data-grid'\r\nimport { GridToolbarExport, GridToolbarFilterButton, GridToolbarQuickFilter } from '@mui/x-data-grid'\r\nimport { Box, BoxProps, styled, Typography } from '@mui/material'\r\nimport { BtnFormCreate } from './ui.buttons'\r\nimport { Breadcrumbs, IBreadcrumbConfig, HelpTooltip } from '../components'\r\nimport { IExportCsvOptionsModel } from './csv-export-helper'\r\nimport { CustomExportButton } from './custom.export-button'\r\n\r\nexport interface IToolbarPannelToolbarConfig {\r\n columns?: boolean\r\n filters?: boolean\r\n density?: boolean\r\n export?: boolean\r\n}\r\n\r\nexport interface IToolbarPannelProps {\r\n title?: React.ReactNode\r\n titleProps?: BoxProps\r\n icon?: React.ReactNode\r\n afterTitle?: React.ReactNode\r\n searchInclude?: string[]\r\n visibilityToolbar?: IToolbarPannelToolbarConfig\r\n formCreate?: React.ReactNode\r\n breadcrumbs?: IBreadcrumbConfig[]\r\n afterAction?: React.ReactNode\r\n belowAction?: React.ReactNode\r\n aboveAction?: React.ReactNode\r\n actionWrapProps?: BoxProps\r\n sx?: BoxProps['sx']\r\n exportCsvOptions?: IExportCsvOptionsModel\r\n}\r\n\r\nclass ToolbarPannel extends Component<React.PropsWithChildren<IToolbarPannelProps>> {\r\n render() {\r\n return (\r\n <ToolbarPannelStyled className={toolbarPannelClasses.root} sx={this.props.sx}>\r\n {this.renderTitle()}\r\n {this.props.aboveAction}\r\n <Box className={toolbarPannelClasses.actionsRow} {...this.props.actionWrapProps}>\r\n <Box className={toolbarPannelClasses.actionsLeft}>\r\n <Box className={toolbarPannelClasses.gridToolbar}>\r\n {this.props.visibilityToolbar?.columns !== false && <GridToolbarColumnsButton />}\r\n {this.props.visibilityToolbar?.filters !== false && <GridToolbarFilterButton />}\r\n {this.props.visibilityToolbar?.density !== false && <GridToolbarDensitySelector />}\r\n {this.props.visibilityToolbar?.export !== false && <CustomExportButton csvOptions={this.props.exportCsvOptions} />}\r\n </Box>\r\n {this.props.formCreate && <BtnFormCreate>{this.props.formCreate}</BtnFormCreate>}\r\n {this.props.afterAction}\r\n </Box>\r\n <Box className={toolbarPannelClasses.actionsRight}>\r\n <Box className={toolbarPannelClasses.quickFilterWrap}>\r\n <GridToolbarQuickFilter fullWidth variant='standard' size='small' debounceMs={800} quickFilterParser={(x: any) => [x]} />\r\n {this.renderEndAdornment()}\r\n </Box>\r\n </Box>\r\n </Box>\r\n {this.props.belowAction}\r\n </ToolbarPannelStyled>\r\n )\r\n }\r\n\r\n renderTitle = () => {\r\n const { title, afterTitle, breadcrumbs, icon } = this.props\r\n const titleClassName = `${toolbarPannelClasses.titleWrap}${this.props.titleProps?.className ? ` ${this.props.titleProps.className}` : ''}`\r\n\r\n const isVisible = !!title || !!breadcrumbs || !!afterTitle\r\n if (!isVisible) return <></>\r\n\r\n let titleElm = title\r\n if (typeof title === 'string') {\r\n titleElm = (\r\n <Typography noWrap variant='subtitle1' className={toolbarPannelClasses.titleText}>\r\n {title}\r\n </Typography>\r\n )\r\n }\r\n if (breadcrumbs) titleElm = <Breadcrumbs value={breadcrumbs} />\r\n\r\n return (\r\n <Box {...this.props.titleProps} className={titleClassName}>\r\n {icon && <div className={toolbarPannelClasses.icon}>{icon}</div>}\r\n {titleElm}\r\n {afterTitle}\r\n </Box>\r\n )\r\n }\r\n\r\n renderEndAdornment = () => {\r\n if (!this.props.searchInclude || this.props.searchInclude.length <= 0) return <></>\r\n return (\r\n <HelpTooltip title='The search includes' small>\r\n <ul className={toolbarPannelClasses.searchHelp}>\r\n {this.props.searchInclude.map((item, index) => (\r\n <li key={index}>\r\n <Typography variant='body2'>{item}</Typography>\r\n </li>\r\n ))}\r\n </ul>\r\n </HelpTooltip>\r\n )\r\n }\r\n}\r\nexport default ToolbarPannel\r\n\r\nconst toolbarPannelClasses = {\r\n root: 'Dino-ToolbarPannel-root',\r\n actionsRow: 'Dino-ToolbarPannel-actionsRow',\r\n actionsLeft: 'Dino-ToolbarPannel-actionsLeft',\r\n actionsRight: 'Dino-ToolbarPannel-actionsRight',\r\n quickFilterWrap: 'Dino-ToolbarPannel-quickFilterWrap',\r\n gridToolbar: 'Dino-ToolbarPannel-gridToolbar',\r\n titleWrap: 'Dino-ToolbarPannel-titleWrap',\r\n titleText: 'Dino-ToolbarPannel-titleText',\r\n searchHelp: 'Dino-ToolbarPannel-searchHelp',\r\n icon: 'Dino-ToolbarPannel-icon'\r\n}\r\n\r\nconst ToolbarPannelStyled = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(1, 2, 0),\r\n [`.${toolbarPannelClasses.actionsRow}`]: { display: 'flex', flexWrap: 'wrap' },\r\n [`.${toolbarPannelClasses.actionsLeft}`]: { flex: 1, display: 'flex', alignItems: 'center', flexWrap: 'wrap' },\r\n [`.${toolbarPannelClasses.actionsRight}`]: {\r\n display: 'flex',\r\n gap: '8px',\r\n alignItems: 'center',\r\n width: 'auto',\r\n [theme.breakpoints.down('md')]: { width: '100%' }\r\n },\r\n [`.${toolbarPannelClasses.quickFilterWrap}`]: { display: 'flex', alignItems: 'center' },\r\n [`.${toolbarPannelClasses.gridToolbar}`]: { padding: 0 },\r\n [`.${toolbarPannelClasses.titleWrap}`]: { height: 'var(--height-table-topbar, 48px)', display: 'flex', alignItems: 'center' },\r\n [`.${toolbarPannelClasses.titleText}`]: { fontWeight: 700, flex: 1 },\r\n [`.${toolbarPannelClasses.icon}`]: {\r\n marginRight: 8,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flex: '0 0 auto'\r\n },\r\n [`.${toolbarPannelClasses.searchHelp}`]: {\r\n margin: '0 0 0 18px',\r\n padding: 0,\r\n li: { position: 'relative' },\r\n 'li::after': {\r\n content: '\"►\"',\r\n display: 'inline-block',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n position: 'absolute',\r\n left: '-18px'\r\n }\r\n },\r\n [theme.breakpoints.down('md')]: { padding: theme.spacing(1, 1, 0) }\r\n}))\r\n"],"names":["ToolbarPannel","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","_this$props$titleProp","_this$props","props","title","afterTitle","breadcrumbs","icon","titleClassName","toolbarPannelClasses","titleWrap","titleProps","className","_jsx","titleElm","Typography","noWrap","variant","titleText","Breadcrumbs","value","_jsxs","Box","_objectSpread","children","searchInclude","HelpTooltip","small","searchHelp","map","item","index","_inherits","Component","_createClass","key","_this$props$visibilit","_this$props$visibilit2","_this$props$visibilit3","_this$props$visibilit4","ToolbarPannelStyled","root","sx","renderTitle","aboveAction","actionsRow","actionWrapProps","actionsLeft","gridToolbar","visibilityToolbar","columns","GridToolbarColumnsButton","filters","GridToolbarFilterButton","density","GridToolbarDensitySelector","CustomExportButton","csvOptions","exportCsvOptions","formCreate","BtnFormCreate","afterAction","actionsRight","quickFilterWrap","GridToolbarQuickFilter","fullWidth","size","debounceMs","quickFilterParser","x","renderEndAdornment","belowAction","styled","_ref","theme","padding","spacing","display","flexWrap","flex","alignItems","gap","width","breakpoints","down","height","fontWeight","marginRight","justifyContent","margin","li","position","content","top","transform","left"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{slicedToArray as r,asyncToGenerator as t,typeof as n,regenerator as e,objectSpread2 as o,toArray as a,arrayLikeToArray as c}from"../../_virtual/_rollupPluginBabelHelpers.js";import i from"dayjs";var u=function(r){return new Promise(function(t){return setTimeout(t,r)})},s=function(){var n=t(e().m(function t(n,o){var a,c,i;return e().w(function(t){for(;;)switch(t.n){case 0:return t.n=1,Promise.all([n(),u(o)]);case 1:return a=t.v,c=r(a,1),i=c[0],t.a(2,i)}},t)}));return function(r,t){return n.apply(this,arguments)}}(),f=function(r){return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(r)},l=function(r){return/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(r)},d=function(r){return/^(\+?\d{1,4}[\s-]?)?((\(\d{1,4}\))|\d{1,4})[\s-]?\d{1,4}[\s-]?\d{1,9}$/.test((null!=r?r:"").trim())},y=function(r){return/^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i.test(r)},v=function(r,t){setTimeout(function(){window.scrollTo(o({top:0,left:0,behavior:"smooth"},r))},t||50)},h=function(){for(var r=arguments.length,t=new Array(r),n=0;n<r;n++)t[n]=arguments[n];return t.join(" ")},p=function(r){return r&&"object"===n(r)&&!Array.isArray(r)},A=function(){for(var r=arguments.length,t=new Array(r),n=0;n<r;n++)t[n]=arguments[n];return t.reduce(function(r,t){return t?(Object.keys(t).forEach(function(n){p(r[n])&&p(t[n])?r[n]=A(r[n],t[n]):r[n]=t[n]}),r):r},{})},g=function(t){try{return t?Object.entries(t).reduce(function(t,n){var e=r(n,2),o=e[0],a=e[1];return void 0!==a&&(t[o]=a),t},{}):{}}catch(r){return{}}},m=function(t){if("object"!==n(t)||null===t)return t;var e=Array.isArray(t)?[]:{};return Object.entries(t).forEach(function(t){var o=r(t,2),a=o[0],c=o[1];if(null==c||"string"==typeof c&&""===c.trim()||"number"==typeof c&&isNaN(c)||Array.isArray(c)&&0===c.length||"object"===n(c)&&!Array.isArray(c)&&0===Object.keys(m(c)).length);else if("object"!==n(c)||Array.isArray(c))e[a]=c;else{var i=m(c);Object.keys(i).length>0&&(e[a]=i)}}),e},b=function(r){try{var t=(new TextEncoder).encode(r),n="";return t.forEach(function(r){n+=String.fromCharCode(r)}),btoa(n)}catch(r){return console.error("Error encoding to base64",r),""}},j=function(r){try{for(var t=atob(r),n=new Uint8Array(t.length),e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return(new TextDecoder).decode(n)}catch(r){return void console.error("Error decoding base64",r)}},w=function(r,t){try{return r?JSON.parse(r):t}catch(r){return console.log("Try Parse Object error:",r),t}},F=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];try{if(!r)return[];var n=JSON.parse(r);return Array.isArray(n)?n:[]}catch(r){return t}},M=function(r,t){try{return r?parseInt(r):t}catch(r){return t}},S=function(r){return new Promise(function(t,n){var e=new FileReader;e.onload=function(){try{var r=e.result.split(/\r?\n/).filter(Boolean);if(r.length<1)return t([]);var n=r[0].split(",").map(function(r){return r.trim()}),o=r.slice(1).map(function(r){var t=r.split(",").map(function(r){return r.trim()}),e={};return n.forEach(function(r,n){var o;e[r]=null!==(o=t[n])&&void 0!==o?o:""}),e});t(o)}catch(r){t([])}},e.onerror=function(){n(new Error("Error reading file"))},e.readAsText(r)})},Y=function(r){return r<1024?r.toFixed(2)+" Kb":r<1048576?(r/1024).toFixed(2)+" Mb":r<1073741824?(r/1048576).toFixed(2)+" Gb":(r/1073741824).toFixed(2)+" Tb"},E=function(r){var t=null==r,n="string"==typeof r&&isNaN(Number(r));if(t||n)return"00:00:00";var e=Math.round(r),o=Math.floor(e/3600),a=Math.floor(e%3600/60),c=e%60,i=String(o).padStart(2,"0"),u=String(a).padStart(2,"0"),s=String(c).padStart(2,"0");return"".concat(i,":").concat(u,":").concat(s)},T=function(t){var n,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"$ ",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";try{n=parseFloat(t),isNaN(n)&&(n=0)}catch(r){n=0}var a=n.toFixed(2).split("."),c=r(a,2),i=c[0],u=c[1],s=i.replace(/\B(?=(\d{3})+(?!\d))/g," "),f=s;return"00"!==u&&(f="".concat(s,".").concat(u)),"".concat(e).concat(f).concat(o)},x=function(r){return r.toLocaleString("en-US")},N=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(!r)return r;var t=Array.from(r),n=a(t),e=n[0],o=c(n).slice(1);return"".concat(e.toUpperCase()).concat(o.join(""))},O={style1:"DD/MM/YYYY HH:mm",style2:"MMMM D, YYYY",style3:"MM-DD-YYYY"},D=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"style1";try{var n;if(!r)throw new Error;var e=null!==(n=O[t])&&void 0!==n?n:t;return i(r).format(e)}catch(r){return"unknown"}};export{g as cleanObject,j as decodeBase64,m as deepRemoveEmptyFields,b as encodeBase64,s as fetchDelay,N as formatCapitalizeFirstText,T as formatCurrency,D as formatDatetime,O as formatDatetimeStyles,E as formatDuration,Y as formatFileSize,x as formatNumberWithCommas,f as isGuid,l as isValidEmail,d as isValidPhoneNumber,y as isValidURL,h as mergeClasses,A as mergeObjects,u as sleep,F as tryParseArray,S as tryParseCsvFileToArray,M as tryParseIntRequired,w as tryParseObject,v as windowScrollToTop};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
import { DataSurfaceViewMode, LoadingModeRule } from './types';
|
|
1
|
+
import { DataSurfaceViewMode, LoadingModeRule, DataSurfaceFeatureMode } from './types';
|
|
2
2
|
import type { BoxProps } from '@mui/material';
|
|
3
3
|
import type { ComponentType, FC } from 'react';
|
|
4
4
|
import type { IViewGridConfig, IViewGridProps } from './view-grid/types';
|
|
5
5
|
import type { TPagination, TDataSurfaceState, TRenderableNode } from './types';
|
|
6
6
|
import type { IViewListConfig, IViewListProps } from './view-list';
|
|
7
|
-
export interface IDataSurfaceSlots {
|
|
7
|
+
export interface IDataSurfaceSlots<T> {
|
|
8
|
+
listViewProps?: IViewListProps<T>;
|
|
9
|
+
gridViewProps?: IViewGridProps<T>;
|
|
10
|
+
PanelLoading?: ComponentType<{
|
|
11
|
+
viewMode: DataSurfaceViewMode;
|
|
12
|
+
}>;
|
|
13
|
+
PanelNoData?: ComponentType<{
|
|
14
|
+
viewMode: DataSurfaceViewMode;
|
|
15
|
+
}>;
|
|
8
16
|
footer?: {
|
|
9
17
|
status?: TRenderableNode;
|
|
10
18
|
range?: TRenderableNode;
|
|
@@ -25,6 +33,8 @@ export interface IDataSurfaceProps<T> {
|
|
|
25
33
|
viewMode?: DataSurfaceViewMode;
|
|
26
34
|
/** Pagination metadata shared by both modes. */
|
|
27
35
|
pagination?: TPagination;
|
|
36
|
+
/** Default page size. @default 20 */
|
|
37
|
+
defaultPageSize?: number;
|
|
28
38
|
/** True while a page fetch is in flight (shows loading indicator). */
|
|
29
39
|
loading?: boolean;
|
|
30
40
|
/**
|
|
@@ -37,24 +47,30 @@ export interface IDataSurfaceProps<T> {
|
|
|
37
47
|
/** Load orchestration mode. @default 'pagination' */
|
|
38
48
|
loadMode?: LoadingModeRule;
|
|
39
49
|
sx?: BoxProps['sx'];
|
|
40
|
-
slots?: IDataSurfaceSlots
|
|
50
|
+
slots?: IDataSurfaceSlots<T>;
|
|
41
51
|
/** Enable row selection with checkboxes (List view only). */
|
|
42
52
|
selectable?: boolean;
|
|
43
|
-
/** Array of selected row IDs (
|
|
53
|
+
/** Array of selected row IDs (List view only). */
|
|
44
54
|
selectedIds?: (string | number)[];
|
|
45
|
-
/** Callback when selection changes. */
|
|
55
|
+
/** Callback when selection changes (List view only). */
|
|
46
56
|
onSelectionChange?: (selectedIds: (string | number)[]) => void;
|
|
47
57
|
}
|
|
48
58
|
export interface IDataSurfaceConfig<T> {
|
|
59
|
+
/** Feature mode determines the internal optimizations and rendering strategies. @default 'client' */
|
|
60
|
+
featureMode?: DataSurfaceFeatureMode;
|
|
61
|
+
/** Default view mode when not provided via props. @default 'grid' */
|
|
49
62
|
defaultViewMode?: DataSurfaceViewMode;
|
|
50
63
|
/** Default load mode when not provided via props. @default 'pagination' */
|
|
51
64
|
defaultLoadMode?: LoadingModeRule;
|
|
52
65
|
/** Default page size. @default 20 */
|
|
53
66
|
defaultPageSize?: number;
|
|
54
|
-
|
|
67
|
+
/** Configuration for List view. If not provided, List view will use default settings. */
|
|
55
68
|
listConfig?: IViewListConfig<T>;
|
|
69
|
+
/** Custom List component. If not provided, a default List component will be used. */
|
|
56
70
|
ListComponent?: ComponentType<IViewListProps<T>>;
|
|
71
|
+
/** Configuration for Grid view. If not provided, Grid view will use default settings. */
|
|
57
72
|
gridConfig?: IViewGridConfig<T>;
|
|
73
|
+
/** Custom Grid component. If not provided, a default Grid component will be used. */
|
|
58
74
|
GridComponent?: ComponentType<IViewGridProps<T>>;
|
|
59
75
|
}
|
|
60
76
|
export declare function createDataSurface<T>(config: IDataSurfaceConfig<T>): FC<IDataSurfaceProps<T>>;
|
|
@@ -9,6 +9,8 @@ export declare class DinoDataSurFace {
|
|
|
9
9
|
createViewList: typeof createViewList;
|
|
10
10
|
ButtonSwitch: import("react").FC<import("./button-switch").IButtonSwitchProps>;
|
|
11
11
|
createButtonSwitch: () => import("react").FC<import("./button-switch").IButtonSwitchProps>;
|
|
12
|
+
PanelPaginationFooter: import("react").FC<import("./ui.units").IPanelPaginationFooterProps>;
|
|
13
|
+
createPanelPaginationFooter: () => import("react").FC<import("./ui.units").IPanelPaginationFooterProps>;
|
|
12
14
|
setViewModeToURL: typeof setViewModeToURL;
|
|
13
15
|
getViewModeFromURL: typeof getViewModeFromURL;
|
|
14
16
|
setPaginationToURL: typeof setPaginationToURL;
|
|
@@ -8,6 +8,11 @@ export type TPagination = {
|
|
|
8
8
|
hasPrev?: boolean;
|
|
9
9
|
total?: number;
|
|
10
10
|
};
|
|
11
|
+
export declare const DataSurfaceFeatureMode: {
|
|
12
|
+
readonly client: "client";
|
|
13
|
+
readonly server: "server";
|
|
14
|
+
};
|
|
15
|
+
export type DataSurfaceFeatureMode = keyof typeof DataSurfaceFeatureMode;
|
|
11
16
|
/**
|
|
12
17
|
* Controls how the list is rendered into the DOM.
|
|
13
18
|
* - `normal` — all rows are mounted (suitable for small datasets)
|
|
@@ -6,4 +6,10 @@ export declare const useMergedConfig: <T>(props: IViewGridProps<T>, config: IVie
|
|
|
6
6
|
scrollingThreshold: number;
|
|
7
7
|
sizes: Partial<Record<import("./types").TGridSize, number>>;
|
|
8
8
|
Component: import("react").FC<import("./types").IViewGridItemProps<any>> | import("react").ComponentType<import("./types").IViewGridItemProps<T>>;
|
|
9
|
+
normalOptions: {
|
|
10
|
+
autoHeight: boolean;
|
|
11
|
+
} & import("./types").IViewGridNormalOptions;
|
|
12
|
+
virtualizedOptions: {
|
|
13
|
+
overscan: number;
|
|
14
|
+
} & import("./types").IViewGridVirtualizedOptions;
|
|
9
15
|
};
|