@semapps/date-components 0.4.0-alpha.8 → 0.4.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@material-ui/pickers"),r=require("react-admin"),n=require("@date-io/date-fns"),a=require("@fullcalendar/react"),o=require("@fullcalendar/daygrid"),i=require("@material-ui/core"),l=require("react-router-dom"),u=require("@fullcalendar/list");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=c(e),p=c(n),d=c(a),f=c(o),m=c(u);function b(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function v(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function g(){return(g=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function y(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var h=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2;return function(t){return("0".repeat(e)+t).slice(-e)}},O=h(4),P=h(2),k=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/,C=function(e){if(!(e instanceof Date)||isNaN(e.getDate()))return"";var t=O(e.getFullYear()),r=P(e.getMonth()+1),n=P(e.getDate()),a=P(e.getHours()),o=P(e.getMinutes());return"".concat(t,"-").concat(r,"-").concat(n,"T").concat(a,":").concat(o)},D=function(e){return null==e||""===e?"":e instanceof Date?C(e):k.test(e)?e:C(new Date(e))},T=function(e){return e?new Date(e):""},w=["allowEmpty","alwaysOn","basePath","component","defaultValue","format","formClassName","initialValue","initializeForm","input","isRequired","label","limitChoicesToValue","locale","meta","options","optionText","optionValue","parse","record","resource","source","textAlign","translate","translateChoice","labelTime"],j=["PickerComponent","format","label","options","source","resource","helperText","margin","onBlur","onChange","onFocus","parse","validate","variant","defaultValue","providerOptions","pickerVariant","stringFormat"],x=function(n){var a=n.PickerComponent,o=n.format,i=void 0===o?D:o,l=n.label,u=n.options,c=n.source,d=n.resource;n.helperText;var f=n.margin,m=void 0===f?"dense":f,h=n.onBlur,O=n.onChange,P=n.onFocus,k=n.parse,C=void 0===k?T:k,x=n.validate,S=n.variant,E=void 0===S?"filled":S;n.defaultValue;var V,q=n.providerOptions,I=q.utils,F=q.locale,M=n.pickerVariant,L=void 0===M?"dialog":M,R=n.stringFormat,B=void 0===R?"ISO":R,K=y(n,j),N=r.useTranslate(),_=r.useInput(function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?b(Object(r),!0).forEach((function(t){v(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):b(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({format:i,onBlur:h,onChange:O,onFocus:P,parse:C,resource:d,source:c,validate:x},K)),z=_.id,A=_.input,H=_.isRequired,U=_.meta,Y=U.error,G=U.touched,$=e.useCallback((function(e){Date.parse(e)?A.onChange("ISO"===B?e.toISOString():e.toString()):A.onChange(null)}),[]);return s.default.createElement(t.MuiPickersUtilsProvider,{utils:I||p.default,locale:F},s.default.createElement(a,g({id:z,InputLabelProps:{shrink:!0},label:s.default.createElement(r.FieldTitle,{label:l,source:c,resource:d,isRequired:H}),variant:L,inputVariant:E,margin:m,error:!(!G||!Y),helperText:" ",clearLabel:N("ra.action.clear_input_value"),cancelLabel:N("ra.action.cancel")},u,((V=K).allowEmpty,V.alwaysOn,V.basePath,V.component,V.defaultValue,V.format,V.formClassName,V.initialValue,V.initializeForm,V.input,V.isRequired,V.label,V.limitChoicesToValue,V.locale,V.meta,V.options,V.optionText,V.optionValue,V.parse,V.record,V.resource,V.source,V.textAlign,V.translate,V.translateChoice,V.labelTime,y(V,w)),{value:A.value?new Date(A.value):null,onChange:function(e){return $(e)},onBlur:function(){return A.onBlur(A.value?"ISO"===B?new Date(A.value).toISOString():new Date(A.value).toString():null)}})))};x.defaultProps={isRequired:!1,meta:{touched:!1,error:!1},options:{},providerOptions:{utils:p.default,locale:void 0}};var S=function(t){var n=t.label,a=t.startDate,o=t.endDate,i=t.linkType,u=l.useHistory(),c=r.useListContext(),s=c.ids,p=c.data,d=c.basePath,f=new URLSearchParams(u.location.search),m=e.useCallback((function(e){var t=e.event;e.jsEvent.preventDefault(),u.push(t.url)}),[]),b=e.useCallback((function(e){var t=e.view;f.set("month",t.currentStart.getMonth()+1),f.set("year",t.currentStart.getFullYear()),u.replace({pathname:u.location.pathname,search:"?"+f.toString()})}),[f]),v=e.useMemo((function(){return s.map((function(e){return{id:e,title:"string"==typeof n?p[e][n]:n(p[e]),start:"string"==typeof a?p[e][a]:a(p[e]),end:"string"==typeof o?p[e][o]:o(p[e]),url:r.linkToRecord(d,e)+"/"+i}}))}),[p,s,d]);return{initialDate:f.has("month")?new Date(f.get("year"),f.get("month")-1):new Date,events:v,datesSet:b,eventClick:m}},E=i.makeStyles((function(e){return{"@global":{".fc-button":{backgroundColor:e.palette.primary.main+" !important",border:"none !important",opacity:"1 !important"},".fc-day-today":{backgroundColor:e.palette.secondary.light+" !important"},"a.fc-daygrid-dot-event":{color:"black !important"}}}})),V=function(e){var t=i.useTheme(),r=S(e);return E(),s.default.createElement(d.default,g({plugins:[f.default],locale:e.locale,initialView:"dayGridMonth",eventBackgroundColor:t.palette.primary.main},r))};V.defaultProps={linkType:"edit"};var q=i.makeStyles((function(e){return{"@global":{".fc-button":{backgroundColor:e.palette.primary.main+" !important",border:"none !important",opacity:"1 !important"}}}})),I=function(e){var t=S(e);return q(),s.default.createElement(d.default,g({plugins:[m.default],locale:e.locale,initialView:"listMonth"},t))};I.defaultProps={linkType:"edit"};exports.CalendarList=V,exports.DateInput=function(e){return s.default.createElement(x,g({PickerComponent:t.DatePicker},e))},exports.DateTimeInput=function(e){return s.default.createElement(x,g({PickerComponent:t.DateTimePicker},e))},exports.DaysList=I,exports.KeyboardDateInput=function(e){return s.default.createElement(x,g({PickerComponent:t.KeyboardDatePicker},e))},exports.KeyboardDateTimeInput=function(e){return s.default.createElement(x,g({PickerComponent:t.KeyboardDateTimePicker},e))},exports.KeyboardTimeInput=function(e){return s.default.createElement(x,g({PickerComponent:t.KeyboardTimePicker},e))},exports.TimeInput=function(e){return s.default.createElement(x,g({PickerComponent:t.TimePicker},e))},exports.useFullCalendarProps=S;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@material-ui/pickers"),r=require("react-admin"),n=require("@material-ui/core"),a=require("@date-io/date-fns"),o=require("@material-ui/icons/Clear"),i=require("@fullcalendar/react"),l=require("@fullcalendar/daygrid"),u=require("react-router-dom"),c=require("@fullcalendar/list");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=s(e),d=s(a),f=s(o),m=s(i),b=s(l),g=s(c);function v(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function y(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function h(){return(h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function O(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var P=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2;return function(t){return("0".repeat(e)+t).slice(-e)}},k=P(4),C=P(2),D=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/,T=function(e){if(!(e instanceof Date)||isNaN(e.getDate()))return"";var t=k(e.getFullYear()),r=C(e.getMonth()+1),n=C(e.getDate()),a=C(e.getHours()),o=C(e.getMinutes());return"".concat(t,"-").concat(r,"-").concat(n,"T").concat(a,":").concat(o)},w=function(e){return null==e||""===e?"":e instanceof Date?T(e):D.test(e)?e:T(new Date(e))},j=function(e){return e?new Date(e):""},x=["allowEmpty","alwaysOn","basePath","component","defaultValue","format","formClassName","initialValue","initializeForm","input","isRequired","label","limitChoicesToValue","locale","meta","options","optionText","optionValue","parse","record","resource","source","textAlign","translate","translateChoice","labelTime"],E=["PickerComponent","format","label","options","source","resource","helperText","margin","onBlur","onChange","onFocus","parse","validate","variant","defaultValue","providerOptions","pickerVariant","stringFormat","allowClear"],S=function(a){var o=a.PickerComponent,i=a.format,l=void 0===i?w:i,u=a.label,c=a.options,s=a.source,m=a.resource,b=a.helperText,g=a.margin,P=void 0===g?"dense":g,k=a.onBlur,C=a.onChange,D=a.onFocus,T=a.parse,S=void 0===T?j:T,I=a.validate,q=a.variant,V=void 0===q?"filled":q;a.defaultValue;var F,M=a.providerOptions,B=M.utils,L=M.locale,R=a.pickerVariant,K=void 0===R?"dialog":R,N=a.stringFormat,_=void 0===N?"ISO":N,A=a.allowClear,H=O(a,E),z=r.useTranslate(),U=r.useInput(function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?v(Object(r),!0).forEach((function(t){y(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):v(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({format:l,onBlur:k,onChange:C,onFocus:D,parse:S,resource:m,source:s,validate:I},H)),Y=U.id,G=U.input,$=U.isRequired,J=U.meta,Q=J.error,W=J.touched,X=e.useCallback((function(e){Date.parse(e)?G.onChange("ISO"===_?e.toISOString():e.toString()):G.onChange(null)}),[]),Z=e.useCallback((function(e){e.stopPropagation(),G.onChange(null)}),[]);return p.default.createElement(t.MuiPickersUtilsProvider,{utils:B||d.default,locale:L},p.default.createElement(o,h({id:Y,InputLabelProps:{shrink:!0},InputProps:{endAdornment:A?p.default.createElement(n.IconButton,{onClick:Z},p.default.createElement(f.default,null)):void 0},label:p.default.createElement(r.FieldTitle,{label:u,source:s,resource:m,isRequired:$}),variant:K,inputVariant:V,margin:P,error:!(!W||!Q),helperText:p.default.createElement(r.InputHelperText,{touched:W,error:Q,helperText:b}),clearLabel:z("ra.action.clear_input_value"),cancelLabel:z("ra.action.cancel")},c,((F=H).allowEmpty,F.alwaysOn,F.basePath,F.component,F.defaultValue,F.format,F.formClassName,F.initialValue,F.initializeForm,F.input,F.isRequired,F.label,F.limitChoicesToValue,F.locale,F.meta,F.options,F.optionText,F.optionValue,F.parse,F.record,F.resource,F.source,F.textAlign,F.translate,F.translateChoice,F.labelTime,O(F,x)),{value:G.value?new Date(G.value):null,onChange:X,onBlur:function(){return G.onBlur(G.value?"ISO"===_?new Date(G.value).toISOString():new Date(G.value).toString():null)}})))};S.defaultProps={isRequired:!1,meta:{touched:!1,error:!1},options:{},providerOptions:{utils:d.default,locale:void 0},parse:function(e){return""===e?null:e}};var I=function(t){var n=t.label,a=t.startDate,o=t.endDate,i=t.linkType,l=u.useHistory(),c=r.useListContext(),s=c.ids,p=c.data,d=c.basePath,f=new URLSearchParams(l.location.search),m=e.useCallback((function(e){var t=e.event;e.jsEvent.preventDefault(),l.push(t.url)}),[]),b=e.useCallback((function(e){var t=e.view;f.set("month",t.currentStart.getMonth()+1),f.set("year",t.currentStart.getFullYear()),l.replace({pathname:l.location.pathname,search:"?"+f.toString()})}),[f]),g=e.useMemo((function(){return s.filter((function(e){return p[e]})).map((function(e){return{id:e,title:"string"==typeof n?p[e][n]:n(p[e]),start:"string"==typeof a?p[e][a]:a(p[e]),end:"string"==typeof o?p[e][o]:o(p[e]),url:r.linkToRecord(d,e)+"/"+i}}))}),[p,s,d]);return{initialDate:f.has("month")?new Date(f.get("year"),f.get("month")-1):new Date,events:g,datesSet:b,eventClick:m}},q=n.makeStyles((function(e){return{"@global":{".fc-button":{backgroundColor:e.palette.primary.main+" !important",border:"none !important",opacity:"1 !important"},".fc-day-today":{backgroundColor:e.palette.secondary.light+" !important"},"a.fc-daygrid-dot-event":{color:"black !important"}}}})),V=function(e){var t=n.useTheme(),r=I(e);return q(),p.default.createElement(m.default,h({plugins:[b.default],locale:e.locale,initialView:"dayGridMonth",eventBackgroundColor:t.palette.primary.main},r))};V.defaultProps={linkType:"edit"};var F=n.makeStyles((function(e){return{"@global":{".fc-button":{backgroundColor:e.palette.primary.main+" !important",border:"none !important",opacity:"1 !important"}}}})),M=function(e){var t=I(e);return F(),p.default.createElement(m.default,h({plugins:[g.default],locale:e.locale,initialView:"listMonth"},t))};M.defaultProps={linkType:"edit"};exports.CalendarList=V,exports.DateInput=function(e){return p.default.createElement(S,h({PickerComponent:t.DatePicker},e))},exports.DateTimeInput=function(e){return p.default.createElement(S,h({PickerComponent:t.DateTimePicker},e))},exports.DaysList=M,exports.KeyboardDateInput=function(e){return p.default.createElement(S,h({PickerComponent:t.KeyboardDatePicker},e))},exports.KeyboardDateTimeInput=function(e){return p.default.createElement(S,h({PickerComponent:t.KeyboardDateTimePicker},e))},exports.KeyboardTimeInput=function(e){return p.default.createElement(S,h({PickerComponent:t.KeyboardTimePicker},e))},exports.TimeInput=function(e){return p.default.createElement(S,h({PickerComponent:t.TimePicker},e))},exports.useFullCalendarProps=I;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/utils.js","../src/Picker.js","../src/useFullCalendarProps.js","../src/CalendarList.js","../src/DaysList.js","../src/index.js"],"sourcesContent":["const leftPad = (nb = 2) => value => ('0'.repeat(nb) + value).slice(-nb);\nconst leftPad4 = leftPad(4);\nconst leftPad2 = leftPad(2);\n\n// yyyy-MM-ddThh:mm\nconst dateTimeRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$/;\n\n/**\n * @param {Date} value value to convert\n * @returns {String} A standardized datetime (yyyy-MM-ddThh:mm), to be passed to an <input type=\"datetime-local\" />\n */\nconst convertDateToString = value => {\n if (!(value instanceof Date) || isNaN(value.getDate())) {\n return '';\n }\n\n const yy = leftPad4(value.getFullYear());\n const MM = leftPad2(value.getMonth() + 1);\n const dd = leftPad2(value.getDate());\n const hh = leftPad2(value.getHours());\n const mm = leftPad2(value.getMinutes());\n return `${yy}-${MM}-${dd}T${hh}:${mm}`;\n};\n\n/**\n * Converts a date from the Redux store, with timezone, to a date string\n * without timezone for use in an <input type=\"datetime-local\" />.\n *\n * @param {Date | String} value date string or object\n */\nexport const dateTimeFormatter = value => {\n // null, undefined and empty string values should not go through convertDateToString\n // otherwise, it returns undefined and will make the input an uncontrolled one.\n if (value == null || value === '') {\n return '';\n }\n\n if (value instanceof Date) {\n return convertDateToString(value);\n }\n\n // valid dates should not be converted\n if (dateTimeRegex.test(value)) {\n return value;\n }\n\n return convertDateToString(new Date(value));\n};\n\n/**\n * Converts a datetime string without timezone to a date object\n * with timezone, using the browser timezone.\n *\n * @param {String} value Date string, formatted as yyyy-MM-ddThh:mm\n * @return {Date}\n */\nexport const dateTimeParser = value => (value ? new Date(value) : '');\n","import React, { useCallback } from 'react';\nimport { useInput, useTranslate, FieldTitle } from 'react-admin';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport DateFnsUtils from '@date-io/date-fns';\nimport { dateTimeFormatter, dateTimeParser } from './utils';\n\nconst sanitizeRestProps = ({\n allowEmpty,\n alwaysOn,\n basePath,\n component,\n defaultValue,\n format,\n formClassName,\n initialValue,\n initializeForm,\n input,\n isRequired,\n label,\n limitChoicesToValue,\n locale,\n meta,\n options,\n optionText,\n optionValue,\n parse,\n record,\n resource,\n source,\n textAlign,\n translate,\n translateChoice,\n labelTime,\n ...rest\n}) => rest;\n\nconst Picker = ({\n PickerComponent,\n format = dateTimeFormatter,\n label,\n options,\n source,\n resource,\n helperText,\n margin = 'dense',\n onBlur,\n onChange,\n onFocus,\n parse = dateTimeParser,\n validate,\n variant = 'filled',\n defaultValue,\n providerOptions: { utils, locale },\n pickerVariant = 'dialog',\n stringFormat = 'ISO',\n ...rest\n}) => {\n const translate = useTranslate();\n const {\n id,\n input,\n isRequired,\n meta: { error, touched }\n } = useInput({\n format,\n onBlur,\n onChange,\n onFocus,\n parse,\n resource,\n source,\n validate,\n /* type: 'datetime-local', */\n ...rest\n });\n\n const handleChange = useCallback(value => {\n Date.parse(value)\n ? input.onChange(stringFormat === 'ISO' ? value.toISOString() : value.toString())\n : input.onChange(null);\n }, []);\n\n return (\n <MuiPickersUtilsProvider utils={utils || DateFnsUtils} locale={locale}>\n <PickerComponent\n id={id}\n InputLabelProps={{\n shrink: true\n }}\n label={<FieldTitle label={label} source={source} resource={resource} isRequired={isRequired} />}\n variant={pickerVariant}\n inputVariant={variant}\n margin={margin}\n error={!!(touched && error)}\n helperText=\" \"\n clearLabel={translate('ra.action.clear_input_value')}\n cancelLabel={translate('ra.action.cancel')}\n {...options}\n {...sanitizeRestProps(rest)}\n value={input.value ? new Date(input.value) : null}\n onChange={date => handleChange(date)}\n onBlur={() =>\n input.onBlur(\n input.value\n ? stringFormat === 'ISO'\n ? new Date(input.value).toISOString()\n : new Date(input.value).toString()\n : null\n )\n }\n />\n </MuiPickersUtilsProvider>\n );\n};\n\nPicker.defaultProps = {\n isRequired: false,\n meta: { touched: false, error: false },\n options: {},\n providerOptions: {\n utils: DateFnsUtils,\n locale: undefined\n }\n};\n\nexport default Picker;\n","import React, { useMemo, useCallback } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useListContext, linkToRecord } from 'react-admin';\n\nconst useFullCalendarProps = ({ label, startDate, endDate, linkType }) => {\n const history = useHistory();\n const { ids, data, basePath } = useListContext();\n\n let query = new URLSearchParams(history.location.search);\n\n // Bypass the link in order to use React-Router\n const eventClick = useCallback(({ event, jsEvent }) => {\n jsEvent.preventDefault();\n history.push(event.url);\n }, []);\n\n // Change the query string when month change\n const datesSet = useCallback(\n ({ view }) => {\n query.set('month', view.currentStart.getMonth() + 1);\n query.set('year', view.currentStart.getFullYear());\n history.replace({ pathname: history.location.pathname, search: '?' + query.toString() });\n },\n [query]\n );\n\n const events = useMemo(\n () =>\n ids.map(id => ({\n id,\n title: typeof label === 'string' ? data[id][label] : label(data[id]),\n start: typeof startDate === 'string' ? data[id][startDate] : startDate(data[id]),\n end: typeof endDate === 'string' ? data[id][endDate] : endDate(data[id]),\n url: linkToRecord(basePath, id) + '/' + linkType\n })),\n [data, ids, basePath]\n );\n\n return {\n initialDate: query.has('month') ? new Date(query.get('year'), query.get('month') - 1) : new Date(),\n events,\n datesSet,\n eventClick\n };\n};\n\nexport default useFullCalendarProps;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport { useTheme, makeStyles } from '@material-ui/core';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: theme.palette.primary.main + ' !important',\n border: 'none !important',\n opacity: '1 !important'\n },\n '.fc-day-today': {\n backgroundColor: theme.palette.secondary.light + ' !important'\n },\n // Overwrite violet color of links\n 'a.fc-daygrid-dot-event': {\n color: 'black !important'\n }\n }\n}));\n\nconst CalendarList = props => {\n const theme = useTheme();\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return (\n <FullCalendar\n plugins={[dayGridPlugin]}\n locale={props.locale}\n initialView=\"dayGridMonth\"\n eventBackgroundColor={theme.palette.primary.main}\n {...fullCalendarProps}\n />\n );\n};\n\nCalendarList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default CalendarList;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport listPlugin from '@fullcalendar/list';\nimport { makeStyles } from '@material-ui/core';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: theme.palette.primary.main + ' !important',\n border: 'none !important',\n opacity: '1 !important'\n }\n }\n}));\n\nconst DaysList = props => {\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return <FullCalendar plugins={[listPlugin]} locale={props.locale} initialView=\"listMonth\" {...fullCalendarProps} />;\n};\n\nDaysList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default DaysList;\n","import React from 'react';\nimport {\n DatePicker,\n TimePicker,\n DateTimePicker,\n KeyboardDatePicker,\n KeyboardDateTimePicker,\n KeyboardTimePicker\n} from '@material-ui/pickers';\nimport Picker from './Picker';\n\nconst DateInput = props => <Picker PickerComponent={DatePicker} {...props} />;\nconst TimeInput = props => <Picker PickerComponent={TimePicker} {...props} />;\nconst DateTimeInput = props => <Picker PickerComponent={DateTimePicker} {...props} />;\nconst KeyboardDateInput = props => <Picker PickerComponent={KeyboardDatePicker} {...props} />;\nconst KeyboardDateTimeInput = props => <Picker PickerComponent={KeyboardDateTimePicker} {...props} />;\nconst KeyboardTimeInput = props => <Picker PickerComponent={KeyboardTimePicker} {...props} />;\n\nexport { DateInput, TimeInput, DateTimeInput, KeyboardDateInput, KeyboardDateTimeInput, KeyboardTimeInput };\n\nexport { default as CalendarList } from './CalendarList';\nexport { default as DaysList } from './DaysList';\nexport { default as useFullCalendarProps } from './useFullCalendarProps';\n"],"names":["leftPad","nb","value","repeat","slice","leftPad4","leftPad2","dateTimeRegex","convertDateToString","Date","isNaN","getDate","yy","getFullYear","MM","getMonth","dd","hh","getHours","mm","getMinutes","dateTimeFormatter","test","dateTimeParser","Picker","PickerComponent","format","label","options","source","resource","helperText","margin","onBlur","onChange","onFocus","parse","validate","variant","defaultValue","providerOptions","utils","locale","pickerVariant","stringFormat","rest","translate","useTranslate","useInput","id","input","isRequired","meta","error","touched","handleChange","useCallback","toISOString","toString","React","MuiPickersUtilsProvider","DateFnsUtils","InputLabelProps","shrink","FieldTitle","inputVariant","clearLabel","cancelLabel","allowEmpty","alwaysOn","basePath","component","formClassName","initialValue","initializeForm","limitChoicesToValue","optionText","optionValue","record","textAlign","translateChoice","labelTime","date","defaultProps","undefined","useFullCalendarProps","startDate","endDate","linkType","history","useHistory","useListContext","ids","data","query","URLSearchParams","location","search","eventClick","event","jsEvent","preventDefault","push","url","datesSet","view","set","currentStart","replace","pathname","events","useMemo","map","title","start","end","linkToRecord","initialDate","has","get","useGlobalStyles","makeStyles","theme","backgroundColor","palette","primary","main","border","opacity","secondary","light","color","CalendarList","props","useTheme","fullCalendarProps","FullCalendar","plugins","dayGridPlugin","initialView","eventBackgroundColor","DaysList","listPlugin","DatePicker","DateTimePicker","KeyboardDatePicker","KeyboardDateTimePicker","KeyboardTimePicker","TimePicker"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/utils.js","../src/Picker.js","../src/useFullCalendarProps.js","../src/CalendarList.js","../src/DaysList.js","../src/index.js"],"sourcesContent":["const leftPad = (nb = 2) => value => ('0'.repeat(nb) + value).slice(-nb);\nconst leftPad4 = leftPad(4);\nconst leftPad2 = leftPad(2);\n\n// yyyy-MM-ddThh:mm\nconst dateTimeRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$/;\n\n/**\n * @param {Date} value value to convert\n * @returns {String} A standardized datetime (yyyy-MM-ddThh:mm), to be passed to an <input type=\"datetime-local\" />\n */\nconst convertDateToString = value => {\n if (!(value instanceof Date) || isNaN(value.getDate())) {\n return '';\n }\n\n const yy = leftPad4(value.getFullYear());\n const MM = leftPad2(value.getMonth() + 1);\n const dd = leftPad2(value.getDate());\n const hh = leftPad2(value.getHours());\n const mm = leftPad2(value.getMinutes());\n return `${yy}-${MM}-${dd}T${hh}:${mm}`;\n};\n\n/**\n * Converts a date from the Redux store, with timezone, to a date string\n * without timezone for use in an <input type=\"datetime-local\" />.\n *\n * @param {Date | String} value date string or object\n */\nexport const dateTimeFormatter = value => {\n // null, undefined and empty string values should not go through convertDateToString\n // otherwise, it returns undefined and will make the input an uncontrolled one.\n if (value == null || value === '') {\n return '';\n }\n\n if (value instanceof Date) {\n return convertDateToString(value);\n }\n\n // valid dates should not be converted\n if (dateTimeRegex.test(value)) {\n return value;\n }\n\n return convertDateToString(new Date(value));\n};\n\n/**\n * Converts a datetime string without timezone to a date object\n * with timezone, using the browser timezone.\n *\n * @param {String} value Date string, formatted as yyyy-MM-ddThh:mm\n * @return {Date}\n */\nexport const dateTimeParser = value => (value ? new Date(value) : '');\n","import React, { useCallback } from 'react';\nimport { useInput, useTranslate, FieldTitle, InputHelperText } from 'react-admin';\nimport { IconButton } from '@material-ui/core';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport DateFnsUtils from '@date-io/date-fns';\nimport { dateTimeFormatter, dateTimeParser } from './utils';\nimport ClearIcon from '@material-ui/icons/Clear';\n\nconst sanitizeRestProps = ({\n allowEmpty,\n alwaysOn,\n basePath,\n component,\n defaultValue,\n format,\n formClassName,\n initialValue,\n initializeForm,\n input,\n isRequired,\n label,\n limitChoicesToValue,\n locale,\n meta,\n options,\n optionText,\n optionValue,\n parse,\n record,\n resource,\n source,\n textAlign,\n translate,\n translateChoice,\n labelTime,\n ...rest\n}) => rest;\n\nconst Picker = ({\n PickerComponent,\n format = dateTimeFormatter,\n label,\n options,\n source,\n resource,\n helperText,\n margin = 'dense',\n onBlur,\n onChange,\n onFocus,\n parse = dateTimeParser,\n validate,\n variant = 'filled',\n defaultValue,\n providerOptions: { utils, locale },\n pickerVariant = 'dialog',\n stringFormat = 'ISO',\n allowClear,\n ...rest\n}) => {\n const translate = useTranslate();\n const {\n id,\n input,\n isRequired,\n meta: { error, touched }\n } = useInput({\n format,\n onBlur,\n onChange,\n onFocus,\n parse,\n resource,\n source,\n validate,\n /* type: 'datetime-local', */\n ...rest\n });\n\n const handleChange = useCallback(value => {\n Date.parse(value)\n ? input.onChange(stringFormat === 'ISO' ? value.toISOString() : value.toString())\n : input.onChange(null);\n }, []);\n\n const handleClear = useCallback(e => {\n e.stopPropagation();\n input.onChange(null);\n }, []);\n\n return (\n <MuiPickersUtilsProvider utils={utils || DateFnsUtils} locale={locale}>\n <PickerComponent\n id={id}\n InputLabelProps={{\n shrink: true\n }}\n InputProps={{\n endAdornment: allowClear ? (\n <IconButton onClick={handleClear}>\n <ClearIcon />\n </IconButton>\n ) : (\n undefined\n )\n }}\n label={<FieldTitle label={label} source={source} resource={resource} isRequired={isRequired} />}\n variant={pickerVariant}\n inputVariant={variant}\n margin={margin}\n error={!!(touched && error)}\n helperText={<InputHelperText touched={touched} error={error} helperText={helperText} />}\n clearLabel={translate('ra.action.clear_input_value')}\n cancelLabel={translate('ra.action.cancel')}\n {...options}\n {...sanitizeRestProps(rest)}\n value={input.value ? new Date(input.value) : null}\n onChange={handleChange}\n onBlur={() =>\n input.onBlur(\n input.value\n ? stringFormat === 'ISO'\n ? new Date(input.value).toISOString()\n : new Date(input.value).toString()\n : null\n )\n }\n />\n </MuiPickersUtilsProvider>\n );\n};\n\nPicker.defaultProps = {\n isRequired: false,\n meta: { touched: false, error: false },\n options: {},\n providerOptions: {\n utils: DateFnsUtils,\n locale: undefined\n },\n // Avoid saving an empty string in the dataset\n parse: value => (value === '' ? null : value)\n};\n\nexport default Picker;\n","import React, { useMemo, useCallback } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useListContext, linkToRecord } from 'react-admin';\n\nconst useFullCalendarProps = ({ label, startDate, endDate, linkType }) => {\n const history = useHistory();\n const { ids, data, basePath } = useListContext();\n\n let query = new URLSearchParams(history.location.search);\n\n // Bypass the link in order to use React-Router\n const eventClick = useCallback(({ event, jsEvent }) => {\n jsEvent.preventDefault();\n history.push(event.url);\n }, []);\n\n // Change the query string when month change\n const datesSet = useCallback(\n ({ view }) => {\n query.set('month', view.currentStart.getMonth() + 1);\n query.set('year', view.currentStart.getFullYear());\n history.replace({ pathname: history.location.pathname, search: '?' + query.toString() });\n },\n [query]\n );\n\n const events = useMemo(\n () =>\n ids\n .filter(id => data[id])\n .map(id => ({\n id,\n title: typeof label === 'string' ? data[id][label] : label(data[id]),\n start: typeof startDate === 'string' ? data[id][startDate] : startDate(data[id]),\n end: typeof endDate === 'string' ? data[id][endDate] : endDate(data[id]),\n url: linkToRecord(basePath, id) + '/' + linkType\n })),\n [data, ids, basePath]\n );\n\n return {\n initialDate: query.has('month') ? new Date(query.get('year'), query.get('month') - 1) : new Date(),\n events,\n datesSet,\n eventClick\n };\n};\n\nexport default useFullCalendarProps;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport { useTheme, makeStyles } from '@material-ui/core';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: theme.palette.primary.main + ' !important',\n border: 'none !important',\n opacity: '1 !important'\n },\n '.fc-day-today': {\n backgroundColor: theme.palette.secondary.light + ' !important'\n },\n // Overwrite violet color of links\n 'a.fc-daygrid-dot-event': {\n color: 'black !important'\n }\n }\n}));\n\nconst CalendarList = props => {\n const theme = useTheme();\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return (\n <FullCalendar\n plugins={[dayGridPlugin]}\n locale={props.locale}\n initialView=\"dayGridMonth\"\n eventBackgroundColor={theme.palette.primary.main}\n {...fullCalendarProps}\n />\n );\n};\n\nCalendarList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default CalendarList;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport listPlugin from '@fullcalendar/list';\nimport { makeStyles } from '@material-ui/core';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: theme.palette.primary.main + ' !important',\n border: 'none !important',\n opacity: '1 !important'\n }\n }\n}));\n\nconst DaysList = props => {\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return <FullCalendar plugins={[listPlugin]} locale={props.locale} initialView=\"listMonth\" {...fullCalendarProps} />;\n};\n\nDaysList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default DaysList;\n","import React from 'react';\nimport {\n DatePicker,\n TimePicker,\n DateTimePicker,\n KeyboardDatePicker,\n KeyboardDateTimePicker,\n KeyboardTimePicker\n} from '@material-ui/pickers';\nimport Picker from './Picker';\n\nconst DateInput = props => <Picker PickerComponent={DatePicker} {...props} />;\nconst TimeInput = props => <Picker PickerComponent={TimePicker} {...props} />;\nconst DateTimeInput = props => <Picker PickerComponent={DateTimePicker} {...props} />;\nconst KeyboardDateInput = props => <Picker PickerComponent={KeyboardDatePicker} {...props} />;\nconst KeyboardDateTimeInput = props => <Picker PickerComponent={KeyboardDateTimePicker} {...props} />;\nconst KeyboardTimeInput = props => <Picker PickerComponent={KeyboardTimePicker} {...props} />;\n\nexport { DateInput, TimeInput, DateTimeInput, KeyboardDateInput, KeyboardDateTimeInput, KeyboardTimeInput };\n\nexport { default as CalendarList } from './CalendarList';\nexport { default as DaysList } from './DaysList';\nexport { default as useFullCalendarProps } from './useFullCalendarProps';\n"],"names":["leftPad","nb","value","repeat","slice","leftPad4","leftPad2","dateTimeRegex","convertDateToString","Date","isNaN","getDate","yy","getFullYear","MM","getMonth","dd","hh","getHours","mm","getMinutes","concat","dateTimeFormatter","test","dateTimeParser","Picker","_ref2","PickerComponent","_ref2$format","format","label","options","source","resource","helperText","_ref2$margin","margin","onBlur","onChange","onFocus","_ref2$parse","parse","validate","_ref2$variant","variant","defaultValue","_ref","_ref2$providerOptions","providerOptions","utils","locale","_ref2$pickerVariant","pickerVariant","_ref2$stringFormat","stringFormat","allowClear","rest","_objectWithoutProperties","_excluded2","translate","useTranslate","_useInput","useInput","_objectSpread","id","input","isRequired","_useInput$meta","meta","error","touched","handleChange","useCallback","toISOString","toString","handleClear","e","stopPropagation","React","MuiPickersUtilsProvider","DateFnsUtils","_extends","InputLabelProps","shrink","InputProps","endAdornment","createElement","IconButton","onClick","ClearIcon","undefined","FieldTitle","inputVariant","InputHelperText","clearLabel","cancelLabel","allowEmpty","alwaysOn","basePath","component","formClassName","initialValue","initializeForm","limitChoicesToValue","optionText","optionValue","record","textAlign","translateChoice","labelTime","_excluded","defaultProps","useFullCalendarProps","startDate","endDate","linkType","history","useHistory","_useListContext","useListContext","ids","data","query","URLSearchParams","location","search","eventClick","event","jsEvent","preventDefault","push","url","datesSet","_ref3","view","set","currentStart","replace","pathname","events","useMemo","filter","map","title","start","end","linkToRecord","initialDate","has","get","useGlobalStyles","makeStyles","theme","@global",".fc-button","backgroundColor","palette","primary","main","border","opacity",".fc-day-today","secondary","light","a.fc-daygrid-dot-event","color","CalendarList","props","useTheme","fullCalendarProps","FullCalendar","plugins","dayGridPlugin","initialView","eventBackgroundColor","DaysList","listPlugin","DatePicker","DateTimePicker","KeyboardDatePicker","KeyboardDateTimePicker","KeyboardTimePicker","TimePicker"],"mappings":"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"}
package/dist/index.es.js CHANGED
@@ -1,2 +1,2 @@
1
- import e,{useCallback as t,useMemo as r}from"react";import{MuiPickersUtilsProvider as n,DatePicker as a,TimePicker as o,DateTimePicker as i,KeyboardDatePicker as l,KeyboardDateTimePicker as c,KeyboardTimePicker as u}from"@material-ui/pickers";import{useTranslate as p,useInput as s,FieldTitle as m,useListContext as f,linkToRecord as d}from"react-admin";import g from"@date-io/date-fns";import v from"@fullcalendar/react";import b from"@fullcalendar/daygrid";import{makeStyles as y,useTheme as h}from"@material-ui/core";import{useHistory as O}from"react-router-dom";import P from"@fullcalendar/list";function w(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function C(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function k(){return(k=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function D(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var j=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2;return function(t){return("0".repeat(e)+t).slice(-e)}},S=j(4),E=j(2),V=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/,T=function(e){if(!(e instanceof Date)||isNaN(e.getDate()))return"";var t=S(e.getFullYear()),r=E(e.getMonth()+1),n=E(e.getDate()),a=E(e.getHours()),o=E(e.getMinutes());return"".concat(t,"-").concat(r,"-").concat(n,"T").concat(a,":").concat(o)},x=function(e){return null==e||""===e?"":e instanceof Date?T(e):V.test(e)?e:T(new Date(e))},F=function(e){return e?new Date(e):""},I=["allowEmpty","alwaysOn","basePath","component","defaultValue","format","formClassName","initialValue","initializeForm","input","isRequired","label","limitChoicesToValue","locale","meta","options","optionText","optionValue","parse","record","resource","source","textAlign","translate","translateChoice","labelTime"],B=["PickerComponent","format","label","options","source","resource","helperText","margin","onBlur","onChange","onFocus","parse","validate","variant","defaultValue","providerOptions","pickerVariant","stringFormat"],R=function(r){var a=r.PickerComponent,o=r.format,i=void 0===o?x:o,l=r.label,c=r.options,u=r.source,f=r.resource;r.helperText;var d=r.margin,v=void 0===d?"dense":d,b=r.onBlur,y=r.onChange,h=r.onFocus,O=r.parse,P=void 0===O?F:O,j=r.validate,S=r.variant,E=void 0===S?"filled":S;r.defaultValue;var V,T=r.providerOptions,R=T.utils,q=T.locale,M=r.pickerVariant,L=void 0===M?"dialog":M,N=r.stringFormat,z=void 0===N?"ISO":N,A=D(r,B),Y=p(),_=s(function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?w(Object(r),!0).forEach((function(t){C(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):w(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({format:i,onBlur:b,onChange:y,onFocus:h,parse:P,resource:f,source:u,validate:j},A)),G=_.id,H=_.input,U=_.isRequired,$=_.meta,J=$.error,K=$.touched,Q=t((function(e){Date.parse(e)?H.onChange("ISO"===z?e.toISOString():e.toString()):H.onChange(null)}),[]);return e.createElement(n,{utils:R||g,locale:q},e.createElement(a,k({id:G,InputLabelProps:{shrink:!0},label:e.createElement(m,{label:l,source:u,resource:f,isRequired:U}),variant:L,inputVariant:E,margin:v,error:!(!K||!J),helperText:" ",clearLabel:Y("ra.action.clear_input_value"),cancelLabel:Y("ra.action.cancel")},c,((V=A).allowEmpty,V.alwaysOn,V.basePath,V.component,V.defaultValue,V.format,V.formClassName,V.initialValue,V.initializeForm,V.input,V.isRequired,V.label,V.limitChoicesToValue,V.locale,V.meta,V.options,V.optionText,V.optionValue,V.parse,V.record,V.resource,V.source,V.textAlign,V.translate,V.translateChoice,V.labelTime,D(V,I)),{value:H.value?new Date(H.value):null,onChange:function(e){return Q(e)},onBlur:function(){return H.onBlur(H.value?"ISO"===z?new Date(H.value).toISOString():new Date(H.value).toString():null)}})))};R.defaultProps={isRequired:!1,meta:{touched:!1,error:!1},options:{},providerOptions:{utils:g,locale:void 0}};var q=function(e){var n=e.label,a=e.startDate,o=e.endDate,i=e.linkType,l=O(),c=f(),u=c.ids,p=c.data,s=c.basePath,m=new URLSearchParams(l.location.search),g=t((function(e){var t=e.event;e.jsEvent.preventDefault(),l.push(t.url)}),[]),v=t((function(e){var t=e.view;m.set("month",t.currentStart.getMonth()+1),m.set("year",t.currentStart.getFullYear()),l.replace({pathname:l.location.pathname,search:"?"+m.toString()})}),[m]),b=r((function(){return u.map((function(e){return{id:e,title:"string"==typeof n?p[e][n]:n(p[e]),start:"string"==typeof a?p[e][a]:a(p[e]),end:"string"==typeof o?p[e][o]:o(p[e]),url:d(s,e)+"/"+i}}))}),[p,u,s]);return{initialDate:m.has("month")?new Date(m.get("year"),m.get("month")-1):new Date,events:b,datesSet:v,eventClick:g}},M=y((function(e){return{"@global":{".fc-button":{backgroundColor:e.palette.primary.main+" !important",border:"none !important",opacity:"1 !important"},".fc-day-today":{backgroundColor:e.palette.secondary.light+" !important"},"a.fc-daygrid-dot-event":{color:"black !important"}}}})),L=function(t){var r=h(),n=q(t);return M(),e.createElement(v,k({plugins:[b],locale:t.locale,initialView:"dayGridMonth",eventBackgroundColor:r.palette.primary.main},n))};L.defaultProps={linkType:"edit"};var N=y((function(e){return{"@global":{".fc-button":{backgroundColor:e.palette.primary.main+" !important",border:"none !important",opacity:"1 !important"}}}})),z=function(t){var r=q(t);return N(),e.createElement(v,k({plugins:[P],locale:t.locale,initialView:"listMonth"},r))};z.defaultProps={linkType:"edit"};var A=function(t){return e.createElement(R,k({PickerComponent:a},t))},Y=function(t){return e.createElement(R,k({PickerComponent:o},t))},_=function(t){return e.createElement(R,k({PickerComponent:i},t))},G=function(t){return e.createElement(R,k({PickerComponent:l},t))},H=function(t){return e.createElement(R,k({PickerComponent:c},t))},U=function(t){return e.createElement(R,k({PickerComponent:u},t))};export{L as CalendarList,A as DateInput,_ as DateTimeInput,z as DaysList,G as KeyboardDateInput,H as KeyboardDateTimeInput,U as KeyboardTimeInput,Y as TimeInput,q as useFullCalendarProps};
1
+ import e,{useCallback as t,useMemo as r}from"react";import{MuiPickersUtilsProvider as n,DatePicker as a,TimePicker as o,DateTimePicker as i,KeyboardDatePicker as l,KeyboardDateTimePicker as c,KeyboardTimePicker as u}from"@material-ui/pickers";import{useTranslate as p,useInput as s,FieldTitle as m,InputHelperText as f,useListContext as d,linkToRecord as g}from"react-admin";import{IconButton as v,makeStyles as b,useTheme as h}from"@material-ui/core";import y from"@date-io/date-fns";import O from"@material-ui/icons/Clear";import C from"@fullcalendar/react";import P from"@fullcalendar/daygrid";import{useHistory as w}from"react-router-dom";import k from"@fullcalendar/list";function j(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function D(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function E(){return(E=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function S(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var T=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2;return function(t){return("0".repeat(e)+t).slice(-e)}},V=T(4),x=T(2),F=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/,I=function(e){if(!(e instanceof Date)||isNaN(e.getDate()))return"";var t=V(e.getFullYear()),r=x(e.getMonth()+1),n=x(e.getDate()),a=x(e.getHours()),o=x(e.getMinutes());return"".concat(t,"-").concat(r,"-").concat(n,"T").concat(a,":").concat(o)},B=function(e){return null==e||""===e?"":e instanceof Date?I(e):F.test(e)?e:I(new Date(e))},R=function(e){return e?new Date(e):""},q=["allowEmpty","alwaysOn","basePath","component","defaultValue","format","formClassName","initialValue","initializeForm","input","isRequired","label","limitChoicesToValue","locale","meta","options","optionText","optionValue","parse","record","resource","source","textAlign","translate","translateChoice","labelTime"],M=["PickerComponent","format","label","options","source","resource","helperText","margin","onBlur","onChange","onFocus","parse","validate","variant","defaultValue","providerOptions","pickerVariant","stringFormat","allowClear"],L=function(r){var a=r.PickerComponent,o=r.format,i=void 0===o?B:o,l=r.label,c=r.options,u=r.source,d=r.resource,g=r.helperText,b=r.margin,h=void 0===b?"dense":b,C=r.onBlur,P=r.onChange,w=r.onFocus,k=r.parse,T=void 0===k?R:k,V=r.validate,x=r.variant,F=void 0===x?"filled":x;r.defaultValue;var I,L=r.providerOptions,N=L.utils,A=L.locale,z=r.pickerVariant,Y=void 0===z?"dialog":z,_=r.stringFormat,G=void 0===_?"ISO":_,H=r.allowClear,U=S(r,M),$=p(),J=s(function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?j(Object(r),!0).forEach((function(t){D(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):j(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({format:i,onBlur:C,onChange:P,onFocus:w,parse:T,resource:d,source:u,validate:V},U)),K=J.id,Q=J.input,W=J.isRequired,X=J.meta,Z=X.error,ee=X.touched,te=t((function(e){Date.parse(e)?Q.onChange("ISO"===G?e.toISOString():e.toString()):Q.onChange(null)}),[]),re=t((function(e){e.stopPropagation(),Q.onChange(null)}),[]);return e.createElement(n,{utils:N||y,locale:A},e.createElement(a,E({id:K,InputLabelProps:{shrink:!0},InputProps:{endAdornment:H?e.createElement(v,{onClick:re},e.createElement(O,null)):void 0},label:e.createElement(m,{label:l,source:u,resource:d,isRequired:W}),variant:Y,inputVariant:F,margin:h,error:!(!ee||!Z),helperText:e.createElement(f,{touched:ee,error:Z,helperText:g}),clearLabel:$("ra.action.clear_input_value"),cancelLabel:$("ra.action.cancel")},c,((I=U).allowEmpty,I.alwaysOn,I.basePath,I.component,I.defaultValue,I.format,I.formClassName,I.initialValue,I.initializeForm,I.input,I.isRequired,I.label,I.limitChoicesToValue,I.locale,I.meta,I.options,I.optionText,I.optionValue,I.parse,I.record,I.resource,I.source,I.textAlign,I.translate,I.translateChoice,I.labelTime,S(I,q)),{value:Q.value?new Date(Q.value):null,onChange:te,onBlur:function(){return Q.onBlur(Q.value?"ISO"===G?new Date(Q.value).toISOString():new Date(Q.value).toString():null)}})))};L.defaultProps={isRequired:!1,meta:{touched:!1,error:!1},options:{},providerOptions:{utils:y,locale:void 0},parse:function(e){return""===e?null:e}};var N=function(e){var n=e.label,a=e.startDate,o=e.endDate,i=e.linkType,l=w(),c=d(),u=c.ids,p=c.data,s=c.basePath,m=new URLSearchParams(l.location.search),f=t((function(e){var t=e.event;e.jsEvent.preventDefault(),l.push(t.url)}),[]),v=t((function(e){var t=e.view;m.set("month",t.currentStart.getMonth()+1),m.set("year",t.currentStart.getFullYear()),l.replace({pathname:l.location.pathname,search:"?"+m.toString()})}),[m]),b=r((function(){return u.filter((function(e){return p[e]})).map((function(e){return{id:e,title:"string"==typeof n?p[e][n]:n(p[e]),start:"string"==typeof a?p[e][a]:a(p[e]),end:"string"==typeof o?p[e][o]:o(p[e]),url:g(s,e)+"/"+i}}))}),[p,u,s]);return{initialDate:m.has("month")?new Date(m.get("year"),m.get("month")-1):new Date,events:b,datesSet:v,eventClick:f}},A=b((function(e){return{"@global":{".fc-button":{backgroundColor:e.palette.primary.main+" !important",border:"none !important",opacity:"1 !important"},".fc-day-today":{backgroundColor:e.palette.secondary.light+" !important"},"a.fc-daygrid-dot-event":{color:"black !important"}}}})),z=function(t){var r=h(),n=N(t);return A(),e.createElement(C,E({plugins:[P],locale:t.locale,initialView:"dayGridMonth",eventBackgroundColor:r.palette.primary.main},n))};z.defaultProps={linkType:"edit"};var Y=b((function(e){return{"@global":{".fc-button":{backgroundColor:e.palette.primary.main+" !important",border:"none !important",opacity:"1 !important"}}}})),_=function(t){var r=N(t);return Y(),e.createElement(C,E({plugins:[k],locale:t.locale,initialView:"listMonth"},r))};_.defaultProps={linkType:"edit"};var G=function(t){return e.createElement(L,E({PickerComponent:a},t))},H=function(t){return e.createElement(L,E({PickerComponent:o},t))},U=function(t){return e.createElement(L,E({PickerComponent:i},t))},$=function(t){return e.createElement(L,E({PickerComponent:l},t))},J=function(t){return e.createElement(L,E({PickerComponent:c},t))},K=function(t){return e.createElement(L,E({PickerComponent:u},t))};export{z as CalendarList,G as DateInput,U as DateTimeInput,_ as DaysList,$ as KeyboardDateInput,J as KeyboardDateTimeInput,K as KeyboardTimeInput,H as TimeInput,N as useFullCalendarProps};
2
2
  //# sourceMappingURL=index.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/utils.js","../src/Picker.js","../src/useFullCalendarProps.js","../src/CalendarList.js","../src/DaysList.js","../src/index.js"],"sourcesContent":["const leftPad = (nb = 2) => value => ('0'.repeat(nb) + value).slice(-nb);\nconst leftPad4 = leftPad(4);\nconst leftPad2 = leftPad(2);\n\n// yyyy-MM-ddThh:mm\nconst dateTimeRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$/;\n\n/**\n * @param {Date} value value to convert\n * @returns {String} A standardized datetime (yyyy-MM-ddThh:mm), to be passed to an <input type=\"datetime-local\" />\n */\nconst convertDateToString = value => {\n if (!(value instanceof Date) || isNaN(value.getDate())) {\n return '';\n }\n\n const yy = leftPad4(value.getFullYear());\n const MM = leftPad2(value.getMonth() + 1);\n const dd = leftPad2(value.getDate());\n const hh = leftPad2(value.getHours());\n const mm = leftPad2(value.getMinutes());\n return `${yy}-${MM}-${dd}T${hh}:${mm}`;\n};\n\n/**\n * Converts a date from the Redux store, with timezone, to a date string\n * without timezone for use in an <input type=\"datetime-local\" />.\n *\n * @param {Date | String} value date string or object\n */\nexport const dateTimeFormatter = value => {\n // null, undefined and empty string values should not go through convertDateToString\n // otherwise, it returns undefined and will make the input an uncontrolled one.\n if (value == null || value === '') {\n return '';\n }\n\n if (value instanceof Date) {\n return convertDateToString(value);\n }\n\n // valid dates should not be converted\n if (dateTimeRegex.test(value)) {\n return value;\n }\n\n return convertDateToString(new Date(value));\n};\n\n/**\n * Converts a datetime string without timezone to a date object\n * with timezone, using the browser timezone.\n *\n * @param {String} value Date string, formatted as yyyy-MM-ddThh:mm\n * @return {Date}\n */\nexport const dateTimeParser = value => (value ? new Date(value) : '');\n","import React, { useCallback } from 'react';\nimport { useInput, useTranslate, FieldTitle } from 'react-admin';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport DateFnsUtils from '@date-io/date-fns';\nimport { dateTimeFormatter, dateTimeParser } from './utils';\n\nconst sanitizeRestProps = ({\n allowEmpty,\n alwaysOn,\n basePath,\n component,\n defaultValue,\n format,\n formClassName,\n initialValue,\n initializeForm,\n input,\n isRequired,\n label,\n limitChoicesToValue,\n locale,\n meta,\n options,\n optionText,\n optionValue,\n parse,\n record,\n resource,\n source,\n textAlign,\n translate,\n translateChoice,\n labelTime,\n ...rest\n}) => rest;\n\nconst Picker = ({\n PickerComponent,\n format = dateTimeFormatter,\n label,\n options,\n source,\n resource,\n helperText,\n margin = 'dense',\n onBlur,\n onChange,\n onFocus,\n parse = dateTimeParser,\n validate,\n variant = 'filled',\n defaultValue,\n providerOptions: { utils, locale },\n pickerVariant = 'dialog',\n stringFormat = 'ISO',\n ...rest\n}) => {\n const translate = useTranslate();\n const {\n id,\n input,\n isRequired,\n meta: { error, touched }\n } = useInput({\n format,\n onBlur,\n onChange,\n onFocus,\n parse,\n resource,\n source,\n validate,\n /* type: 'datetime-local', */\n ...rest\n });\n\n const handleChange = useCallback(value => {\n Date.parse(value)\n ? input.onChange(stringFormat === 'ISO' ? value.toISOString() : value.toString())\n : input.onChange(null);\n }, []);\n\n return (\n <MuiPickersUtilsProvider utils={utils || DateFnsUtils} locale={locale}>\n <PickerComponent\n id={id}\n InputLabelProps={{\n shrink: true\n }}\n label={<FieldTitle label={label} source={source} resource={resource} isRequired={isRequired} />}\n variant={pickerVariant}\n inputVariant={variant}\n margin={margin}\n error={!!(touched && error)}\n helperText=\" \"\n clearLabel={translate('ra.action.clear_input_value')}\n cancelLabel={translate('ra.action.cancel')}\n {...options}\n {...sanitizeRestProps(rest)}\n value={input.value ? new Date(input.value) : null}\n onChange={date => handleChange(date)}\n onBlur={() =>\n input.onBlur(\n input.value\n ? stringFormat === 'ISO'\n ? new Date(input.value).toISOString()\n : new Date(input.value).toString()\n : null\n )\n }\n />\n </MuiPickersUtilsProvider>\n );\n};\n\nPicker.defaultProps = {\n isRequired: false,\n meta: { touched: false, error: false },\n options: {},\n providerOptions: {\n utils: DateFnsUtils,\n locale: undefined\n }\n};\n\nexport default Picker;\n","import React, { useMemo, useCallback } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useListContext, linkToRecord } from 'react-admin';\n\nconst useFullCalendarProps = ({ label, startDate, endDate, linkType }) => {\n const history = useHistory();\n const { ids, data, basePath } = useListContext();\n\n let query = new URLSearchParams(history.location.search);\n\n // Bypass the link in order to use React-Router\n const eventClick = useCallback(({ event, jsEvent }) => {\n jsEvent.preventDefault();\n history.push(event.url);\n }, []);\n\n // Change the query string when month change\n const datesSet = useCallback(\n ({ view }) => {\n query.set('month', view.currentStart.getMonth() + 1);\n query.set('year', view.currentStart.getFullYear());\n history.replace({ pathname: history.location.pathname, search: '?' + query.toString() });\n },\n [query]\n );\n\n const events = useMemo(\n () =>\n ids.map(id => ({\n id,\n title: typeof label === 'string' ? data[id][label] : label(data[id]),\n start: typeof startDate === 'string' ? data[id][startDate] : startDate(data[id]),\n end: typeof endDate === 'string' ? data[id][endDate] : endDate(data[id]),\n url: linkToRecord(basePath, id) + '/' + linkType\n })),\n [data, ids, basePath]\n );\n\n return {\n initialDate: query.has('month') ? new Date(query.get('year'), query.get('month') - 1) : new Date(),\n events,\n datesSet,\n eventClick\n };\n};\n\nexport default useFullCalendarProps;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport { useTheme, makeStyles } from '@material-ui/core';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: theme.palette.primary.main + ' !important',\n border: 'none !important',\n opacity: '1 !important'\n },\n '.fc-day-today': {\n backgroundColor: theme.palette.secondary.light + ' !important'\n },\n // Overwrite violet color of links\n 'a.fc-daygrid-dot-event': {\n color: 'black !important'\n }\n }\n}));\n\nconst CalendarList = props => {\n const theme = useTheme();\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return (\n <FullCalendar\n plugins={[dayGridPlugin]}\n locale={props.locale}\n initialView=\"dayGridMonth\"\n eventBackgroundColor={theme.palette.primary.main}\n {...fullCalendarProps}\n />\n );\n};\n\nCalendarList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default CalendarList;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport listPlugin from '@fullcalendar/list';\nimport { makeStyles } from '@material-ui/core';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: theme.palette.primary.main + ' !important',\n border: 'none !important',\n opacity: '1 !important'\n }\n }\n}));\n\nconst DaysList = props => {\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return <FullCalendar plugins={[listPlugin]} locale={props.locale} initialView=\"listMonth\" {...fullCalendarProps} />;\n};\n\nDaysList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default DaysList;\n","import React from 'react';\nimport {\n DatePicker,\n TimePicker,\n DateTimePicker,\n KeyboardDatePicker,\n KeyboardDateTimePicker,\n KeyboardTimePicker\n} from '@material-ui/pickers';\nimport Picker from './Picker';\n\nconst DateInput = props => <Picker PickerComponent={DatePicker} {...props} />;\nconst TimeInput = props => <Picker PickerComponent={TimePicker} {...props} />;\nconst DateTimeInput = props => <Picker PickerComponent={DateTimePicker} {...props} />;\nconst KeyboardDateInput = props => <Picker PickerComponent={KeyboardDatePicker} {...props} />;\nconst KeyboardDateTimeInput = props => <Picker PickerComponent={KeyboardDateTimePicker} {...props} />;\nconst KeyboardTimeInput = props => <Picker PickerComponent={KeyboardTimePicker} {...props} />;\n\nexport { DateInput, TimeInput, DateTimeInput, KeyboardDateInput, KeyboardDateTimeInput, KeyboardTimeInput };\n\nexport { default as CalendarList } from './CalendarList';\nexport { default as DaysList } from './DaysList';\nexport { default as useFullCalendarProps } from './useFullCalendarProps';\n"],"names":["leftPad","nb","value","repeat","slice","leftPad4","leftPad2","dateTimeRegex","convertDateToString","Date","isNaN","getDate","yy","getFullYear","MM","getMonth","dd","hh","getHours","mm","getMinutes","dateTimeFormatter","test","dateTimeParser","Picker","PickerComponent","format","label","options","source","resource","helperText","margin","onBlur","onChange","onFocus","parse","validate","variant","defaultValue","providerOptions","utils","locale","pickerVariant","stringFormat","rest","translate","useTranslate","useInput","id","input","isRequired","meta","error","touched","handleChange","useCallback","toISOString","toString","React","MuiPickersUtilsProvider","DateFnsUtils","InputLabelProps","shrink","FieldTitle","inputVariant","clearLabel","cancelLabel","allowEmpty","alwaysOn","basePath","component","formClassName","initialValue","initializeForm","limitChoicesToValue","optionText","optionValue","record","textAlign","translateChoice","labelTime","date","defaultProps","undefined","useFullCalendarProps","startDate","endDate","linkType","history","useHistory","useListContext","ids","data","query","URLSearchParams","location","search","eventClick","event","jsEvent","preventDefault","push","url","datesSet","view","set","currentStart","replace","pathname","events","useMemo","map","title","start","end","linkToRecord","initialDate","has","get","useGlobalStyles","makeStyles","theme","backgroundColor","palette","primary","main","border","opacity","secondary","light","color","CalendarList","props","useTheme","fullCalendarProps","FullCalendar","plugins","dayGridPlugin","initialView","eventBackgroundColor","DaysList","listPlugin","DateInput","DatePicker","TimeInput","TimePicker","DateTimeInput","DateTimePicker","KeyboardDateInput","KeyboardDatePicker","KeyboardDateTimeInput","KeyboardDateTimePicker","KeyboardTimeInput","KeyboardTimePicker"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/utils.js","../src/Picker.js","../src/useFullCalendarProps.js","../src/CalendarList.js","../src/DaysList.js","../src/index.js"],"sourcesContent":["const leftPad = (nb = 2) => value => ('0'.repeat(nb) + value).slice(-nb);\nconst leftPad4 = leftPad(4);\nconst leftPad2 = leftPad(2);\n\n// yyyy-MM-ddThh:mm\nconst dateTimeRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$/;\n\n/**\n * @param {Date} value value to convert\n * @returns {String} A standardized datetime (yyyy-MM-ddThh:mm), to be passed to an <input type=\"datetime-local\" />\n */\nconst convertDateToString = value => {\n if (!(value instanceof Date) || isNaN(value.getDate())) {\n return '';\n }\n\n const yy = leftPad4(value.getFullYear());\n const MM = leftPad2(value.getMonth() + 1);\n const dd = leftPad2(value.getDate());\n const hh = leftPad2(value.getHours());\n const mm = leftPad2(value.getMinutes());\n return `${yy}-${MM}-${dd}T${hh}:${mm}`;\n};\n\n/**\n * Converts a date from the Redux store, with timezone, to a date string\n * without timezone for use in an <input type=\"datetime-local\" />.\n *\n * @param {Date | String} value date string or object\n */\nexport const dateTimeFormatter = value => {\n // null, undefined and empty string values should not go through convertDateToString\n // otherwise, it returns undefined and will make the input an uncontrolled one.\n if (value == null || value === '') {\n return '';\n }\n\n if (value instanceof Date) {\n return convertDateToString(value);\n }\n\n // valid dates should not be converted\n if (dateTimeRegex.test(value)) {\n return value;\n }\n\n return convertDateToString(new Date(value));\n};\n\n/**\n * Converts a datetime string without timezone to a date object\n * with timezone, using the browser timezone.\n *\n * @param {String} value Date string, formatted as yyyy-MM-ddThh:mm\n * @return {Date}\n */\nexport const dateTimeParser = value => (value ? new Date(value) : '');\n","import React, { useCallback } from 'react';\nimport { useInput, useTranslate, FieldTitle, InputHelperText } from 'react-admin';\nimport { IconButton } from '@material-ui/core';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport DateFnsUtils from '@date-io/date-fns';\nimport { dateTimeFormatter, dateTimeParser } from './utils';\nimport ClearIcon from '@material-ui/icons/Clear';\n\nconst sanitizeRestProps = ({\n allowEmpty,\n alwaysOn,\n basePath,\n component,\n defaultValue,\n format,\n formClassName,\n initialValue,\n initializeForm,\n input,\n isRequired,\n label,\n limitChoicesToValue,\n locale,\n meta,\n options,\n optionText,\n optionValue,\n parse,\n record,\n resource,\n source,\n textAlign,\n translate,\n translateChoice,\n labelTime,\n ...rest\n}) => rest;\n\nconst Picker = ({\n PickerComponent,\n format = dateTimeFormatter,\n label,\n options,\n source,\n resource,\n helperText,\n margin = 'dense',\n onBlur,\n onChange,\n onFocus,\n parse = dateTimeParser,\n validate,\n variant = 'filled',\n defaultValue,\n providerOptions: { utils, locale },\n pickerVariant = 'dialog',\n stringFormat = 'ISO',\n allowClear,\n ...rest\n}) => {\n const translate = useTranslate();\n const {\n id,\n input,\n isRequired,\n meta: { error, touched }\n } = useInput({\n format,\n onBlur,\n onChange,\n onFocus,\n parse,\n resource,\n source,\n validate,\n /* type: 'datetime-local', */\n ...rest\n });\n\n const handleChange = useCallback(value => {\n Date.parse(value)\n ? input.onChange(stringFormat === 'ISO' ? value.toISOString() : value.toString())\n : input.onChange(null);\n }, []);\n\n const handleClear = useCallback(e => {\n e.stopPropagation();\n input.onChange(null);\n }, []);\n\n return (\n <MuiPickersUtilsProvider utils={utils || DateFnsUtils} locale={locale}>\n <PickerComponent\n id={id}\n InputLabelProps={{\n shrink: true\n }}\n InputProps={{\n endAdornment: allowClear ? (\n <IconButton onClick={handleClear}>\n <ClearIcon />\n </IconButton>\n ) : (\n undefined\n )\n }}\n label={<FieldTitle label={label} source={source} resource={resource} isRequired={isRequired} />}\n variant={pickerVariant}\n inputVariant={variant}\n margin={margin}\n error={!!(touched && error)}\n helperText={<InputHelperText touched={touched} error={error} helperText={helperText} />}\n clearLabel={translate('ra.action.clear_input_value')}\n cancelLabel={translate('ra.action.cancel')}\n {...options}\n {...sanitizeRestProps(rest)}\n value={input.value ? new Date(input.value) : null}\n onChange={handleChange}\n onBlur={() =>\n input.onBlur(\n input.value\n ? stringFormat === 'ISO'\n ? new Date(input.value).toISOString()\n : new Date(input.value).toString()\n : null\n )\n }\n />\n </MuiPickersUtilsProvider>\n );\n};\n\nPicker.defaultProps = {\n isRequired: false,\n meta: { touched: false, error: false },\n options: {},\n providerOptions: {\n utils: DateFnsUtils,\n locale: undefined\n },\n // Avoid saving an empty string in the dataset\n parse: value => (value === '' ? null : value)\n};\n\nexport default Picker;\n","import React, { useMemo, useCallback } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useListContext, linkToRecord } from 'react-admin';\n\nconst useFullCalendarProps = ({ label, startDate, endDate, linkType }) => {\n const history = useHistory();\n const { ids, data, basePath } = useListContext();\n\n let query = new URLSearchParams(history.location.search);\n\n // Bypass the link in order to use React-Router\n const eventClick = useCallback(({ event, jsEvent }) => {\n jsEvent.preventDefault();\n history.push(event.url);\n }, []);\n\n // Change the query string when month change\n const datesSet = useCallback(\n ({ view }) => {\n query.set('month', view.currentStart.getMonth() + 1);\n query.set('year', view.currentStart.getFullYear());\n history.replace({ pathname: history.location.pathname, search: '?' + query.toString() });\n },\n [query]\n );\n\n const events = useMemo(\n () =>\n ids\n .filter(id => data[id])\n .map(id => ({\n id,\n title: typeof label === 'string' ? data[id][label] : label(data[id]),\n start: typeof startDate === 'string' ? data[id][startDate] : startDate(data[id]),\n end: typeof endDate === 'string' ? data[id][endDate] : endDate(data[id]),\n url: linkToRecord(basePath, id) + '/' + linkType\n })),\n [data, ids, basePath]\n );\n\n return {\n initialDate: query.has('month') ? new Date(query.get('year'), query.get('month') - 1) : new Date(),\n events,\n datesSet,\n eventClick\n };\n};\n\nexport default useFullCalendarProps;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport { useTheme, makeStyles } from '@material-ui/core';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: theme.palette.primary.main + ' !important',\n border: 'none !important',\n opacity: '1 !important'\n },\n '.fc-day-today': {\n backgroundColor: theme.palette.secondary.light + ' !important'\n },\n // Overwrite violet color of links\n 'a.fc-daygrid-dot-event': {\n color: 'black !important'\n }\n }\n}));\n\nconst CalendarList = props => {\n const theme = useTheme();\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return (\n <FullCalendar\n plugins={[dayGridPlugin]}\n locale={props.locale}\n initialView=\"dayGridMonth\"\n eventBackgroundColor={theme.palette.primary.main}\n {...fullCalendarProps}\n />\n );\n};\n\nCalendarList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default CalendarList;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport listPlugin from '@fullcalendar/list';\nimport { makeStyles } from '@material-ui/core';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: theme.palette.primary.main + ' !important',\n border: 'none !important',\n opacity: '1 !important'\n }\n }\n}));\n\nconst DaysList = props => {\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return <FullCalendar plugins={[listPlugin]} locale={props.locale} initialView=\"listMonth\" {...fullCalendarProps} />;\n};\n\nDaysList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default DaysList;\n","import React from 'react';\nimport {\n DatePicker,\n TimePicker,\n DateTimePicker,\n KeyboardDatePicker,\n KeyboardDateTimePicker,\n KeyboardTimePicker\n} from '@material-ui/pickers';\nimport Picker from './Picker';\n\nconst DateInput = props => <Picker PickerComponent={DatePicker} {...props} />;\nconst TimeInput = props => <Picker PickerComponent={TimePicker} {...props} />;\nconst DateTimeInput = props => <Picker PickerComponent={DateTimePicker} {...props} />;\nconst KeyboardDateInput = props => <Picker PickerComponent={KeyboardDatePicker} {...props} />;\nconst KeyboardDateTimeInput = props => <Picker PickerComponent={KeyboardDateTimePicker} {...props} />;\nconst KeyboardTimeInput = props => <Picker PickerComponent={KeyboardTimePicker} {...props} />;\n\nexport { DateInput, TimeInput, DateTimeInput, KeyboardDateInput, KeyboardDateTimeInput, KeyboardTimeInput };\n\nexport { default as CalendarList } from './CalendarList';\nexport { default as DaysList } from './DaysList';\nexport { default as useFullCalendarProps } from './useFullCalendarProps';\n"],"names":["leftPad","nb","value","repeat","slice","leftPad4","leftPad2","dateTimeRegex","convertDateToString","Date","isNaN","getDate","yy","getFullYear","MM","getMonth","dd","hh","getHours","mm","getMinutes","concat","dateTimeFormatter","test","dateTimeParser","Picker","_ref2","PickerComponent","_ref2$format","format","label","options","source","resource","helperText","_ref2$margin","margin","onBlur","onChange","onFocus","_ref2$parse","parse","validate","_ref2$variant","variant","defaultValue","_ref","_ref2$providerOptions","providerOptions","utils","locale","_ref2$pickerVariant","pickerVariant","_ref2$stringFormat","stringFormat","allowClear","rest","_objectWithoutProperties","_excluded2","translate","useTranslate","_useInput","useInput","_objectSpread","id","input","isRequired","_useInput$meta","meta","error","touched","handleChange","useCallback","toISOString","toString","handleClear","e","stopPropagation","React","MuiPickersUtilsProvider","DateFnsUtils","_extends","InputLabelProps","shrink","InputProps","endAdornment","createElement","IconButton","onClick","ClearIcon","undefined","FieldTitle","inputVariant","InputHelperText","clearLabel","cancelLabel","allowEmpty","alwaysOn","basePath","component","formClassName","initialValue","initializeForm","limitChoicesToValue","optionText","optionValue","record","textAlign","translateChoice","labelTime","_excluded","defaultProps","useFullCalendarProps","startDate","endDate","linkType","history","useHistory","_useListContext","useListContext","ids","data","query","URLSearchParams","location","search","eventClick","event","jsEvent","preventDefault","push","url","datesSet","_ref3","view","set","currentStart","replace","pathname","events","useMemo","filter","map","title","start","end","linkToRecord","initialDate","has","get","useGlobalStyles","makeStyles","theme","@global",".fc-button","backgroundColor","palette","primary","main","border","opacity",".fc-day-today","secondary","light","a.fc-daygrid-dot-event","color","CalendarList","props","useTheme","fullCalendarProps","FullCalendar","plugins","dayGridPlugin","initialView","eventBackgroundColor","DaysList","listPlugin","DateInput","DatePicker","TimeInput","TimePicker","DateTimeInput","DateTimePicker","KeyboardDateInput","KeyboardDatePicker","KeyboardDateTimeInput","KeyboardDateTimePicker","KeyboardTimeInput","KeyboardTimePicker"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@semapps/date-components",
3
- "version": "0.4.0-alpha.8",
3
+ "version": "0.4.0-rc.0",
4
4
  "description": "React-Admin components for date display and input",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Virtual Assembly",
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "peerDependencies": {
27
27
  "react": "^16.13.1 || ^17.0.0",
28
- "react-admin": "^3.13.1"
28
+ "react-admin": "^3.19.10"
29
29
  },
30
30
  "publishConfig": {
31
31
  "access": "public"
@@ -43,5 +43,5 @@
43
43
  "rollup-plugin-terser": "^5.3.0",
44
44
  "rollup-pluginutils": "^2.8.2"
45
45
  },
46
- "gitHead": "023a572db0aadedff0ecfb20c458b47acf9dbbfe"
46
+ "gitHead": "8538e6e7fc2cccfd6f112066a32edddb2f8c8e6a"
47
47
  }