@object-ui/plugin-calendar 3.3.0 → 3.3.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @object-ui/plugin-calendar
2
2
 
3
+ ## 3.3.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [b429568]
8
+ - @object-ui/components@3.3.1
9
+ - @object-ui/fields@3.3.1
10
+ - @object-ui/types@3.3.1
11
+ - @object-ui/core@3.3.1
12
+ - @object-ui/i18n@3.3.1
13
+ - @object-ui/react@3.3.1
14
+ - @object-ui/mobile@3.3.1
15
+
3
16
  ## 3.3.0
4
17
 
5
18
  ### Patch Changes
package/README.md CHANGED
@@ -193,6 +193,26 @@ const schema: CalendarViewSchema = {
193
193
  };
194
194
  ```
195
195
 
196
+ <!-- release-metadata:v3.3.0 -->
197
+
198
+ ## Compatibility
199
+
200
+ - **React:** 18.x or 19.x
201
+ - **Node.js:** ≥ 18
202
+ - **TypeScript:** ≥ 5.0 (strict mode)
203
+ - **`@objectstack/spec`:** ^3.3.0
204
+ - **`@objectstack/client`:** ^3.3.0
205
+ - **Tailwind CSS:** ≥ 3.4 (for packages with UI)
206
+
207
+ ## Links
208
+
209
+ - 📚 [Documentation](https://www.objectui.org/docs/plugins/plugin-calendar)
210
+ - 📦 [npm package](https://www.npmjs.com/package/@object-ui/plugin-calendar)
211
+ - 📝 [Changelog](./CHANGELOG.md)
212
+ - 🐛 [Report an issue](https://github.com/objectstack-ai/objectui/issues)
213
+ - 🤝 [Contributing Guide](https://github.com/objectstack-ai/objectui/blob/main/CONTRIBUTING.md)
214
+ - 🗺️ [Roadmap](https://github.com/objectstack-ai/objectui/blob/main/ROADMAP.md)
215
+
196
216
  ## License
197
217
 
198
- MIT
218
+ MIT — see [LICENSE](./LICENSE).
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import { useNavigationOverlay as f, useSchemaContext as p } from "@object-ui/rea
5
5
  import { CalendarIcon as m, ChevronLeftIcon as h, ChevronRightIcon as g, PlusIcon as _ } from "lucide-react";
6
6
  import { Button as v, Calendar as y, NavigationOverlay as b, Popover as x, PopoverContent as S, PopoverTrigger as C, Select as w, SelectContent as T, SelectItem as E, SelectTrigger as D, SelectValue as O, cn as k } from "@object-ui/components";
7
7
  //#region \0rolldown/runtime.js
8
- var A = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports), j = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (e, t) => (typeof require < "u" ? require : e)[t] }) : e)(function(e) {
8
+ var A = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports), j = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (e, t) => (typeof require < "u" ? require : e)[t] }) : e)(function(e) {
9
9
  if (typeof require < "u") return require.apply(this, arguments);
10
10
  throw Error("Calling `require` for \"" + e + "\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.");
11
11
  }), M = (e, t, n, r) => {
@@ -1,4 +1,4 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`react`),require(`@object-ui/core`),require(`@object-ui/react`),require(`lucide-react`),require(`@object-ui/components`)):typeof define==`function`&&define.amd?define([`exports`,`react`,`@object-ui/core`,`@object-ui/react`,`lucide-react`,`@object-ui/components`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.ObjectUIPluginCalendar={},e.React,e.ObjectUICore,e.ObjectUIReact,e.LucideReact,e.ObjectUIComponents))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var o=Object.create,s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty,f=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),p=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=l(t),a=0,o=i.length,u;a<o;a++)u=i[a],!d.call(e,u)&&u!==n&&s(e,u,{get:(e=>t[e]).bind(null,u),enumerable:!(r=c(t,u))||r.enumerable});return e};t=((e,t,n)=>(n=e==null?{}:o(u(e)),p(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e)))(t,1);var m=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);x(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},h={},g=(e,t,n,r)=>{x(n)&&h[n]||(x(n)&&(h[n]=new Date),m(e,t,n,r))},_=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},v=(e,t,n)=>{e.loadNamespaces(t,_(e,n))},y=(e,t,n,r)=>{if(x(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return v(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,_(e,r))},b=(e,t,n={})=>!t.languages||!t.languages.length?(g(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),x=e=>typeof e==`string`,S=e=>typeof e==`object`&&!!e,C=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,w={"&amp;":`&`,"&#38;":`&`,"&lt;":`<`,"&#60;":`<`,"&gt;":`>`,"&#62;":`>`,"&apos;":`'`,"&#39;":`'`,"&quot;":`"`,"&#34;":`"`,"&nbsp;":` `,"&#160;":` `,"&copy;":`©`,"&#169;":`©`,"&reg;":`®`,"&#174;":`®`,"&hellip;":`…`,"&#8230;":`…`,"&#x2F;":`/`,"&#47;":`/`},T=e=>w[e],E={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:e=>e.replace(C,T),transDefaultProps:void 0},D=()=>E,O,k=()=>O,A=(0,t.createContext)(),j=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},M=f((e=>{var t=require(`react`);function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var d=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?d:t.useSyncExternalStore})),N=f((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}function n(e,t){d||a.startTransition===void 0||(d=!0,console.error(`You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.`));var n=t();if(!f){var i=t();o(n,i)||(console.error(`The result of getSnapshot should be cached to avoid an infinite loop`),f=!0)}i=s({inst:{value:n,getSnapshot:t}});var p=i[0].inst,m=i[1];return l(function(){p.value=n,p.getSnapshot=t,r(p)&&m({inst:p})},[e,n,t]),c(function(){return r(p)&&m({inst:p}),e(function(){r(p)&&m({inst:p})})},[e]),u(n),n}function r(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!o(e,n)}catch{return!0}}function i(e,t){return t()}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart==`function`&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var a=require(`react`),o=typeof Object.is==`function`?Object.is:t,s=a.useState,c=a.useEffect,l=a.useLayoutEffect,u=a.useDebugValue,d=!1,f=!1,p=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?i:n;e.useSyncExternalStore=a.useSyncExternalStore===void 0?p:a.useSyncExternalStore,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop==`function`&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()})),P=f(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=M():t.exports=N()}))(),F={t:(e,t)=>{if(x(t))return t;if(S(t)&&x(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},I=()=>()=>{},L=(e,n={})=>{let{i18n:r}=n,{i18n:i,defaultNS:a}=(0,t.useContext)(A)||{},o=r||i||k();o&&!o.reportNamespaces&&(o.reportNamespaces=new j),o||g(o,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next`);let s=(0,t.useMemo)(()=>({...D(),...o?.options?.react,...n}),[o,n]),{useSuspense:c,keyPrefix:l}=s,u=e||a||o?.options?.defaultNS,d=x(u)?[u]:u||[`translation`],f=(0,t.useMemo)(()=>d,d);o?.reportNamespaces?.addUsedNamespaces?.(f);let p=(0,t.useRef)(0),m=(0,t.useCallback)(e=>{if(!o)return I;let{bindI18n:t,bindI18nStore:n}=s,r=()=>{p.current+=1,e()};return t&&o.on(t,r),n&&o.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>o.off(e,r)),n&&n.split(` `).forEach(e=>o.store.off(e,r))}},[o,s]),h=(0,t.useRef)(),_=(0,t.useCallback)(()=>{if(!o)return F;let e=!!(o.isInitialized||o.initializedStoreOnce)&&f.every(e=>b(e,o,s)),t=n.lng||o.language,r=p.current,i=h.current;if(i&&i.ready===e&&i.lng===t&&i.keyPrefix===l&&i.revision===r)return i;let a={t:o.getFixedT(t,s.nsMode===`fallback`?f:f[0],l),ready:e,lng:t,keyPrefix:l,revision:r};return h.current=a,a},[o,f,l,s,n.lng]),[S,C]=(0,t.useState)(0),{t:w,ready:T}=(0,P.useSyncExternalStore)(m,_,_);(0,t.useEffect)(()=>{if(o&&!T&&!c){let e=()=>C(e=>e+1);n.lng?y(o,n.lng,f,e):v(o,f,e)}},[o,n.lng,f,T,c,S]);let E=o||{},O=(0,t.useRef)(null),M=(0,t.useRef)(),N=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,`__original`,{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},L=(0,t.useMemo)(()=>{let e=E,t=e?.language,n=e;e&&(O.current&&O.current.__original===e&&M.current===t?n=O.current:(n=N(e),O.current=n,M.current=t));let r=!T&&!c?(...e)=>(g(o,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),w(...e)):w,i=[r,n,T];return i.t=r,i.i18n=n,i.ready=T,i},[w,E,T,E.resolvedLanguage,E.language,E.languages]);if(o&&c&&!T)throw new Promise(e=>{let t=()=>e();n.lng?y(o,n.lng,f,t):v(o,f,t)});return L},R=(0,t.createContext)(null);function z(e){let n=(0,t.useContext)(R),{t:r,i18n:i}=L(e);return{t:r,language:n?.language||i.language||`en`,changeLanguage:n?.changeLanguage||(async e=>{await i.changeLanguage(e)}),direction:n?.direction||`ltr`,i18n:i}}var B=f((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),V=f((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===O?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case _:return`Fragment`;case y:return`Profiler`;case v:return`StrictMode`;case C:return`Suspense`;case w:return`SuspenseList`;case D:return`Activity`}if(typeof e==`object`)switch(typeof e.tag==`number`&&console.error(`Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.`),e.$$typeof){case g:return`Portal`;case x:return e.displayName||`Context`;case b:return(e._context.displayName||`Context`)+`.Consumer`;case S:var n=e.render;return e=e.displayName,e||=(e=n.displayName||n.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case T:return n=e.displayName||null,n===null?t(e.type)||`Memo`:n;case E:n=e._payload,e=e._init;try{return t(e(n))}catch{}}return null}function n(e){return``+e}function r(e){try{n(e);var t=!1}catch{t=!0}if(t){t=console;var r=t.error,i=typeof Symbol==`function`&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||`Object`;return r.call(t,`The provided key is an unsupported type %s. This value must be coerced to a string before using it here.`,i),n(e)}}function i(e){if(e===_)return`<>`;if(typeof e==`object`&&e&&e.$$typeof===E)return`<...>`;try{var n=t(e);return n?`<`+n+`>`:`<...>`}catch{return`<...>`}}function a(){var e=k.A;return e===null?null:e.getOwner()}function o(){return Error(`react-stack-top-frame`)}function s(e){if(A.call(e,`key`)){var t=Object.getOwnPropertyDescriptor(e,`key`).get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function c(e,t){function n(){N||(N=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}n.isReactWarning=!0,Object.defineProperty(e,`key`,{get:n,configurable:!0})}function l(){var e=t(this.type);return P[e]||(P[e]=!0,console.error(`Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.`)),e=this.props.ref,e===void 0?null:e}function u(e,t,n,r,i,a){var o=n.ref;return e={$$typeof:h,type:e,key:t,props:n,_owner:r},(o===void 0?null:o)===null?Object.defineProperty(e,`ref`,{enumerable:!1,value:null}):Object.defineProperty(e,`ref`,{enumerable:!1,get:l}),e._store={},Object.defineProperty(e._store,`validated`,{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,`_debugInfo`,{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,`_debugStack`,{configurable:!1,enumerable:!1,writable:!0,value:i}),Object.defineProperty(e,`_debugTask`,{configurable:!1,enumerable:!1,writable:!0,value:a}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function d(e,n,i,o,l,d){var p=n.children;if(p!==void 0)if(o)if(j(p)){for(o=0;o<p.length;o++)f(p[o]);Object.freeze&&Object.freeze(p)}else console.error(`React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.`);else f(p);if(A.call(n,`key`)){p=t(e);var m=Object.keys(n).filter(function(e){return e!==`key`});o=0<m.length?`{key: someKey, `+m.join(`: ..., `)+`: ...}`:`{key: someKey}`,L[p+o]||(m=0<m.length?`{`+m.join(`: ..., `)+`: ...}`:`{}`,console.error(`A props object containing a "key" prop is being spread into JSX:
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`react`),require(`@object-ui/core`),require(`@object-ui/react`),require(`lucide-react`),require(`@object-ui/components`)):typeof define==`function`&&define.amd?define([`exports`,`react`,`@object-ui/core`,`@object-ui/react`,`lucide-react`,`@object-ui/components`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.ObjectUIPluginCalendar={},e.React,e.ObjectUICore,e.ObjectUIReact,e.LucideReact,e.ObjectUIComponents))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var o=Object.create,s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty,f=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),p=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=l(t),a=0,o=i.length,u;a<o;a++)u=i[a],!d.call(e,u)&&u!==n&&s(e,u,{get:(e=>t[e]).bind(null,u),enumerable:!(r=c(t,u))||r.enumerable});return e};t=((e,t,n)=>(n=e==null?{}:o(u(e)),p(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e)))(t,1);var m=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);x(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},h={},g=(e,t,n,r)=>{x(n)&&h[n]||(x(n)&&(h[n]=new Date),m(e,t,n,r))},_=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},v=(e,t,n)=>{e.loadNamespaces(t,_(e,n))},y=(e,t,n,r)=>{if(x(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return v(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,_(e,r))},b=(e,t,n={})=>!t.languages||!t.languages.length?(g(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),x=e=>typeof e==`string`,S=e=>typeof e==`object`&&!!e,C=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,w={"&amp;":`&`,"&#38;":`&`,"&lt;":`<`,"&#60;":`<`,"&gt;":`>`,"&#62;":`>`,"&apos;":`'`,"&#39;":`'`,"&quot;":`"`,"&#34;":`"`,"&nbsp;":` `,"&#160;":` `,"&copy;":`©`,"&#169;":`©`,"&reg;":`®`,"&#174;":`®`,"&hellip;":`…`,"&#8230;":`…`,"&#x2F;":`/`,"&#47;":`/`},T=e=>w[e],E={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:e=>e.replace(C,T),transDefaultProps:void 0},D=()=>E,O,k=()=>O,A=(0,t.createContext)(),j=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},M=f((e=>{var t=require(`react`);function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var d=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?d:t.useSyncExternalStore})),N=f((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}function n(e,t){d||a.startTransition===void 0||(d=!0,console.error(`You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.`));var n=t();if(!f){var i=t();o(n,i)||(console.error(`The result of getSnapshot should be cached to avoid an infinite loop`),f=!0)}i=s({inst:{value:n,getSnapshot:t}});var p=i[0].inst,m=i[1];return l(function(){p.value=n,p.getSnapshot=t,r(p)&&m({inst:p})},[e,n,t]),c(function(){return r(p)&&m({inst:p}),e(function(){r(p)&&m({inst:p})})},[e]),u(n),n}function r(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!o(e,n)}catch{return!0}}function i(e,t){return t()}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart==`function`&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var a=require(`react`),o=typeof Object.is==`function`?Object.is:t,s=a.useState,c=a.useEffect,l=a.useLayoutEffect,u=a.useDebugValue,d=!1,f=!1,p=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?i:n;e.useSyncExternalStore=a.useSyncExternalStore===void 0?p:a.useSyncExternalStore,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop==`function`&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()})),P=f(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=M():t.exports=N()}))(),F={t:(e,t)=>{if(x(t))return t;if(S(t)&&x(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},I=()=>()=>{},L=(e,n={})=>{let{i18n:r}=n,{i18n:i,defaultNS:a}=(0,t.useContext)(A)||{},o=r||i||k();o&&!o.reportNamespaces&&(o.reportNamespaces=new j),o||g(o,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next`);let s=(0,t.useMemo)(()=>({...D(),...o?.options?.react,...n}),[o,n]),{useSuspense:c,keyPrefix:l}=s,u=e||a||o?.options?.defaultNS,d=x(u)?[u]:u||[`translation`],f=(0,t.useMemo)(()=>d,d);o?.reportNamespaces?.addUsedNamespaces?.(f);let p=(0,t.useRef)(0),m=(0,t.useCallback)(e=>{if(!o)return I;let{bindI18n:t,bindI18nStore:n}=s,r=()=>{p.current+=1,e()};return t&&o.on(t,r),n&&o.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>o.off(e,r)),n&&n.split(` `).forEach(e=>o.store.off(e,r))}},[o,s]),h=(0,t.useRef)(),_=(0,t.useCallback)(()=>{if(!o)return F;let e=!!(o.isInitialized||o.initializedStoreOnce)&&f.every(e=>b(e,o,s)),t=n.lng||o.language,r=p.current,i=h.current;if(i&&i.ready===e&&i.lng===t&&i.keyPrefix===l&&i.revision===r)return i;let a={t:o.getFixedT(t,s.nsMode===`fallback`?f:f[0],l),ready:e,lng:t,keyPrefix:l,revision:r};return h.current=a,a},[o,f,l,s,n.lng]),[S,C]=(0,t.useState)(0),{t:w,ready:T}=(0,P.useSyncExternalStore)(m,_,_);(0,t.useEffect)(()=>{if(o&&!T&&!c){let e=()=>C(e=>e+1);n.lng?y(o,n.lng,f,e):v(o,f,e)}},[o,n.lng,f,T,c,S]);let E=o||{},O=(0,t.useRef)(null),M=(0,t.useRef)(),N=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,`__original`,{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},L=(0,t.useMemo)(()=>{let e=E,t=e?.language,n=e;e&&(O.current&&O.current.__original===e&&M.current===t?n=O.current:(n=N(e),O.current=n,M.current=t));let r=!T&&!c?(...e)=>(g(o,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),w(...e)):w,i=[r,n,T];return i.t=r,i.i18n=n,i.ready=T,i},[w,E,T,E.resolvedLanguage,E.language,E.languages]);if(o&&c&&!T)throw new Promise(e=>{let t=()=>e();n.lng?y(o,n.lng,f,t):v(o,f,t)});return L},R=(0,t.createContext)(null);function z(e){let n=(0,t.useContext)(R),{t:r,i18n:i}=L(e);return{t:r,language:n?.language||i.language||`en`,changeLanguage:n?.changeLanguage||(async e=>{await i.changeLanguage(e)}),direction:n?.direction||`ltr`,i18n:i}}var B=f((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),V=f((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===O?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case _:return`Fragment`;case y:return`Profiler`;case v:return`StrictMode`;case C:return`Suspense`;case w:return`SuspenseList`;case D:return`Activity`}if(typeof e==`object`)switch(typeof e.tag==`number`&&console.error(`Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.`),e.$$typeof){case g:return`Portal`;case x:return e.displayName||`Context`;case b:return(e._context.displayName||`Context`)+`.Consumer`;case S:var n=e.render;return e=e.displayName,e||=(e=n.displayName||n.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case T:return n=e.displayName||null,n===null?t(e.type)||`Memo`:n;case E:n=e._payload,e=e._init;try{return t(e(n))}catch{}}return null}function n(e){return``+e}function r(e){try{n(e);var t=!1}catch{t=!0}if(t){t=console;var r=t.error,i=typeof Symbol==`function`&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||`Object`;return r.call(t,`The provided key is an unsupported type %s. This value must be coerced to a string before using it here.`,i),n(e)}}function i(e){if(e===_)return`<>`;if(typeof e==`object`&&e&&e.$$typeof===E)return`<...>`;try{var n=t(e);return n?`<`+n+`>`:`<...>`}catch{return`<...>`}}function a(){var e=k.A;return e===null?null:e.getOwner()}function o(){return Error(`react-stack-top-frame`)}function s(e){if(A.call(e,`key`)){var t=Object.getOwnPropertyDescriptor(e,`key`).get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function c(e,t){function n(){N||(N=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}n.isReactWarning=!0,Object.defineProperty(e,`key`,{get:n,configurable:!0})}function l(){var e=t(this.type);return P[e]||(P[e]=!0,console.error(`Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.`)),e=this.props.ref,e===void 0?null:e}function u(e,t,n,r,i,a){var o=n.ref;return e={$$typeof:h,type:e,key:t,props:n,_owner:r},(o===void 0?null:o)===null?Object.defineProperty(e,`ref`,{enumerable:!1,value:null}):Object.defineProperty(e,`ref`,{enumerable:!1,get:l}),e._store={},Object.defineProperty(e._store,`validated`,{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,`_debugInfo`,{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,`_debugStack`,{configurable:!1,enumerable:!1,writable:!0,value:i}),Object.defineProperty(e,`_debugTask`,{configurable:!1,enumerable:!1,writable:!0,value:a}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function d(e,n,i,o,l,d){var p=n.children;if(p!==void 0)if(o)if(j(p)){for(o=0;o<p.length;o++)f(p[o]);Object.freeze&&Object.freeze(p)}else console.error(`React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.`);else f(p);if(A.call(n,`key`)){p=t(e);var m=Object.keys(n).filter(function(e){return e!==`key`});o=0<m.length?`{key: someKey, `+m.join(`: ..., `)+`: ...}`:`{key: someKey}`,L[p+o]||(m=0<m.length?`{`+m.join(`: ..., `)+`: ...}`:`{}`,console.error(`A props object containing a "key" prop is being spread into JSX:
2
2
  let props = %s;
3
3
  <%s {...props} />
4
4
  React keys must be passed directly to JSX without using spread:
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@object-ui/plugin-calendar",
3
- "version": "3.3.0",
3
+ "version": "3.3.1",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Calendar view plugins for Object UI - includes both ObjectQL-integrated and standalone calendar components",
7
- "homepage": "https://www.objectui.org",
7
+ "homepage": "https://www.objectui.org/docs/plugins/plugin-calendar",
8
8
  "repository": {
9
9
  "type": "git",
10
- "url": "https://github.com/objectstack-ai/objectui.git",
10
+ "url": "git+https://github.com/objectstack-ai/objectui.git",
11
11
  "directory": "packages/plugin-calendar"
12
12
  },
13
13
  "bugs": {
@@ -25,13 +25,13 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "lucide-react": "^1.8.0",
28
- "@object-ui/components": "3.3.0",
29
- "@object-ui/core": "3.3.0",
30
- "@object-ui/fields": "3.3.0",
31
- "@object-ui/i18n": "3.3.0",
32
- "@object-ui/mobile": "3.3.0",
33
- "@object-ui/react": "3.3.0",
34
- "@object-ui/types": "3.3.0"
28
+ "@object-ui/components": "3.3.1",
29
+ "@object-ui/core": "3.3.1",
30
+ "@object-ui/fields": "3.3.1",
31
+ "@object-ui/i18n": "3.3.1",
32
+ "@object-ui/mobile": "3.3.1",
33
+ "@object-ui/react": "3.3.1",
34
+ "@object-ui/types": "3.3.1"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "react": "^18.0.0 || ^19.0.0",
@@ -41,11 +41,34 @@
41
41
  "@types/react": "19.2.14",
42
42
  "@types/react-dom": "19.2.3",
43
43
  "@vitejs/plugin-react": "^6.0.1",
44
- "typescript": "^6.0.2",
45
- "vite": "^8.0.8",
44
+ "typescript": "^6.0.3",
45
+ "vite": "^8.0.9",
46
46
  "vite-plugin-dts": "^4.5.4",
47
- "@object-ui/data-objectstack": "3.3.0"
47
+ "@object-ui/data-objectstack": "3.3.1"
48
48
  },
49
+ "keywords": [
50
+ "objectui",
51
+ "sdui",
52
+ "schema-driven-ui",
53
+ "react",
54
+ "tailwind",
55
+ "shadcn",
56
+ "objectstack",
57
+ "plugin",
58
+ "calendar",
59
+ "scheduler",
60
+ "view"
61
+ ],
62
+ "author": "ObjectStack Team <team@objectstack.ai>",
63
+ "publishConfig": {
64
+ "access": "public"
65
+ },
66
+ "files": [
67
+ "dist",
68
+ "README.md",
69
+ "CHANGELOG.md",
70
+ "LICENSE"
71
+ ],
49
72
  "scripts": {
50
73
  "build": "vite build",
51
74
  "test": "vitest run",
@@ -1,22 +0,0 @@
1
-
2
- > @object-ui/plugin-calendar@3.3.0 build /home/runner/work/objectui/objectui/packages/plugin-calendar
3
- > vite build
4
-
5
- vite v8.0.8 building client environment for production...
6
- 
7
- rendering chunks...
8
- 
9
- [vite:dts] Start generate declaration files...
10
- [vite:dts] Declaration files built in 18126ms.
11
- 
12
- computing gzip size...
13
- [PLUGIN_TIMINGS] Warning: Your build spent significant time in plugin `vite:dts`. See https://rolldown.rs/options/checks#plugintimings for more details.
14
- 
15
- dist/index.js 46.03 kB │ gzip: 13.34 kB
16
-
17
- 
18
- rendering chunks...
19
- computing gzip size...
20
- dist/index.umd.cjs 35.18 kB │ gzip: 11.73 kB
21
-
22
- ✓ built in 19.93s
@@ -1,118 +0,0 @@
1
- import { describe, it, expect, vi } from 'vitest';
2
- import { render, screen, fireEvent } from '@testing-library/react';
3
- import { CalendarView, CalendarEvent } from './CalendarView';
4
- import React from 'react';
5
-
6
- // Mock ResizeObserver
7
- class ResizeObserver {
8
- observe() {}
9
- unobserve() {}
10
- disconnect() {}
11
- }
12
- global.ResizeObserver = ResizeObserver;
13
-
14
- // Mock PointerEvents which are not in JSDOM but needed for Radix
15
- if (!global.PointerEvent) {
16
- class PointerEvent extends Event {
17
- button: number;
18
- ctrlKey: boolean;
19
- metaKey: boolean;
20
- shiftKey: boolean;
21
- constructor(type: string, props: any = {}) {
22
- super(type, props);
23
- this.button = props.button || 0;
24
- this.ctrlKey = props.ctrlKey || false;
25
- this.metaKey = props.metaKey || false;
26
- this.shiftKey = props.shiftKey || false;
27
- }
28
- }
29
- // @ts-expect-error Mocking global PointerEvent
30
- global.PointerEvent = PointerEvent as any;
31
- }
32
-
33
- // Mock HTMLElement.offsetParent for Radix Popper
34
- Object.defineProperty(HTMLElement.prototype, 'offsetParent', {
35
- get() {
36
- return this.parentElement;
37
- },
38
- });
39
-
40
- describe('CalendarView', () => {
41
- const mockEvents: CalendarEvent[] = [
42
- {
43
- id: '1',
44
- title: 'Test Event 1',
45
- start: new Date(2024, 0, 15, 10, 0), // Jan 15, 2024
46
- end: new Date(2024, 0, 15, 11, 0),
47
- }
48
- ];
49
-
50
- const defaultDate = new Date(2024, 0, 15); // Jan 15, 2024
51
-
52
- it('renders the header correctly', () => {
53
- render(<CalendarView currentDate={defaultDate} locale="en-US" />);
54
-
55
- // Check for month label
56
- expect(screen.getByText('January 2024')).toBeInTheDocument();
57
- });
58
-
59
- it('renders navigation buttons', () => {
60
- render(<CalendarView currentDate={defaultDate} locale="en-US" />);
61
-
62
- expect(screen.getByText('Today')).toBeInTheDocument();
63
-
64
- // We expect 5 buttons:
65
- // 1. Today
66
- // 2. Prev (Chevron)
67
- // 3. Next (Chevron)
68
- // 4. Date Picker Trigger (Button wrapping text)
69
- // 5. Select View Trigger (Button)
70
-
71
- const buttons = screen.getAllByRole('button');
72
- // Just verify we have the essential ones
73
- expect(buttons.length).toBeGreaterThanOrEqual(4);
74
-
75
- // Verify specific triggers via aria-expanded or combobox functionality if possible,
76
- // or just by existence to satisfy "I don't see the dropdown" check.
77
- });
78
-
79
- it('renders the view switcher dropdown trigger', () => {
80
- render(<CalendarView currentDate={defaultDate} view="month" locale="en-US" />);
81
- // The SelectValue should display "Month"
82
- const selectTrigger = screen.getByText('Month');
83
- expect(selectTrigger).toBeInTheDocument();
84
-
85
- // Ensure it's inside a button (Radix Select Trigger)
86
- const triggerButton = selectTrigger.closest('button');
87
- expect(triggerButton).toBeInTheDocument();
88
- });
89
-
90
- it('renders the date picker trigger', () => {
91
- render(<CalendarView currentDate={defaultDate} locale="en-US" />);
92
- // The date label (e.g. "January 2024") is now inside a PopoverTrigger button
93
- const dateLabel = screen.getByText('January 2024');
94
- expect(dateLabel).toBeInTheDocument();
95
-
96
- const triggerButton = dateLabel.closest('button');
97
- expect(triggerButton).toBeInTheDocument();
98
- expect(triggerButton).toHaveClass('text-base sm:text-xl font-semibold');
99
- });
100
-
101
- it('opens date picker on click', () => {
102
- // We need to mock pointer interactions for Popover usually, but let's try basic click
103
- render(<CalendarView currentDate={defaultDate} locale="en-US" />);
104
- const dateTrigger = screen.getByText('January 2024');
105
-
106
- fireEvent.click(dateTrigger);
107
-
108
- // After click, the Calendar component inside PopoverContent should appear.
109
- // However, Radix portals might make this tricky in simple jest-dom without proper setup.
110
- // We just verify the trigger is clickable.
111
- expect(dateTrigger).toBeEnabled();
112
- });
113
-
114
- it('renders events in month view', () => {
115
- render(<CalendarView currentDate={defaultDate} events={mockEvents} locale="en-US" />);
116
- expect(screen.getByText('Test Event 1')).toBeInTheDocument();
117
- });
118
- });