@golemui/gui-shared 1.0.2 → 1.1.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.
Files changed (52) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/index.d.ts +1 -0
  3. package/index.js +268 -198
  4. package/index.umd.cjs +1 -1
  5. package/internals.d.ts +4 -4
  6. package/internals.js +355 -314
  7. package/internals.umd.cjs +1 -1
  8. package/lib/dx/core/dx.domain.d.ts +6 -1
  9. package/lib/dx/core/withForm.d.ts +8 -0
  10. package/lib/dx/formDef.domain.d.ts +2 -1
  11. package/lib/dx/gui.d.ts +20 -0
  12. package/lib/dx/index.d.ts +30 -0
  13. package/lib/dx/resolveFormInput.d.ts +9 -1
  14. package/lib/dx/shortcuts/date-time-calendar/dateTimeCalendar.domain.d.ts +22 -0
  15. package/lib/dx/shortcuts/date-time-calendar/dateTimeCalendarSensibleDefaults.service.d.ts +6 -0
  16. package/lib/dx/shortcuts/date-time-calendar/guiDateTimeCalendar.impl.d.ts +6 -0
  17. package/lib/dx/shortcuts/date-time-calendar/register.d.ts +2 -0
  18. package/lib/dx/shortcuts/date-time-input/dateTimeInput.domain.d.ts +17 -0
  19. package/lib/dx/shortcuts/date-time-input/guiDateTimeInput.impl.d.ts +6 -0
  20. package/lib/dx/shortcuts/date-time-input/register.d.ts +2 -0
  21. package/lib/dx/shortcuts/date-time-picker/dateTimePicker.domain.d.ts +18 -0
  22. package/lib/dx/shortcuts/date-time-picker/guiDateTimePicker.impl.d.ts +7 -0
  23. package/lib/dx/shortcuts/date-time-picker/register.d.ts +2 -0
  24. package/lib/dx/shortcuts/range-date-time-calendar/guiRangeDateTimeCalendar.impl.d.ts +6 -0
  25. package/lib/dx/shortcuts/range-date-time-calendar/rangeDateTimeCalendar.domain.d.ts +17 -0
  26. package/lib/dx/shortcuts/range-date-time-calendar/register.d.ts +2 -0
  27. package/lib/dx/shortcuts/range-date-time-input/guiRangeDateTimeInput.impl.d.ts +6 -0
  28. package/lib/dx/shortcuts/range-date-time-input/rangeDateTimeInput.domain.d.ts +17 -0
  29. package/lib/dx/shortcuts/range-date-time-input/register.d.ts +2 -0
  30. package/lib/dx/shortcuts/range-date-time-picker/guiRangeDateTimePicker.impl.d.ts +6 -0
  31. package/lib/dx/shortcuts/range-date-time-picker/rangeDateTimePicker.domain.d.ts +17 -0
  32. package/lib/dx/shortcuts/range-date-time-picker/register.d.ts +2 -0
  33. package/lib/dx/shortcuts/range-time-input/guiRangeTimeInput.impl.d.ts +6 -0
  34. package/lib/dx/shortcuts/range-time-input/rangeTimeInput.domain.d.ts +17 -0
  35. package/lib/dx/shortcuts/range-time-input/register.d.ts +2 -0
  36. package/lib/dx/shortcuts/range-time-picker/guiRangeTimePicker.impl.d.ts +6 -0
  37. package/lib/dx/shortcuts/range-time-picker/rangeTimePicker.domain.d.ts +17 -0
  38. package/lib/dx/shortcuts/range-time-picker/register.d.ts +2 -0
  39. package/lib/dx/shortcuts/scopes/scopeChain.d.ts +30 -0
  40. package/lib/dx/shortcuts/time-input/guiTimeInput.impl.d.ts +6 -0
  41. package/lib/dx/shortcuts/time-input/register.d.ts +2 -0
  42. package/lib/dx/shortcuts/time-input/timeInput.domain.d.ts +17 -0
  43. package/lib/dx/shortcuts/time-picker/guiTimePicker.impl.d.ts +7 -0
  44. package/lib/dx/shortcuts/time-picker/register.d.ts +2 -0
  45. package/lib/dx/shortcuts/time-picker/timePicker.domain.d.ts +18 -0
  46. package/lib/golem-form.d.ts +32 -2
  47. package/lib/widget.props.d.ts +197 -26
  48. package/lib/widgets.d.ts +2 -2
  49. package/package.json +3 -3
  50. package/{register-BxVKv9Qh.js → register-C4dCzlrS.js} +756 -412
  51. package/register-KU4CGoTQ.cjs +1 -0
  52. package/register-dBzdQbWZ.cjs +0 -1
package/internals.umd.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./register-dBzdQbWZ.cjs");require("@golemui/core");require("@golemui/gui-validators");function v(l,...e){return e.map(t=>({...t,targetState:l}))}function M(l,...e){return{kind:"aggregated",matcher:t=>t.tags?.includes(l)??!1,children:e}}const B={INPUTS:new Set(["INPUTS","TEXTAREA","PASSWORD","SELECT","DROPDOWN","RADIOGROUP","CHECKBOX","CALENDAR","DATE_INPUT","DATE_PICKER","RANGE_CALENDAR","RANGE_DATE_INPUT","RANGE_DATE_PICKER","CURRENCY","MARKDOWN","LIST","CUSTOM_INPUT","REPEATER","TAGS"]),ACTIONS:new Set(["ACTIONS","CUSTOM_ACTION"]),DISPLAYS:new Set(["DISPLAYS","ALERTS","MARKDOWN_TEXTS","CUSTOM_DISPLAY"]),LAYOUTS:new Set(["LAYOUTS","TABS","ACCORDION","CUSTOM_LAYOUT"])};function P(l,e){const t=B[l];return t?t.has(e):l===e}class L{resolve(e,t){const r=[];for(const i of t)i.kind==="aggregated"?this.collectFromAggregated(i,e,r):this.collectFromLeaf(i,e,r);const n=this.rollUpSensibleDefaults(r);return{leafSelectors:r,sensibleDefaults:n}}collectFromAggregated(e,t,r){if(e.matcher(t))for(const n of e.children)this.collectFromLeaf(n,t,r)}collectFromLeaf(e,t,r){P(e.selectorType,t.itemType??"")&&e.matcher(t)&&r.push(e)}rollUpSensibleDefaults(e){const t=new Map,r=(i,o)=>{const a=t.get(i)??[];a.push(o),t.set(i,a)};for(const i of e){const o=B[i.selectorType];if(o)for(const a of o)r(a,i);else r(i.selectorType,i)}const n={};for(const[i,o]of t)s.hasItemTypeHandler(i)&&(n[i]=s.getItemTypeHandler(i).rollUpSensibleDefaults(o));return n}}const F=new L;class j{deepMerge(e,t){if(t==null)return e;if(e==null||typeof e!="object"||typeof t!="object"||Array.isArray(e)||Array.isArray(t))return t;const r={...e};for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(typeof t[n]=="object"&&!Array.isArray(t[n])&&t[n]!==null&&typeof e[n]=="object"&&!Array.isArray(e[n])&&e[n]!==null?r[n]=this.deepMerge(e[n],t[n]):r[n]=t[n]);return r}}const N=new j;class W{constructor(e){this.objectUtils=e}merge(e,t,r){let n={},i=null;typeof e=="function"&&(i=e);const o=this.collectDecorators(r);for(const c of o){if(i!=null){i=this.composeRuntimeFunctions(i,c);continue}if(typeof c=="function"){const g=c({...n,...typeof e=="function"?{}:e});if(typeof g=="function"){i=this.createPromotedFunction(n,e,g,t,r);continue}n=this.objectUtils.deepMerge(n,g)}else n=this.objectUtils.deepMerge(n,c)}if(i!=null)return{kind:"dynamic",fn:this.wrapWithSensibleDefaults(i,n,t,r)};const a=this.objectUtils.deepMerge(e,n);return{kind:"static",def:this.applySensibleDefaults({...a},t,r)}}collectDecorators(e){const t=[];for(const r of e.leafSelectors){const n=r.config;n.override!=null&&t.push(n.override)}return t}applySensibleDefaults(e,t,r){if(!s.hasItemTypeHandler(t))return e;const n=r.sensibleDefaults[t]??{};return s.getItemTypeHandler(t).applySensibleDefaults(e,n)}createPromotedFunction(e,t,r,n,i){return o=>{const a=r(o);let u=this.objectUtils.deepMerge(e,a);return u=this.objectUtils.deepMerge(u,t),this.applySensibleDefaults(u,n,i)}}wrapWithSensibleDefaults(e,t,r,n){return i=>{let o=e(i);return Object.keys(t).length>0&&(o=this.objectUtils.deepMerge(t,o)),this.applySensibleDefaults(o,r,n)}}composeRuntimeFunctions(e,t){return typeof t=="function"?r=>{const n=e(r),i=t(n);return typeof i=="function"?i(r):this.objectUtils.deepMerge(i,n)}:r=>{const n=e(r);return this.objectUtils.deepMerge(n,t)}}}const z=new W(N);class G{mapToWidget(e,t){if(e.kind==="dynamic"){const r=e.fn;return(n=>{const i=r(n);return this.mapStaticDef(i,t)})}return this.mapStaticDef(e.def,t)}mapStaticDef(e,t){const r=s.getItemTypeHandler(t).mapToWidget(e);return this.applyBaseWidgetFields(r,e)}applyBaseWidgetFields(e,t){return t.size!=null&&(e.size=t.size),t.defaultValue!=null&&e.kind==="input"&&(e.defaultValue=t.defaultValue),t.on!=null&&(e.on=t.on),t.include!=null&&(e.include=t.include),t.exclude!=null&&(e.exclude=t.exclude),e}}const $=new G;class H{normalizeSelectors(e){const t=Array.isArray(e)?e:[e],r=[],n=[];for(const i of t)i.kind==="leaf"?n.push(i):r.push(i);return n.length>0&&r.unshift({kind:"aggregated",matcher:()=>!0,children:n}),r}extractFormConfig(){return{suppressAutomaticStack:!1}}}const K=new H,V={input:new Set(["disabled","readonly","label","validator","size"]),action:new Set(["disabled","label","size"]),layout:new Set(["size"]),display:new Set([])},T={onChange:"change",onLoad:"load",onFilter:"filter",onClick:"click"};class Y{extractFromMergeResult(e,t){const r={};for(const a of t){const u=a.targetState,c=a.config,g=c.override&&typeof c.override!="function"?c.override:c;r[u]={...r[u]||{},...g}}if(e.kind==="dynamic"){const a=e.fn;return{cleanedResult:{kind:"dynamic",fn:c=>{const g=a(c),{states:d,..._}=g;return _}},stateData:{stateOverrides:r}}}const{states:n,...i}=e.def,o={};for(const[a,u]of Object.entries(r))o[a]={...u};if(n)for(const[a,u]of Object.entries(n))o[a]={...o[a]||{},...u};return{cleanedResult:{kind:"static",def:i},stateData:{stateOverrides:o}}}applyToWidget(e,t,r,n){const{stateOverrides:i}=t;if(Object.keys(i).length===0)return e;const o={...e},a=e.kind,u=V[a]||new Set;e.props&&(o.props={...e.props}),e.on&&(o.on={...e.on});for(const[c,g]of Object.entries(i))for(const[d,_]of Object.entries(g))d==="visible"?this.applyVisibility(o,c,_):T[d]?this.applyStateEvent(o,c,d,_,r,n):u.has(d)?o[`${d}.${c}`]=_:(o.props||(o.props={}),o.props[`${d}.${c}`]=_);return o}hasStateData(e){return Object.keys(e.stateOverrides).length>0}applyVisibility(e,t,r){if(r){const n=e.include?.in||[];e.include={...e.include||{},in:[...n,t]}}else{const n=e.exclude?.from||[];e.exclude={...e.exclude||{},from:[...n,t]}}}applyStateEvent(e,t,r,n,i,o){const a=T[r];if(e.on||(e.on={}),typeof n=="function"){const u=s.probeForHostEventName(n);if(u!=null)e.on[`${a}.${t}`]=u;else{const c=o.next();i.set(c,n),e.on[`${a}.${t}`]=c}}else typeof n=="string"&&(e.on[`${a}.${t}`]=n)}}const X=new Y;function q(){let l=0;return{next:()=>`event_${l++}`}}class J{constructor(e,t,r,n,i){this.resolver=e,this.merger=t,this.mapper=r,this.eventWiring=n,this.stateExpansion=i}walkAndMap(e,t,r){const n=new Map,i=q(),o={value:0},a=new Set;return{widgets:this.walkItems(e,t,n,r,i,o,a),eventRegistry:n}}walkItems(e,t,r,n,i,o,a){return e.flatMap(u=>{if(u.type!=="ITEMS")throw new Error("Unexpected gui shortcut type");return u.items.map(c=>this.processItem(c,u.itemType,u.tags,t,r,n,i,o,a))})}processItem(e,t,r,n,i,o,a,u,c){const g=t,d=s.getItemTypeHandler(t),_=d.parseEntry(e),m=this.buildBaseDef(_),x=this.buildDecoratorForMatching(m,g,r),h=this.resolver.resolve(x,n),w=h.leafSelectors.filter(p=>p.targetState!=null),k={leafSelectors:h.leafSelectors.filter(p=>p.targetState==null),sensibleDefaults:h.sensibleDefaults};let y=this.merger.merge(m,g,k);d.afterMerge&&(y=d.afterMerge(y,{eventRegistry:i,formConfig:o,eventIdGenerator:a})),y=this.eventWiring.wireInputLayoutEvents(y,i,a);const{cleanedResult:U,stateData:S}=this.stateExpansion.extractFromMergeResult(y,w);let f;if(d.buildCustomWidget){const p=this.buildCustomWidgetContext(_.children,n,i,o,a,u,c);f=this.buildCustomWidget(d,U,p)}else f=this.mapper.mapToWidget(U,g);if(typeof f!="function"){const p=f;p.uid||(p.path&&!c.has(p.path)?(p.uid=p.path,c.add(p.path)):p.uid=`dx_${u.value++}`)}if(this.stateExpansion.hasStateData(S))if(typeof f=="function"){const p=f;f=(O=>{const E=p(O);return this.stateExpansion.applyToWidget(E,S,i,a)})}else f=this.stateExpansion.applyToWidget(f,S,i,a);return f}buildCustomWidgetContext(e,t,r,n,i,o,a){return{children:e,mapStaticDef:(u,c)=>this.mapper.mapStaticDef(u,c),walkChildren:u=>this.walkItems(u,t,r,n,i,o,a)}}buildCustomWidget(e,t,r){return e.buildCustomWidget(t,r)}buildBaseDef(e){const t=e.baseDef;return typeof t=="function"?r=>{const i=t(r??{});return e.path!=null?{...i,path:e.path}:i}:e.path!=null?{...t,path:e.path}:t}buildDecoratorForMatching(e,t,r){if(typeof e=="function")return{itemType:t,tags:[...r]};const n=[...r,..."tags"in e&&e.tags?e.tags:[]],i="uid"in e?e.uid:void 0,o="type"in e?e.type:void 0;return{itemType:t,tags:n,uid:i,type:o}}}class Q{constructor(e,t){this.selectorNormalizer=e,this.walker=t}processDxFacade(e,t=[],r){const{defs:n,gslSelectors:i,formConfig:o}=this.prepareForm(e,t,r),{widgets:a,eventRegistry:u}=this.walker.walkAndMap(n,i,o),c=a[0];return this.buildResult({form:c},u,o)}prepareForm(e,t,r){const i=(Array.isArray(e)?[...e]:[e]).map(u=>typeof u=="function"?s._guiDisplay(u):u),o=this.selectorNormalizer.normalizeSelectors(t),a={...this.selectorNormalizer.extractFormConfig(),...r};if(!a.suppressAutomaticStack){const u={def:{uid:"#root",direction:"column",widgetName:"flex"},children:i};return{defs:[{type:"ITEMS",itemType:s.GuiItemTypes.LAYOUTS,items:[u],tags:[]}],gslSelectors:o,formConfig:a}}return{defs:i,gslSelectors:o,formConfig:a}}convertStateNames(e){const t={};for(const[r,n]of Object.entries(e))t[r.replace(/\$/g,":")]=n;return t}buildResult(e,t,r){r.states&&Object.keys(r.states).length>0&&(e={...e,states:this.convertStateNames(r.states)});const n={form:e};return t.size>0&&(n.events=i=>{const o=t.get(i.name);if(o){const a=c=>{if(c&&typeof c=="object"&&"path"in c&&!("type"in c)){const{path:g,...d}=c;for(const[_,m]of Object.entries(d))i.callback({type:"OVERRIDE_WIDGET_PROP",payload:{path:g,prop:_,value:m}})}else i.callback(c)},u={...i,callback:a,update:a};o(u)}}),r.dependencies&&(n.dependencies=r.dependencies),r.widgetLoaders&&(n.widgetLoaders=r.widgetLoaders),r.validateOn&&(n.validateOn=r.validateOn),r.itemRenderers&&(n.itemRenderers=r.itemRenderers),n}}const Z=new J(F,z,$,s.eventWiringService,X),R=new Q(K,Z);function D(l){return typeof l=="function"?!0:Array.isArray(l)?l.length===0||l.every(I):I(l)}function I(l){if(typeof l=="function")return!0;if(l===null||typeof l!="object")return!1;const e=l;return e.type==="ITEMS"&&typeof e.itemType=="string"}function ee(l){if(!l||typeof l!="object"||Array.isArray(l))return;const e=l.form;if(D(e))throw new Error("[GolemUI] The gui.* form definition was wrapped in an extra `{ form: ... }` object, so its fields were never resolved. Pass the gui.* array DIRECTLY as formDef (`config={{ formDef: form }}`) and put any named `states` in `formConfig`: `config={{ formDef: form, formConfig: { states } }}`. Do NOT wrap them as a `{ form: [...] }` object.")}const A=Object.freeze({}),te=Object.freeze({}),C=new WeakMap;function b(l,e){return l==null?e:typeof l=="object"?l:{}}function se(l,e,t){if(!D(l))return ee(l),{formDef:l};const r=b(l,A),n=b(e,A),i=b(t,te);let o=C.get(r);o||(o=new WeakMap,C.set(r,o));let a=o.get(n);a||(a=new WeakMap,o.set(n,a));const u=a.get(i);if(u)return u;const c=R.processDxFacade(l,e,t),g={formDef:c.form,formEvent:c.events,dependencies:c.dependencies,widgetLoaders:c.widgetLoaders,validateOn:c.validateOn,itemRenderers:c.itemRenderers};return a.set(i,g),g}class ne{create(e){return{states:e.states,form:{uid:"gui-root-uid",type:"flex",kind:"layout",children:e.form}}}}function re(){return new ne}const ie=l=>l!==null&&typeof l=="object"&&Object.prototype.hasOwnProperty.call(l,"label")&&Object.prototype.hasOwnProperty.call(l,"value");function oe(l,e){if(l!=null&&typeof l=="object"&&"__rid"in l)return l.__rid;const t=e();return Object.defineProperty(l,"__rid",{value:t,enumerable:!1,configurable:!1}),t}exports._gslAccordionByUid=s._gslAccordionByUid;exports._gslAccordions=s._gslAccordions;exports._gslActionByUid=s._gslActionByUid;exports._gslActions=s._gslActions;exports._gslAlertByUid=s._gslAlertByUid;exports._gslAlerts=s._gslAlerts;exports._gslBooleanInputs=s._gslBooleanInputs;exports._gslCalendarByUid=s._gslCalendarByUid;exports._gslCalendars=s._gslCalendars;exports._gslCheckboxByUid=s._gslCheckboxByUid;exports._gslCheckboxes=s._gslCheckboxes;exports._gslCurrencies=s._gslCurrencies;exports._gslCurrencyByUid=s._gslCurrencyByUid;exports._gslCustomActionByUid=s._gslCustomActionByUid;exports._gslCustomActions=s._gslCustomActions;exports._gslCustomDisplayByUid=s._gslCustomDisplayByUid;exports._gslCustomDisplays=s._gslCustomDisplays;exports._gslCustomInputByUid=s._gslCustomInputByUid;exports._gslCustomInputs=s._gslCustomInputs;exports._gslCustomLayoutByUid=s._gslCustomLayoutByUid;exports._gslCustomLayouts=s._gslCustomLayouts;exports._gslDateInputByUid=s._gslDateInputByUid;exports._gslDateInputs=s._gslDateInputs;exports._gslDatePickerByUid=s._gslDatePickerByUid;exports._gslDatePickers=s._gslDatePickers;exports._gslDisplayByUid=s._gslDisplayByUid;exports._gslDisplays=s._gslDisplays;exports._gslDropdownByUid=s._gslDropdownByUid;exports._gslDropdowns=s._gslDropdowns;exports._gslInputByUid=s._gslInputByUid;exports._gslInputs=s._gslInputs;exports._gslLayoutByUid=s._gslLayoutByUid;exports._gslLayouts=s._gslLayouts;exports._gslListByUid=s._gslListByUid;exports._gslLists=s._gslLists;exports._gslMarkdownByUid=s._gslMarkdownByUid;exports._gslMarkdownTextByUid=s._gslMarkdownTextByUid;exports._gslMarkdownTexts=s._gslMarkdownTexts;exports._gslMarkdowns=s._gslMarkdowns;exports._gslNumberInputs=s._gslNumberInputs;exports._gslPasswordByUid=s._gslPasswordByUid;exports._gslPasswords=s._gslPasswords;exports._gslRadiogroupByUid=s._gslRadiogroupByUid;exports._gslRadiogroups=s._gslRadiogroups;exports._gslRangeCalendarByUid=s._gslRangeCalendarByUid;exports._gslRangeCalendars=s._gslRangeCalendars;exports._gslRangeDateInputByUid=s._gslRangeDateInputByUid;exports._gslRangeDateInputs=s._gslRangeDateInputs;exports._gslRangeDatePickerByUid=s._gslRangeDatePickerByUid;exports._gslRangeDatePickers=s._gslRangeDatePickers;exports._gslRepeaterByUid=s._gslRepeaterByUid;exports._gslRepeaters=s._gslRepeaters;exports._gslSelectByUid=s._gslSelectByUid;exports._gslSelects=s._gslSelects;exports._gslTabs=s._gslTabs;exports._gslTabsByUid=s._gslTabsByUid;exports._gslTags=s._gslTags;exports._gslTagsByUid=s._gslTagsByUid;exports._gslTextInputs=s._gslTextInputs;exports._gslTextareaByUid=s._gslTextareaByUid;exports._gslTextareas=s._gslTextareas;exports._guiAccordion=s._guiAccordion;exports._guiAlert=s._guiAlert;exports._guiBooleanInput=s._guiBooleanInput;exports._guiButton=s._guiButton;exports._guiCalendar=s._guiCalendar;exports._guiCheckbox=s._guiCheckbox;exports._guiCurrency=s._guiCurrency;exports._guiCustomAction=s._guiCustomAction;exports._guiCustomDisplay=s._guiCustomDisplay;exports._guiCustomInput=s._guiCustomInput;exports._guiCustomLayout=s._guiCustomLayout;exports._guiDateInput=s._guiDateInput;exports._guiDatePicker=s._guiDatePicker;exports._guiDisplay=s._guiDisplay;exports._guiDropdown=s._guiDropdown;exports._guiFlex=s._guiFlex;exports._guiGrid=s._guiGrid;exports._guiHorizontalFlex=s._guiHorizontalFlex;exports._guiHorizontalGrid=s._guiHorizontalGrid;exports._guiList=s._guiList;exports._guiMarkdown=s._guiMarkdown;exports._guiMarkdownText=s._guiMarkdownText;exports._guiNumberInput=s._guiNumberInput;exports._guiPassword=s._guiPassword;exports._guiRadiogroup=s._guiRadiogroup;exports._guiRangeCalendar=s._guiRangeCalendar;exports._guiRangeDateInput=s._guiRangeDateInput;exports._guiRangeDatePicker=s._guiRangeDatePicker;exports._guiRepeater=s._guiRepeater;exports._guiSelect=s._guiSelect;exports._guiTabs=s._guiTabs;exports._guiTags=s._guiTags;exports._guiTextInput=s._guiTextInput;exports._guiTextarea=s._guiTextarea;exports._guiVerticalFlex=s._guiVerticalFlex;exports._guiVerticalGrid=s._guiVerticalGrid;exports.createGslSelector=s.createGslSelector;exports.defineShortcutType=s.defineShortcutType;exports.extractWidgetProps=s.extractWidgetProps;exports.processAutoLabel=s.processAutoLabel;exports.processAutoPlaceholder=s.processAutoPlaceholder;exports._gslStates=v;exports._gslTag=M;exports.formDefs=R;exports.getItemKey=oe;exports.golemForm=re;exports.isDxDefinitions=D;exports.isOption=ie;exports.resolveFormInput=se;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./register-KU4CGoTQ.cjs");require("@golemui/core");require("@golemui/gui-validators");function M(o,...e){return e.map(s=>({...s,targetState:o}))}function O(o,...e){return{kind:"aggregated",matcher:s=>s.tags?.includes(o)??!1,children:e}}const A={INPUTS:new Set(["INPUTS","TEXTAREA","PASSWORD","SELECT","DROPDOWN","RADIOGROUP","CHECKBOX","CALENDAR","DATE_TIME_CALENDAR","DATE_TIME_PICKER","DATE_INPUT","DATE_PICKER","RANGE_CALENDAR","RANGE_DATE_INPUT","RANGE_DATE_TIME_INPUT","RANGE_DATE_TIME_CALENDAR","RANGE_DATE_TIME_PICKER","RANGE_TIME_INPUT","RANGE_DATE_PICKER","RANGE_TIME_PICKER","TIME_INPUT","TIME_PICKER","DATE_TIME_INPUT","CURRENCY","MARKDOWN","LIST","CUSTOM_INPUT","REPEATER","TAGS"]),ACTIONS:new Set(["ACTIONS","CUSTOM_ACTION"]),DISPLAYS:new Set(["DISPLAYS","ALERTS","MARKDOWN_TEXTS","CUSTOM_DISPLAY"]),LAYOUTS:new Set(["LAYOUTS","TABS","ACCORDION","CUSTOM_LAYOUT"])};function v(o,e){const s=A[o];return s?s.has(e):o===e}class N{resolve(e,s){const n=[];for(const r of s)r.kind==="aggregated"?this.collectFromAggregated(r,e,n):this.collectFromLeaf(r,e,n);const i=this.rollUpSensibleDefaults(n);return{leafSelectors:n,sensibleDefaults:i}}collectFromAggregated(e,s,n){if(e.matcher(s))for(const i of e.children)this.collectFromLeaf(i,s,n)}collectFromLeaf(e,s,n){v(e.selectorType,s.itemType??"")&&e.matcher(s)&&n.push(e)}rollUpSensibleDefaults(e){const s=new Map,n=(r,a)=>{const l=s.get(r)??[];l.push(a),s.set(r,l)};for(const r of e){const a=A[r.selectorType];if(a)for(const l of a)n(l,r);else n(r.selectorType,r)}const i={};for(const[r,a]of s)t.hasItemTypeHandler(r)&&(i[r]=t.getItemTypeHandler(r).rollUpSensibleDefaults(a));return i}}const L=new N;class F{deepMerge(e,s){if(s==null)return e;if(e==null||typeof e!="object"||typeof s!="object"||Array.isArray(e)||Array.isArray(s))return s;const n={...e};for(const i in s)Object.prototype.hasOwnProperty.call(s,i)&&(typeof s[i]=="object"&&!Array.isArray(s[i])&&s[i]!==null&&typeof e[i]=="object"&&!Array.isArray(e[i])&&e[i]!==null?n[i]=this.deepMerge(e[i],s[i]):n[i]=s[i]);return n}}const j=new F;class W{constructor(e){this.objectUtils=e}merge(e,s,n){let i={},r=null;typeof e=="function"&&(r=e);const a=this.collectDecorators(n);for(const u of a){if(r!=null){r=this.composeRuntimeFunctions(r,u);continue}if(typeof u=="function"){const g=u({...i,...typeof e=="function"?{}:e});if(typeof g=="function"){r=this.createPromotedFunction(i,e,g,s,n);continue}i=this.objectUtils.deepMerge(i,g)}else i=this.objectUtils.deepMerge(i,u)}if(r!=null)return{kind:"dynamic",fn:this.wrapWithSensibleDefaults(r,i,s,n)};const l=this.objectUtils.deepMerge(e,i);return{kind:"static",def:this.applySensibleDefaults({...l},s,n)}}collectDecorators(e){const s=[];for(const n of e.leafSelectors){const i=n.config;i.override!=null&&s.push(i.override)}return s}applySensibleDefaults(e,s,n){if(!t.hasItemTypeHandler(s))return e;const i=n.sensibleDefaults[s]??{};return t.getItemTypeHandler(s).applySensibleDefaults(e,i)}createPromotedFunction(e,s,n,i,r){return a=>{const l=n(a);let c=this.objectUtils.deepMerge(e,l);return c=this.objectUtils.deepMerge(c,s),this.applySensibleDefaults(c,i,r)}}wrapWithSensibleDefaults(e,s,n,i){return r=>{let a=e(r);return Object.keys(s).length>0&&(a=this.objectUtils.deepMerge(s,a)),this.applySensibleDefaults(a,n,i)}}composeRuntimeFunctions(e,s){return typeof s=="function"?n=>{const i=e(n),r=s(i);return typeof r=="function"?r(n):this.objectUtils.deepMerge(r,i)}:n=>{const i=e(n);return this.objectUtils.deepMerge(i,s)}}}const G=new W(j);class z{mapToWidget(e,s){if(e.kind==="dynamic"){const n=e.fn;return(i=>{const r=n(i);return this.mapStaticDef(r,s)})}return this.mapStaticDef(e.def,s)}mapStaticDef(e,s){const n=t.getItemTypeHandler(s).mapToWidget(e);return this.applyBaseWidgetFields(n,e)}applyBaseWidgetFields(e,s){return s.size!=null&&(e.size=s.size),s.defaultValue!=null&&e.kind==="input"&&(e.defaultValue=s.defaultValue),s.on!=null&&(e.on=s.on),s.include!=null&&(e.include=s.include),s.exclude!=null&&(e.exclude=s.exclude),e}}const K=new z;class ${normalizeSelectors(e){const s=Array.isArray(e)?e:[e],n=[],i=[];for(const r of s)r.kind==="leaf"?i.push(r):n.push(r);return i.length>0&&n.unshift({kind:"aggregated",matcher:()=>!0,children:i}),n}extractFormConfig(){return{suppressAutomaticStack:!1}}}const H=new $,V={input:new Set(["disabled","readonly","label","validator","size"]),action:new Set(["disabled","label","size"]),layout:new Set(["size"]),display:new Set([])},R={onChange:"change",onLoad:"load",onFilter:"filter",onClick:"click"};class Y{extractFromMergeResult(e,s){const n={};for(const l of s){const c=l.targetState,u=l.config,g=u.override&&typeof u.override!="function"?u.override:u;n[c]={...n[c]||{},...g}}if(e.kind==="dynamic"){const l=e.fn;return{cleanedResult:{kind:"dynamic",fn:u=>{const g=l(u),{states:d,...p}=g;return p}},stateData:{stateOverrides:n}}}const{states:i,...r}=e.def,a={};for(const[l,c]of Object.entries(n))a[l]={...c};if(i)for(const[l,c]of Object.entries(i))a[l]={...a[l]||{},...c};return{cleanedResult:{kind:"static",def:r},stateData:{stateOverrides:a}}}applyToWidget(e,s,n,i){const{stateOverrides:r}=s;if(Object.keys(r).length===0)return e;const a={...e},l=e.kind,c=V[l]||new Set;e.props&&(a.props={...e.props}),e.on&&(a.on={...e.on});for(const[u,g]of Object.entries(r))for(const[d,p]of Object.entries(g))d==="visible"?this.applyVisibility(a,u,p):R[d]?this.applyStateEvent(a,u,d,p,n,i):c.has(d)?a[`${d}.${u}`]=p:(a.props||(a.props={}),a.props[`${d}.${u}`]=p);return a}hasStateData(e){return Object.keys(e.stateOverrides).length>0}applyVisibility(e,s,n){if(n){const i=e.include?.in||[];e.include={...e.include||{},in:[...i,s]}}else{const i=e.exclude?.from||[];e.exclude={...e.exclude||{},from:[...i,s]}}}applyStateEvent(e,s,n,i,r,a){const l=R[n];if(e.on||(e.on={}),typeof i=="function"){const c=t.probeForHostEventName(i);if(c!=null)e.on[`${l}.${s}`]=c;else{const u=a.next();r.set(u,i),e.on[`${l}.${s}`]=u}}else typeof i=="string"&&(e.on[`${l}.${s}`]=i)}}const X=new Y;function q(){let o=0;return{next:()=>`event_${o++}`}}class J{constructor(e,s,n,i,r){this.resolver=e,this.merger=s,this.mapper=n,this.eventWiring=i,this.stateExpansion=r}walkAndMap(e,s,n){const i=new Map,r=q(),a={value:0},l=new Set;return{widgets:this.walkItems(e,s,i,n,r,a,l),eventRegistry:i}}walkItems(e,s,n,i,r,a,l){return e.flatMap(c=>{if(c.type!=="ITEMS")throw new Error("Unexpected gui shortcut type");return c.items.map(u=>this.processItem(u,c.itemType,c.tags,s,n,i,r,a,l))})}processItem(e,s,n,i,r,a,l,c,u){const g=s,d=t.getItemTypeHandler(s),p=d.parseEntry(e),m=this.buildBaseDef(p),k=this.buildDecoratorForMatching(m,g,n),T=this.resolver.resolve(k,i),E=T.leafSelectors.filter(_=>_.targetState!=null),P={leafSelectors:T.leafSelectors.filter(_=>_.targetState==null),sensibleDefaults:T.sensibleDefaults};let f=this.merger.merge(m,g,P);d.afterMerge&&(f=d.afterMerge(f,{eventRegistry:r,formConfig:a,eventIdGenerator:l})),f=this.eventWiring.wireInputLayoutEvents(f,r,l);const{cleanedResult:U,stateData:D}=this.stateExpansion.extractFromMergeResult(f,E);let y;if(d.buildCustomWidget){const _=this.buildCustomWidgetContext(p.children,i,r,a,l,c,u);y=this.buildCustomWidget(d,U,_)}else y=this.mapper.mapToWidget(U,g);if(typeof y!="function"){const _=y;_.uid||(_.path&&!u.has(_.path)?(_.uid=_.path,u.add(_.path)):_.uid=`dx_${c.value++}`)}if(this.stateExpansion.hasStateData(D))if(typeof y=="function"){const _=y;y=(w=>{const x=_(w);return this.stateExpansion.applyToWidget(x,D,r,l)})}else y=this.stateExpansion.applyToWidget(y,D,r,l);return y}buildCustomWidgetContext(e,s,n,i,r,a,l){return{children:e,mapStaticDef:(c,u)=>this.mapper.mapStaticDef(c,u),walkChildren:c=>this.walkItems(c,s,n,i,r,a,l)}}buildCustomWidget(e,s,n){return e.buildCustomWidget(s,n)}buildBaseDef(e){const s=e.baseDef;return typeof s=="function"?n=>{const i=t.withForm(n),r=s(i);return e.path!=null?{...r,path:e.path}:r}:e.path!=null?{...s,path:e.path}:s}buildDecoratorForMatching(e,s,n){if(typeof e=="function")return{itemType:s,tags:[...n]};const i=[...n,..."tags"in e&&e.tags?e.tags:[]],r="uid"in e?e.uid:void 0,a="type"in e?e.type:void 0;return{itemType:s,tags:i,uid:r,type:a}}}class Q{constructor(e,s){this.selectorNormalizer=e,this.walker=s}processDxFacade(e,s=[],n){const{defs:i,gslSelectors:r,formConfig:a}=this.prepareForm(e,s,n),{widgets:l,eventRegistry:c}=this.walker.walkAndMap(i,r,a),u=l[0];return this.buildResult({form:u},c,a)}prepareForm(e,s,n){const r=(Array.isArray(e)?[...e]:[e]).map(c=>typeof c=="function"?t._guiDisplay(c):c),a=this.selectorNormalizer.normalizeSelectors(s),l={...this.selectorNormalizer.extractFormConfig(),...n};if(!l.suppressAutomaticStack){const c={def:{uid:"#root",direction:"column",widgetName:"flex"},children:r};return{defs:[{type:"ITEMS",itemType:t.GuiItemTypes.LAYOUTS,items:[c],tags:[]}],gslSelectors:a,formConfig:l}}return{defs:r,gslSelectors:a,formConfig:l}}convertStateNames(e){const s={};for(const[n,i]of Object.entries(e))s[n.replace(/\$/g,":")]=i;return s}buildResult(e,s,n){n.states&&Object.keys(n.states).length>0&&(e={...e,states:this.convertStateNames(n.states)});const i={form:e};return s.size>0&&(i.events=r=>{const a=s.get(r.name);if(a){const l=u=>{if(u&&typeof u=="object"&&"path"in u&&!("type"in u)){const{path:g,...d}=u;for(const[p,m]of Object.entries(d))r.callback({type:"OVERRIDE_WIDGET_PROP",payload:{path:g,prop:p,value:m}})}else r.callback(u)},c={...r,callback:l,update:l};a(c)}}),n.dependencies&&(i.dependencies=n.dependencies),n.functions&&(i.functions=n.functions),n.widgetLoaders&&(i.widgetLoaders=n.widgetLoaders),n.validateOn&&(i.validateOn=n.validateOn),n.itemRenderers&&(i.itemRenderers=n.itemRenderers),i}}const Z=new J(L,G,K,t.eventWiringService,X),C=new Q(H,Z);function h(o){return typeof o=="function"?!0:Array.isArray(o)?o.length===0||o.every(S):S(o)}function S(o){if(typeof o=="function")return!0;if(o===null||typeof o!="object")return!1;const e=o;return e.type==="ITEMS"&&typeof e.itemType=="string"}function ee(o){if(!o||typeof o!="object"||Array.isArray(o))return;const e=o.form;if(h(e))throw new Error("[GolemUI] The gui.* form definition was wrapped in an extra `{ form: ... }` object, so its fields were never resolved. Pass the gui.* array DIRECTLY as formDef (`config={{ formDef: form }}`) and put any named `states` in `formConfig`: `config={{ formDef: form, formConfig: { states } }}`. Do NOT wrap them as a `{ form: [...] }` object.")}const b=Object.freeze({}),te=Object.freeze({}),B=new WeakMap;function I(o,e){return o==null?e:typeof o=="object"?o:{}}function se(o,e,s){if(!h(o))return ee(o),{formDef:o};const n=I(o,b),i=I(e,b),r=I(s,te);let a=B.get(n);a||(a=new WeakMap,B.set(n,a));let l=a.get(i);l||(l=new WeakMap,a.set(i,l));const c=l.get(r);if(c)return c;const u=C.processDxFacade(o,e,s),g={formDef:u.form,formEvent:u.events,dependencies:u.dependencies,functions:u.functions,widgetLoaders:u.widgetLoaders,validateOn:u.validateOn,itemRenderers:u.itemRenderers};return l.set(r,g),g}class ie{create(e){return{states:e.states,form:{uid:"gui-root-uid",type:"flex",kind:"layout",children:e.form}}}}function ne(){return new ie}const re=o=>o!==null&&typeof o=="object"&&Object.prototype.hasOwnProperty.call(o,"label")&&Object.prototype.hasOwnProperty.call(o,"value");function ae(o,e){if(o!=null&&typeof o=="object"&&"__rid"in o)return o.__rid;const s=e();return Object.defineProperty(o,"__rid",{value:s,enumerable:!1,configurable:!1}),s}exports._gslAccordionByUid=t._gslAccordionByUid;exports._gslAccordions=t._gslAccordions;exports._gslActionByUid=t._gslActionByUid;exports._gslActions=t._gslActions;exports._gslAlertByUid=t._gslAlertByUid;exports._gslAlerts=t._gslAlerts;exports._gslBooleanInputs=t._gslBooleanInputs;exports._gslCalendarByUid=t._gslCalendarByUid;exports._gslCalendars=t._gslCalendars;exports._gslCheckboxByUid=t._gslCheckboxByUid;exports._gslCheckboxes=t._gslCheckboxes;exports._gslCurrencies=t._gslCurrencies;exports._gslCurrencyByUid=t._gslCurrencyByUid;exports._gslCustomActionByUid=t._gslCustomActionByUid;exports._gslCustomActions=t._gslCustomActions;exports._gslCustomDisplayByUid=t._gslCustomDisplayByUid;exports._gslCustomDisplays=t._gslCustomDisplays;exports._gslCustomInputByUid=t._gslCustomInputByUid;exports._gslCustomInputs=t._gslCustomInputs;exports._gslCustomLayoutByUid=t._gslCustomLayoutByUid;exports._gslCustomLayouts=t._gslCustomLayouts;exports._gslDateInputByUid=t._gslDateInputByUid;exports._gslDateInputs=t._gslDateInputs;exports._gslDatePickerByUid=t._gslDatePickerByUid;exports._gslDatePickers=t._gslDatePickers;exports._gslDateTimeCalendarByUid=t._gslDateTimeCalendarByUid;exports._gslDateTimeCalendars=t._gslDateTimeCalendars;exports._gslDateTimeInputByUid=t._gslDateTimeInputByUid;exports._gslDateTimeInputs=t._gslDateTimeInputs;exports._gslDateTimePickerByUid=t._gslDateTimePickerByUid;exports._gslDateTimePickers=t._gslDateTimePickers;exports._gslDisplayByUid=t._gslDisplayByUid;exports._gslDisplays=t._gslDisplays;exports._gslDropdownByUid=t._gslDropdownByUid;exports._gslDropdowns=t._gslDropdowns;exports._gslInputByUid=t._gslInputByUid;exports._gslInputs=t._gslInputs;exports._gslLayoutByUid=t._gslLayoutByUid;exports._gslLayouts=t._gslLayouts;exports._gslListByUid=t._gslListByUid;exports._gslLists=t._gslLists;exports._gslMarkdownByUid=t._gslMarkdownByUid;exports._gslMarkdownTextByUid=t._gslMarkdownTextByUid;exports._gslMarkdownTexts=t._gslMarkdownTexts;exports._gslMarkdowns=t._gslMarkdowns;exports._gslNumberInputs=t._gslNumberInputs;exports._gslPasswordByUid=t._gslPasswordByUid;exports._gslPasswords=t._gslPasswords;exports._gslRadiogroupByUid=t._gslRadiogroupByUid;exports._gslRadiogroups=t._gslRadiogroups;exports._gslRangeCalendarByUid=t._gslRangeCalendarByUid;exports._gslRangeCalendars=t._gslRangeCalendars;exports._gslRangeDateInputByUid=t._gslRangeDateInputByUid;exports._gslRangeDateInputs=t._gslRangeDateInputs;exports._gslRangeDatePickerByUid=t._gslRangeDatePickerByUid;exports._gslRangeDatePickers=t._gslRangeDatePickers;exports._gslRangeDateTimeCalendarByUid=t._gslRangeDateTimeCalendarByUid;exports._gslRangeDateTimeCalendars=t._gslRangeDateTimeCalendars;exports._gslRangeDateTimeInputByUid=t._gslRangeDateTimeInputByUid;exports._gslRangeDateTimeInputs=t._gslRangeDateTimeInputs;exports._gslRangeDateTimePickerByUid=t._gslRangeDateTimePickerByUid;exports._gslRangeDateTimePickers=t._gslRangeDateTimePickers;exports._gslRangeTimeInputByUid=t._gslRangeTimeInputByUid;exports._gslRangeTimeInputs=t._gslRangeTimeInputs;exports._gslRangeTimePickerByUid=t._gslRangeTimePickerByUid;exports._gslRangeTimePickers=t._gslRangeTimePickers;exports._gslRepeaterByUid=t._gslRepeaterByUid;exports._gslRepeaters=t._gslRepeaters;exports._gslSelectByUid=t._gslSelectByUid;exports._gslSelects=t._gslSelects;exports._gslTabs=t._gslTabs;exports._gslTabsByUid=t._gslTabsByUid;exports._gslTags=t._gslTags;exports._gslTagsByUid=t._gslTagsByUid;exports._gslTextInputs=t._gslTextInputs;exports._gslTextareaByUid=t._gslTextareaByUid;exports._gslTextareas=t._gslTextareas;exports._gslTimeInputByUid=t._gslTimeInputByUid;exports._gslTimeInputs=t._gslTimeInputs;exports._gslTimePickerByUid=t._gslTimePickerByUid;exports._gslTimePickers=t._gslTimePickers;exports._guiAccordion=t._guiAccordion;exports._guiAlert=t._guiAlert;exports._guiBooleanInput=t._guiBooleanInput;exports._guiButton=t._guiButton;exports._guiCalendar=t._guiCalendar;exports._guiCheckbox=t._guiCheckbox;exports._guiCurrency=t._guiCurrency;exports._guiCustomAction=t._guiCustomAction;exports._guiCustomDisplay=t._guiCustomDisplay;exports._guiCustomInput=t._guiCustomInput;exports._guiCustomLayout=t._guiCustomLayout;exports._guiDateInput=t._guiDateInput;exports._guiDatePicker=t._guiDatePicker;exports._guiDateTimeCalendar=t._guiDateTimeCalendar;exports._guiDateTimeInput=t._guiDateTimeInput;exports._guiDateTimePicker=t._guiDateTimePicker;exports._guiDisplay=t._guiDisplay;exports._guiDropdown=t._guiDropdown;exports._guiFlex=t._guiFlex;exports._guiGrid=t._guiGrid;exports._guiHorizontalFlex=t._guiHorizontalFlex;exports._guiHorizontalGrid=t._guiHorizontalGrid;exports._guiList=t._guiList;exports._guiMarkdown=t._guiMarkdown;exports._guiMarkdownText=t._guiMarkdownText;exports._guiNumberInput=t._guiNumberInput;exports._guiPassword=t._guiPassword;exports._guiRadiogroup=t._guiRadiogroup;exports._guiRangeCalendar=t._guiRangeCalendar;exports._guiRangeDateInput=t._guiRangeDateInput;exports._guiRangeDatePicker=t._guiRangeDatePicker;exports._guiRangeDateTimeCalendar=t._guiRangeDateTimeCalendar;exports._guiRangeDateTimeInput=t._guiRangeDateTimeInput;exports._guiRangeDateTimePicker=t._guiRangeDateTimePicker;exports._guiRangeTimeInput=t._guiRangeTimeInput;exports._guiRangeTimePicker=t._guiRangeTimePicker;exports._guiRepeater=t._guiRepeater;exports._guiSelect=t._guiSelect;exports._guiTabs=t._guiTabs;exports._guiTags=t._guiTags;exports._guiTextInput=t._guiTextInput;exports._guiTextarea=t._guiTextarea;exports._guiTimeInput=t._guiTimeInput;exports._guiTimePicker=t._guiTimePicker;exports._guiVerticalFlex=t._guiVerticalFlex;exports._guiVerticalGrid=t._guiVerticalGrid;exports.createGslSelector=t.createGslSelector;exports.defineShortcutType=t.defineShortcutType;exports.extractWidgetProps=t.extractWidgetProps;exports.processAutoLabel=t.processAutoLabel;exports.processAutoPlaceholder=t.processAutoPlaceholder;exports._gslStates=M;exports._gslTag=O;exports.formDefs=C;exports.getItemKey=ae;exports.golemForm=ne;exports.isDxDefinitions=h;exports.isOption=re;exports.resolveFormInput=se;
@@ -1,4 +1,4 @@
1
- import { FunctionWidgetParams, ValidateOn } from '@golemui/core';
1
+ import { ExpressionFunctions, FunctionWidgetParams, ValidateOn } from '@golemui/core';
2
2
  import { WidgetItemDecorator, GslItemType } from '../formDef.domain';
3
3
  import { Dependencies } from '../../shared';
4
4
  export type { GslItemType } from '../formDef.domain';
@@ -34,6 +34,11 @@ export interface GslLeafSelector {
34
34
  export interface FormConfig {
35
35
  suppressAutomaticStack?: boolean;
36
36
  dependencies?: Dependencies;
37
+ /**
38
+ * Pure functions callable from reactive expressions under the `$fn` namespace.
39
+ * Functions passed in the wrapper's `config.functions` win on name collisions.
40
+ */
41
+ functions?: ExpressionFunctions;
37
42
  widgetLoaders?: Record<string, () => Promise<unknown>>;
38
43
  validateOn?: ValidateOn;
39
44
  states?: Record<string, string>;
@@ -0,0 +1,8 @@
1
+ import { FunctionWidgetParams } from '@golemui/core';
2
+ /**
3
+ * Runtime functions can run during the build walk / decode probe before form
4
+ * data exists; the FunctionWidgetParams contract guarantees `$form` is an
5
+ * object, so normalize it to at least `{}` — a callback reading
6
+ * `params.$form.field` must get `undefined`, not crash.
7
+ */
8
+ export declare function withForm(params?: FunctionWidgetParams<any>): FunctionWidgetParams<any>;
@@ -1,4 +1,4 @@
1
- import { Form, FormEvent, UiState, ValidateOn } from '@golemui/core';
1
+ import { ExpressionFunctions, Form, FormEvent, UiState, ValidateOn } from '@golemui/core';
2
2
  import { ValidGuiShortcut } from './core/dx.domain';
3
3
  import { DxCommonFields, DxInternalFields } from './core/dxBase.types';
4
4
  import { DxRuntimeParams } from './core/dxUtilityTypes';
@@ -20,6 +20,7 @@ export interface DxResult<S extends UiState = never, F extends Record<string, an
20
20
  form: Form<S, F>;
21
21
  events?: FormEvents;
22
22
  dependencies?: Dependencies;
23
+ functions?: ExpressionFunctions;
23
24
  widgetLoaders?: Record<string, () => Promise<unknown>>;
24
25
  validateOn?: ValidateOn;
25
26
  itemRenderers?: Record<string, unknown>;
package/lib/dx/gui.d.ts CHANGED
@@ -11,11 +11,21 @@ import { _guiCurrency } from './shortcuts/currency/guiCurrency.impl';
11
11
  import { _guiMarkdown } from './shortcuts/markdown/guiMarkdown.impl';
12
12
  import { _guiList } from './shortcuts/list/guiList.impl';
13
13
  import { _guiCalendar } from './shortcuts/calendar/guiCalendar.impl';
14
+ import { _guiDateTimeCalendar } from './shortcuts/date-time-calendar/guiDateTimeCalendar.impl';
14
15
  import { _guiDateInput } from './shortcuts/date-input/guiDateInput.impl';
15
16
  import { _guiDatePicker } from './shortcuts/date-picker/guiDatePicker.impl';
17
+ import { _guiDateTimePicker } from './shortcuts/date-time-picker/guiDateTimePicker.impl';
16
18
  import { _guiRangeCalendar } from './shortcuts/range-calendar/guiRangeCalendar.impl';
17
19
  import { _guiRangeDateInput } from './shortcuts/range-date-input/guiRangeDateInput.impl';
20
+ import { _guiRangeDateTimeInput } from './shortcuts/range-date-time-input/guiRangeDateTimeInput.impl';
21
+ import { _guiRangeDateTimeCalendar } from './shortcuts/range-date-time-calendar/guiRangeDateTimeCalendar.impl';
22
+ import { _guiRangeDateTimePicker } from './shortcuts/range-date-time-picker/guiRangeDateTimePicker.impl';
23
+ import { _guiRangeTimeInput } from './shortcuts/range-time-input/guiRangeTimeInput.impl';
18
24
  import { _guiRangeDatePicker } from './shortcuts/range-date-picker/guiRangeDatePicker.impl';
25
+ import { _guiRangeTimePicker } from './shortcuts/range-time-picker/guiRangeTimePicker.impl';
26
+ import { _guiTimeInput } from './shortcuts/time-input/guiTimeInput.impl';
27
+ import { _guiTimePicker } from './shortcuts/time-picker/guiTimePicker.impl';
28
+ import { _guiDateTimeInput } from './shortcuts/date-time-input/guiDateTimeInput.impl';
19
29
  import { _guiCustomInput } from './shortcuts/custom-input/guiCustomInput.impl';
20
30
  import { _guiButton } from './shortcuts/actions/guiActions.impl';
21
31
  import { _guiCustomAction } from './shortcuts/custom-action/guiCustomAction.impl';
@@ -43,11 +53,21 @@ export declare const gui: {
43
53
  readonly markdown: typeof _guiMarkdown;
44
54
  readonly list: typeof _guiList;
45
55
  readonly calendar: typeof _guiCalendar;
56
+ readonly dateTimeCalendar: typeof _guiDateTimeCalendar;
46
57
  readonly dateInput: typeof _guiDateInput;
47
58
  readonly datePicker: typeof _guiDatePicker;
59
+ readonly dateTimePicker: typeof _guiDateTimePicker;
60
+ readonly timeInput: typeof _guiTimeInput;
61
+ readonly timePicker: typeof _guiTimePicker;
62
+ readonly dateTimeInput: typeof _guiDateTimeInput;
48
63
  readonly rangeCalendar: typeof _guiRangeCalendar;
49
64
  readonly rangeDateInput: typeof _guiRangeDateInput;
65
+ readonly rangeDateTimeInput: typeof _guiRangeDateTimeInput;
66
+ readonly rangeDateTimeCalendar: typeof _guiRangeDateTimeCalendar;
67
+ readonly rangeDateTimePicker: typeof _guiRangeDateTimePicker;
68
+ readonly rangeTimeInput: typeof _guiRangeTimeInput;
50
69
  readonly rangeDatePicker: typeof _guiRangeDatePicker;
70
+ readonly rangeTimePicker: typeof _guiRangeTimePicker;
51
71
  readonly repeater: typeof _guiRepeater;
52
72
  readonly tags: typeof _guiTags;
53
73
  readonly custom: typeof _guiCustomInput;
package/lib/dx/index.d.ts CHANGED
@@ -3,6 +3,8 @@ export { _guiAccordion } from './shortcuts/accordion/guiAccordion.impl';
3
3
  export { _guiButton } from './shortcuts/actions/guiActions.impl';
4
4
  export { _guiAlert } from './shortcuts/alert/guiAlert.impl';
5
5
  export { _guiCalendar } from './shortcuts/calendar/guiCalendar.impl';
6
+ export { _guiDateTimeCalendar } from './shortcuts/date-time-calendar/guiDateTimeCalendar.impl';
7
+ export { _guiDateTimePicker } from './shortcuts/date-time-picker/guiDateTimePicker.impl';
6
8
  export { _guiCheckbox } from './shortcuts/checkbox/guiCheckbox.impl';
7
9
  export { _guiCurrency } from './shortcuts/currency/guiCurrency.impl';
8
10
  export { _guiCustomAction } from './shortcuts/custom-action/guiCustomAction.impl';
@@ -11,6 +13,7 @@ export { _guiCustomInput } from './shortcuts/custom-input/guiCustomInput.impl';
11
13
  export { _guiCustomLayout } from './shortcuts/custom-layout/guiCustomLayout.impl';
12
14
  export { _guiDateInput } from './shortcuts/date-input/guiDateInput.impl';
13
15
  export { _guiDatePicker } from './shortcuts/date-picker/guiDatePicker.impl';
16
+ export { _guiDateTimeInput } from './shortcuts/date-time-input/guiDateTimeInput.impl';
14
17
  export { _guiDisplay } from './shortcuts/display/guiDisplay.impl';
15
18
  export { _guiDropdown } from './shortcuts/dropdown/guiDropdown.impl';
16
19
  export { _guiBooleanInput } from './shortcuts/inputs/guiBooleanInput.impl';
@@ -24,16 +27,24 @@ export { _guiPassword } from './shortcuts/password/guiPassword.impl';
24
27
  export { _guiRadiogroup } from './shortcuts/radiogroup/guiRadiogroup.impl';
25
28
  export { _guiRangeCalendar } from './shortcuts/range-calendar/guiRangeCalendar.impl';
26
29
  export { _guiRangeDateInput } from './shortcuts/range-date-input/guiRangeDateInput.impl';
30
+ export { _guiRangeDateTimeInput } from './shortcuts/range-date-time-input/guiRangeDateTimeInput.impl';
31
+ export { _guiRangeDateTimeCalendar } from './shortcuts/range-date-time-calendar/guiRangeDateTimeCalendar.impl';
32
+ export { _guiRangeDateTimePicker } from './shortcuts/range-date-time-picker/guiRangeDateTimePicker.impl';
33
+ export { _guiRangeTimeInput } from './shortcuts/range-time-input/guiRangeTimeInput.impl';
27
34
  export { _guiRangeDatePicker } from './shortcuts/range-date-picker/guiRangeDatePicker.impl';
35
+ export { _guiRangeTimePicker } from './shortcuts/range-time-picker/guiRangeTimePicker.impl';
28
36
  export { _guiRepeater } from './shortcuts/repeater/guiRepeater.impl';
29
37
  export { _guiSelect } from './shortcuts/select/guiSelect.impl';
30
38
  export { _guiTabs } from './shortcuts/tabs/guiTabs.impl';
31
39
  export { _guiTags } from './shortcuts/tags/guiTags.impl';
32
40
  export { _guiTextarea } from './shortcuts/textarea/guiTextarea.impl';
41
+ export { _guiTimeInput } from './shortcuts/time-input/guiTimeInput.impl';
42
+ export { _guiTimePicker } from './shortcuts/time-picker/guiTimePicker.impl';
33
43
  export { _gslAccordionByUid, _gslAccordions } from './shortcuts/accordion/register';
34
44
  export { _gslActionByUid, _gslActions } from './shortcuts/actions/register';
35
45
  export { _gslAlertByUid, _gslAlerts } from './shortcuts/alert/register';
36
46
  export { _gslCalendarByUid, _gslCalendars } from './shortcuts/calendar/register';
47
+ export { _gslDateTimeCalendarByUid, _gslDateTimeCalendars, } from './shortcuts/date-time-calendar/register';
37
48
  export { _gslCheckboxByUid, _gslCheckboxes } from './shortcuts/checkbox/register';
38
49
  export { _gslCurrencies, _gslCurrencyByUid } from './shortcuts/currency/register';
39
50
  export { _gslCustomActionByUid, _gslCustomActions } from './shortcuts/custom-action/register';
@@ -42,6 +53,8 @@ export { _gslCustomInputByUid, _gslCustomInputs } from './shortcuts/custom-input
42
53
  export { _gslCustomLayoutByUid, _gslCustomLayouts } from './shortcuts/custom-layout/register';
43
54
  export { _gslDateInputByUid, _gslDateInputs } from './shortcuts/date-input/register';
44
55
  export { _gslDatePickerByUid, _gslDatePickers } from './shortcuts/date-picker/register';
56
+ export { _gslDateTimePickerByUid, _gslDateTimePickers, } from './shortcuts/date-time-picker/register';
57
+ export { _gslDateTimeInputByUid, _gslDateTimeInputs } from './shortcuts/date-time-input/register';
45
58
  export { _gslDisplayByUid, _gslDisplays } from './shortcuts/display/register';
46
59
  export { _gslDropdownByUid, _gslDropdowns } from './shortcuts/dropdown/register';
47
60
  export { _gslBooleanInputs, _gslNumberInputs, _gslTextInputs, } from './shortcuts/inputs/gslInputSubtypes';
@@ -54,12 +67,19 @@ export { _gslPasswordByUid, _gslPasswords } from './shortcuts/password/register'
54
67
  export { _gslRadiogroupByUid, _gslRadiogroups } from './shortcuts/radiogroup/register';
55
68
  export { _gslRangeCalendarByUid, _gslRangeCalendars } from './shortcuts/range-calendar/register';
56
69
  export { _gslRangeDateInputByUid, _gslRangeDateInputs, } from './shortcuts/range-date-input/register';
70
+ export { _gslRangeDateTimeInputByUid, _gslRangeDateTimeInputs, } from './shortcuts/range-date-time-input/register';
71
+ export { _gslRangeDateTimeCalendarByUid, _gslRangeDateTimeCalendars, } from './shortcuts/range-date-time-calendar/register';
72
+ export { _gslRangeDateTimePickerByUid, _gslRangeDateTimePickers, } from './shortcuts/range-date-time-picker/register';
73
+ export { _gslRangeTimeInputByUid, _gslRangeTimeInputs, } from './shortcuts/range-time-input/register';
57
74
  export { _gslRangeDatePickerByUid, _gslRangeDatePickers, } from './shortcuts/range-date-picker/register';
75
+ export { _gslRangeTimePickerByUid, _gslRangeTimePickers, } from './shortcuts/range-time-picker/register';
58
76
  export { _gslRepeaterByUid, _gslRepeaters } from './shortcuts/repeater/register';
59
77
  export { _gslSelectByUid, _gslSelects } from './shortcuts/select/register';
60
78
  export { _gslTabs, _gslTabsByUid } from './shortcuts/tabs/register';
61
79
  export { _gslTags, _gslTagsByUid } from './shortcuts/tags/register';
62
80
  export { _gslTextareaByUid, _gslTextareas } from './shortcuts/textarea/register';
81
+ export { _gslTimeInputByUid, _gslTimeInputs } from './shortcuts/time-input/register';
82
+ export { _gslTimePickerByUid, _gslTimePickers } from './shortcuts/time-picker/register';
63
83
  export { _gslStates } from './shortcuts/scopes/gslStates.impl';
64
84
  export { _gslTag } from './shortcuts/scopes/gslTag.impl';
65
85
  export type { DxFormConfig, FormConfig, GslSelectorsInput } from './core/dx.domain';
@@ -73,6 +93,7 @@ export type { AccordionDecorator, GslAccordionConfig, } from './shortcuts/accord
73
93
  export type { ActionDecorator, GslActionsConfig } from './shortcuts/actions/actions.domain';
74
94
  export type { AlertDecorator, GslAlertsConfig } from './shortcuts/alert/alert.domain';
75
95
  export type { CalendarDecorator, GslCalendarConfig } from './shortcuts/calendar/calendar.domain';
96
+ export type { DateTimeCalendarDecorator, GslDateTimeCalendarConfig, } from './shortcuts/date-time-calendar/dateTimeCalendar.domain';
76
97
  export type { CheckboxDecorator, GslCheckboxConfig } from './shortcuts/checkbox/checkbox.domain';
77
98
  export type { CurrencyDecorator, GslCurrencyConfig } from './shortcuts/currency/currency.domain';
78
99
  export type { CustomActionDecorator, GslCustomActionConfig, } from './shortcuts/custom-action/customAction.domain';
@@ -81,6 +102,8 @@ export type { CustomInputDecorator, GslCustomInputConfig, } from './shortcuts/cu
81
102
  export type { CustomLayoutDecorator, GslCustomLayoutConfig, } from './shortcuts/custom-layout/customLayout.domain';
82
103
  export type { DateInputDecorator, GslDateInputConfig, } from './shortcuts/date-input/dateInput.domain';
83
104
  export type { DatePickerDecorator, GslDatePickerConfig, } from './shortcuts/date-picker/datePicker.domain';
105
+ export type { DateTimePickerDecorator, GslDateTimePickerConfig, } from './shortcuts/date-time-picker/dateTimePicker.domain';
106
+ export type { DateTimeInputDecorator, GslDateTimeInputConfig, } from './shortcuts/date-time-input/dateTimeInput.domain';
84
107
  export type { DisplayDecorator, GslDisplaysConfig } from './shortcuts/display/display.domain';
85
108
  export type { DropdownDecorator, GslDropdownConfig } from './shortcuts/dropdown/dropdown.domain';
86
109
  export type { BooleanDataInputDecorator, GslInputsConfig, InputDecorator, InputTags, NumberDataInputDecorator, SimpleFieldDef, TextDataInputDecorator, ValidShortcutType, } from './shortcuts/inputs/inputs.domain';
@@ -91,12 +114,19 @@ export type { GslPasswordConfig, PasswordDecorator } from './shortcuts/password/
91
114
  export type { GslRadiogroupConfig, RadiogroupDecorator, } from './shortcuts/radiogroup/radiogroup.domain';
92
115
  export type { GslRangeCalendarConfig, RangeCalendarDecorator, } from './shortcuts/range-calendar/rangeCalendar.domain';
93
116
  export type { GslRangeDateInputConfig, RangeDateInputDecorator, } from './shortcuts/range-date-input/rangeDateInput.domain';
117
+ export type { GslRangeDateTimeInputConfig, RangeDateTimeInputDecorator, } from './shortcuts/range-date-time-input/rangeDateTimeInput.domain';
118
+ export type { GslRangeDateTimeCalendarConfig, RangeDateTimeCalendarDecorator, } from './shortcuts/range-date-time-calendar/rangeDateTimeCalendar.domain';
119
+ export type { GslRangeDateTimePickerConfig, RangeDateTimePickerDecorator, } from './shortcuts/range-date-time-picker/rangeDateTimePicker.domain';
120
+ export type { GslRangeTimeInputConfig, RangeTimeInputDecorator, } from './shortcuts/range-time-input/rangeTimeInput.domain';
94
121
  export type { GslRangeDatePickerConfig, RangeDatePickerDecorator, } from './shortcuts/range-date-picker/rangeDatePicker.domain';
122
+ export type { GslRangeTimePickerConfig, RangeTimePickerDecorator, } from './shortcuts/range-time-picker/rangeTimePicker.domain';
95
123
  export type { GslRepeaterConfig, RepeaterDecorator } from './shortcuts/repeater/repeater.domain';
96
124
  export type { GslSelectConfig, SelectDecorator } from './shortcuts/select/select.domain';
97
125
  export type { GslTabsConfig, TabsDecorator } from './shortcuts/tabs/tabs.domain';
98
126
  export type { GslTagsConfig, TagsDecorator } from './shortcuts/tags/tags.domain';
99
127
  export type { GslTextareaConfig, TextareaDecorator } from './shortcuts/textarea/textarea.domain';
128
+ export type { GslTimeInputConfig, TimeInputDecorator, } from './shortcuts/time-input/timeInput.domain';
129
+ export type { GslTimePickerConfig, TimePickerDecorator, } from './shortcuts/time-picker/timePicker.domain';
100
130
  export { defineShortcutType } from './core/defineShortcutType';
101
131
  export type { ShortcutTypeSelectors } from './core/defineShortcutType';
102
132
  export type { DxActionBase, DxCommonFields, DxDisplayBase, DxFormEvent, DxInputBase, DxInternalFields, DxLayoutBase, } from './core/dxBase.types';
@@ -1,4 +1,4 @@
1
- import { ValidateOn, Action, Form, I18nTranslator, Middleware, State } from '@golemui/core';
1
+ import { ExpressionFunctions, ValidateOn, Action, Form, I18nTranslator, Middleware, State } from '@golemui/core';
2
2
  import { CustomValidatorSchemas } from '@golemui/gui-validators';
3
3
  import { Dependencies } from '../shared';
4
4
  import { DxFormConfig, GslSelectorsInput } from './core/dx.domain';
@@ -17,12 +17,20 @@ export interface GuiFormInitConfig {
17
17
  itemRenderers?: Record<string, unknown>;
18
18
  localization?: I18nTranslator;
19
19
  dependencies?: Dependencies;
20
+ /**
21
+ * Pure functions callable from reactive expressions under the `$fn` namespace,
22
+ * e.g. `"text": "Total: {{ $fn.grandTotal($form.lineItems) }}"`.
23
+ * Merged over any functions declared by the DX bundle's `formConfig`;
24
+ * this config wins on name collisions.
25
+ */
26
+ functions?: ExpressionFunctions;
20
27
  formName?: string;
21
28
  }
22
29
  export interface ResolvedFormInput<FormData extends Record<string, any> = any> {
23
30
  formDef: string | Record<string, any> | Form<any, FormData>;
24
31
  formEvent?: FormEvents;
25
32
  dependencies?: Dependencies;
33
+ functions?: ExpressionFunctions;
26
34
  widgetLoaders?: Record<string, () => Promise<unknown>>;
27
35
  validateOn?: ValidateOn;
28
36
  itemRenderers?: Record<string, unknown>;
@@ -0,0 +1,22 @@
1
+ import { StringValidator } from '@golemui/gui-validators';
2
+ import { DateTimeCalendarProps } from '../../../widget.props';
3
+ import { DxCommonFields, DxInputBase, DxInternalFields } from '../../core/dxBase.types';
4
+ import { DefOrCallback, GslConfigBase, GuiShortcutOf } from '../../core/dxUtilityTypes';
5
+ import { DxValidator } from '../../core/dxValidatorHelper';
6
+ export interface DateTimeCalendarDecorator extends DxInputBase, DxCommonFields, Partial<DateTimeCalendarProps> {
7
+ type: 'dateTimeCalendar';
8
+ validator?: DxValidator<StringValidator>;
9
+ }
10
+ /**
11
+ * Full decorator type including pipeline-internal fields.
12
+ * Used by the pipeline only — form authors use DateTimeCalendarDecorator.
13
+ */
14
+ export type DateTimeCalendarDecoratorFull = DateTimeCalendarDecorator & DxInternalFields;
15
+ export interface DateTimeCalendarSensibleDefaultsConfig {
16
+ suppressAutomaticLabels?: boolean;
17
+ }
18
+ export interface GslDateTimeCalendarConfig extends GslConfigBase<DateTimeCalendarDecorator> {
19
+ suppressAutomaticLabels?: boolean;
20
+ }
21
+ export type DateTimeCalendarEntry = DefOrCallback<DateTimeCalendarDecorator>;
22
+ export type GuiDateTimeCalendarShortcut = GuiShortcutOf<'DATE_TIME_CALENDAR', DateTimeCalendarEntry>;
@@ -0,0 +1,6 @@
1
+ import { DateTimeCalendarDecorator, DateTimeCalendarSensibleDefaultsConfig } from './dateTimeCalendar.domain';
2
+ export declare class DateTimeCalendarSensibleDefaultsService {
3
+ processAutomaticLabels(item: DateTimeCalendarDecorator, currentConfig: DateTimeCalendarSensibleDefaultsConfig): DateTimeCalendarDecorator;
4
+ }
5
+ declare const dateTimeCalendarSensibleDefaultsService: DateTimeCalendarSensibleDefaultsService;
6
+ export default dateTimeCalendarSensibleDefaultsService;
@@ -0,0 +1,6 @@
1
+ import { DxRuntimeParams } from '../../core/dxUtilityTypes';
2
+ import { GuiDateTimeCalendarShortcut, DateTimeCalendarDecorator } from './dateTimeCalendar.domain';
3
+ export declare function _guiDateTimeCalendar(path: string): GuiDateTimeCalendarShortcut;
4
+ export declare function _guiDateTimeCalendar(path: string, props: Partial<Omit<DateTimeCalendarDecorator, 'type'>>): GuiDateTimeCalendarShortcut;
5
+ export declare function _guiDateTimeCalendar(path: string, props: Partial<Omit<DateTimeCalendarDecorator, 'type'>>, tags: string[]): GuiDateTimeCalendarShortcut;
6
+ export declare function _guiDateTimeCalendar(path: string, callback: (params: DxRuntimeParams) => Partial<Omit<DateTimeCalendarDecorator, 'type'>>, tags?: string[]): GuiDateTimeCalendarShortcut;
@@ -0,0 +1,2 @@
1
+ import { DateTimeCalendarDecorator, GslDateTimeCalendarConfig } from './dateTimeCalendar.domain';
2
+ export declare const _gslDateTimeCalendars: (config: GslDateTimeCalendarConfig, matcher?: ((decorator: DateTimeCalendarDecorator) => boolean) | undefined) => import('../../core/dx.domain').GslLeafSelector, _gslDateTimeCalendarByUid: (uid: string, config: GslDateTimeCalendarConfig) => import('../../core/dx.domain').GslLeafSelector;
@@ -0,0 +1,17 @@
1
+ import { StringValidator } from '@golemui/gui-validators';
2
+ import { DateTimeInputProps } from '../../../widget.props';
3
+ import { DxCommonFields, DxInputBase } from '../../core/dxBase.types';
4
+ import { DefOrCallback, GslConfigBase, GuiShortcutOf } from '../../core/dxUtilityTypes';
5
+ import { DxValidator } from '../../core/dxValidatorHelper';
6
+ export interface DateTimeInputDecorator extends DxInputBase, DxCommonFields, Partial<DateTimeInputProps> {
7
+ type: 'dateTimeInput';
8
+ validator?: DxValidator<StringValidator>;
9
+ }
10
+ export interface GslDateTimeInputConfig extends GslConfigBase<DateTimeInputDecorator> {
11
+ suppressAutomaticLabels?: boolean;
12
+ }
13
+ export type DateTimeInputEntry = {
14
+ key: string;
15
+ def: DefOrCallback<DateTimeInputDecorator>;
16
+ };
17
+ export type GuiDateTimeInputShortcut = GuiShortcutOf<'DATE_TIME_INPUT', DateTimeInputEntry>;
@@ -0,0 +1,6 @@
1
+ import { DxRuntimeParams } from '../../core/dxUtilityTypes';
2
+ import { DateTimeInputDecorator, GuiDateTimeInputShortcut } from './dateTimeInput.domain';
3
+ export declare function _guiDateTimeInput(path: string): GuiDateTimeInputShortcut;
4
+ export declare function _guiDateTimeInput(path: string, props: Partial<Omit<DateTimeInputDecorator, 'type'>>): GuiDateTimeInputShortcut;
5
+ export declare function _guiDateTimeInput(path: string, props: Partial<Omit<DateTimeInputDecorator, 'type'>>, tags: string[]): GuiDateTimeInputShortcut;
6
+ export declare function _guiDateTimeInput(path: string, callback: (params: DxRuntimeParams) => Partial<Omit<DateTimeInputDecorator, 'type'>>, tags?: string[]): GuiDateTimeInputShortcut;
@@ -0,0 +1,2 @@
1
+ import { DateTimeInputDecorator, GslDateTimeInputConfig } from './dateTimeInput.domain';
2
+ export declare const _gslDateTimeInputs: (config: GslDateTimeInputConfig, matcher?: ((decorator: DateTimeInputDecorator) => boolean) | undefined) => import('../../core/dx.domain').GslLeafSelector, _gslDateTimeInputByUid: (uid: string, config: GslDateTimeInputConfig) => import('../../core/dx.domain').GslLeafSelector;
@@ -0,0 +1,18 @@
1
+ import { StringValidator } from '@golemui/gui-validators';
2
+ import { DateTimePickerProps } from '../../../widget.props';
3
+ import { DxCommonFields, DxInputBase } from '../../core/dxBase.types';
4
+ import { DefOrCallback, GslConfigBase, GuiShortcutOf } from '../../core/dxUtilityTypes';
5
+ import { DxValidator } from '../../core/dxValidatorHelper';
6
+ export interface DateTimePickerDecorator extends DxInputBase, DxCommonFields, Partial<DateTimePickerProps> {
7
+ type: 'dateTimePicker';
8
+ validator?: DxValidator<StringValidator>;
9
+ }
10
+ export interface GslDateTimePickerConfig extends GslConfigBase<DateTimePickerDecorator> {
11
+ suppressAutomaticLabels?: boolean;
12
+ suppressAutomaticPlaceholders?: boolean;
13
+ }
14
+ export type DateTimePickerEntry = {
15
+ key: string;
16
+ def: DefOrCallback<DateTimePickerDecorator>;
17
+ };
18
+ export type GuiDateTimePickerShortcut = GuiShortcutOf<'DATE_TIME_PICKER', DateTimePickerEntry>;
@@ -0,0 +1,7 @@
1
+ import { DxRuntimeParams } from '../../core/dxUtilityTypes';
2
+ import { DateTimePickerDecorator, GuiDateTimePickerShortcut } from './dateTimePicker.domain';
3
+ type DateTimePickerFactoryProps = Omit<DateTimePickerDecorator, 'type'>;
4
+ export declare function _guiDateTimePicker(path: string, props: DateTimePickerFactoryProps): GuiDateTimePickerShortcut;
5
+ export declare function _guiDateTimePicker(path: string, props: DateTimePickerFactoryProps, tags: string[]): GuiDateTimePickerShortcut;
6
+ export declare function _guiDateTimePicker(path: string, callback: (params: DxRuntimeParams) => DateTimePickerFactoryProps, tags?: string[]): GuiDateTimePickerShortcut;
7
+ export {};
@@ -0,0 +1,2 @@
1
+ import { DateTimePickerDecorator, GslDateTimePickerConfig } from './dateTimePicker.domain';
2
+ export declare const _gslDateTimePickers: (config: GslDateTimePickerConfig, matcher?: ((decorator: DateTimePickerDecorator) => boolean) | undefined) => import('../../core/dx.domain').GslLeafSelector, _gslDateTimePickerByUid: (uid: string, config: GslDateTimePickerConfig) => import('../../core/dx.domain').GslLeafSelector;
@@ -0,0 +1,6 @@
1
+ import { DxRuntimeParams } from '../../core/dxUtilityTypes';
2
+ import { GuiRangeDateTimeCalendarShortcut, RangeDateTimeCalendarDecorator } from './rangeDateTimeCalendar.domain';
3
+ export declare function _guiRangeDateTimeCalendar(path: string): GuiRangeDateTimeCalendarShortcut;
4
+ export declare function _guiRangeDateTimeCalendar(path: string, props: Partial<Omit<RangeDateTimeCalendarDecorator, 'type'>>): GuiRangeDateTimeCalendarShortcut;
5
+ export declare function _guiRangeDateTimeCalendar(path: string, props: Partial<Omit<RangeDateTimeCalendarDecorator, 'type'>>, tags: string[]): GuiRangeDateTimeCalendarShortcut;
6
+ export declare function _guiRangeDateTimeCalendar(path: string, callback: (params: DxRuntimeParams) => Partial<Omit<RangeDateTimeCalendarDecorator, 'type'>>, tags?: string[]): GuiRangeDateTimeCalendarShortcut;
@@ -0,0 +1,17 @@
1
+ import { ArrayValidator } from '@golemui/gui-validators';
2
+ import { RangeDateTimeCalendarProps } from '../../../widget.props';
3
+ import { DxCommonFields, DxInputBase } from '../../core/dxBase.types';
4
+ import { DefOrCallback, GslConfigBase, GuiShortcutOf } from '../../core/dxUtilityTypes';
5
+ import { DxValidator } from '../../core/dxValidatorHelper';
6
+ export interface RangeDateTimeCalendarDecorator extends DxInputBase, DxCommonFields, Partial<RangeDateTimeCalendarProps> {
7
+ type: 'rangeDateTimeCalendar';
8
+ validator?: DxValidator<ArrayValidator>;
9
+ }
10
+ export interface GslRangeDateTimeCalendarConfig extends GslConfigBase<RangeDateTimeCalendarDecorator> {
11
+ suppressAutomaticLabels?: boolean;
12
+ }
13
+ export type RangeDateTimeCalendarEntry = {
14
+ key: string;
15
+ def: DefOrCallback<RangeDateTimeCalendarDecorator>;
16
+ };
17
+ export type GuiRangeDateTimeCalendarShortcut = GuiShortcutOf<'RANGE_DATE_TIME_CALENDAR', RangeDateTimeCalendarEntry>;
@@ -0,0 +1,2 @@
1
+ import { GslRangeDateTimeCalendarConfig, RangeDateTimeCalendarDecorator } from './rangeDateTimeCalendar.domain';
2
+ export declare const _gslRangeDateTimeCalendars: (config: GslRangeDateTimeCalendarConfig, matcher?: ((decorator: RangeDateTimeCalendarDecorator) => boolean) | undefined) => import('../../core/dx.domain').GslLeafSelector, _gslRangeDateTimeCalendarByUid: (uid: string, config: GslRangeDateTimeCalendarConfig) => import('../../core/dx.domain').GslLeafSelector;
@@ -0,0 +1,6 @@
1
+ import { DxRuntimeParams } from '../../core/dxUtilityTypes';
2
+ import { GuiRangeDateTimeInputShortcut, RangeDateTimeInputDecorator } from './rangeDateTimeInput.domain';
3
+ export declare function _guiRangeDateTimeInput(path: string): GuiRangeDateTimeInputShortcut;
4
+ export declare function _guiRangeDateTimeInput(path: string, props: Partial<Omit<RangeDateTimeInputDecorator, 'type'>>): GuiRangeDateTimeInputShortcut;
5
+ export declare function _guiRangeDateTimeInput(path: string, props: Partial<Omit<RangeDateTimeInputDecorator, 'type'>>, tags: string[]): GuiRangeDateTimeInputShortcut;
6
+ export declare function _guiRangeDateTimeInput(path: string, callback: (params: DxRuntimeParams) => Partial<Omit<RangeDateTimeInputDecorator, 'type'>>, tags?: string[]): GuiRangeDateTimeInputShortcut;
@@ -0,0 +1,17 @@
1
+ import { ArrayValidator } from '@golemui/gui-validators';
2
+ import { RangeDateTimeInputProps } from '../../../widget.props';
3
+ import { DxCommonFields, DxInputBase } from '../../core/dxBase.types';
4
+ import { DefOrCallback, GslConfigBase, GuiShortcutOf } from '../../core/dxUtilityTypes';
5
+ import { DxValidator } from '../../core/dxValidatorHelper';
6
+ export interface RangeDateTimeInputDecorator extends DxInputBase, DxCommonFields, Partial<RangeDateTimeInputProps> {
7
+ type: 'rangeDateTimeInput';
8
+ validator?: DxValidator<ArrayValidator>;
9
+ }
10
+ export interface GslRangeDateTimeInputConfig extends GslConfigBase<RangeDateTimeInputDecorator> {
11
+ suppressAutomaticLabels?: boolean;
12
+ }
13
+ export type RangeDateTimeInputEntry = {
14
+ key: string;
15
+ def: DefOrCallback<RangeDateTimeInputDecorator>;
16
+ };
17
+ export type GuiRangeDateTimeInputShortcut = GuiShortcutOf<'RANGE_DATE_TIME_INPUT', RangeDateTimeInputEntry>;
@@ -0,0 +1,2 @@
1
+ import { GslRangeDateTimeInputConfig, RangeDateTimeInputDecorator } from './rangeDateTimeInput.domain';
2
+ export declare const _gslRangeDateTimeInputs: (config: GslRangeDateTimeInputConfig, matcher?: ((decorator: RangeDateTimeInputDecorator) => boolean) | undefined) => import('../../core/dx.domain').GslLeafSelector, _gslRangeDateTimeInputByUid: (uid: string, config: GslRangeDateTimeInputConfig) => import('../../core/dx.domain').GslLeafSelector;
@@ -0,0 +1,6 @@
1
+ import { DxRuntimeParams } from '../../core/dxUtilityTypes';
2
+ import { GuiRangeDateTimePickerShortcut, RangeDateTimePickerDecorator } from './rangeDateTimePicker.domain';
3
+ export declare function _guiRangeDateTimePicker(path: string): GuiRangeDateTimePickerShortcut;
4
+ export declare function _guiRangeDateTimePicker(path: string, props: Partial<Omit<RangeDateTimePickerDecorator, 'type'>>): GuiRangeDateTimePickerShortcut;
5
+ export declare function _guiRangeDateTimePicker(path: string, props: Partial<Omit<RangeDateTimePickerDecorator, 'type'>>, tags: string[]): GuiRangeDateTimePickerShortcut;
6
+ export declare function _guiRangeDateTimePicker(path: string, callback: (params: DxRuntimeParams) => Partial<Omit<RangeDateTimePickerDecorator, 'type'>>, tags?: string[]): GuiRangeDateTimePickerShortcut;
@@ -0,0 +1,17 @@
1
+ import { ArrayValidator } from '@golemui/gui-validators';
2
+ import { RangeDateTimePickerProps } from '../../../widget.props';
3
+ import { DxCommonFields, DxInputBase } from '../../core/dxBase.types';
4
+ import { DefOrCallback, GslConfigBase, GuiShortcutOf } from '../../core/dxUtilityTypes';
5
+ import { DxValidator } from '../../core/dxValidatorHelper';
6
+ export interface RangeDateTimePickerDecorator extends DxInputBase, DxCommonFields, Partial<RangeDateTimePickerProps> {
7
+ type: 'rangeDateTimePicker';
8
+ validator?: DxValidator<ArrayValidator>;
9
+ }
10
+ export interface GslRangeDateTimePickerConfig extends GslConfigBase<RangeDateTimePickerDecorator> {
11
+ suppressAutomaticLabels?: boolean;
12
+ }
13
+ export type RangeDateTimePickerEntry = {
14
+ key: string;
15
+ def: DefOrCallback<RangeDateTimePickerDecorator>;
16
+ };
17
+ export type GuiRangeDateTimePickerShortcut = GuiShortcutOf<'RANGE_DATE_TIME_PICKER', RangeDateTimePickerEntry>;
@@ -0,0 +1,2 @@
1
+ import { GslRangeDateTimePickerConfig, RangeDateTimePickerDecorator } from './rangeDateTimePicker.domain';
2
+ export declare const _gslRangeDateTimePickers: (config: GslRangeDateTimePickerConfig, matcher?: ((decorator: RangeDateTimePickerDecorator) => boolean) | undefined) => import('../../core/dx.domain').GslLeafSelector, _gslRangeDateTimePickerByUid: (uid: string, config: GslRangeDateTimePickerConfig) => import('../../core/dx.domain').GslLeafSelector;
@@ -0,0 +1,6 @@
1
+ import { DxRuntimeParams } from '../../core/dxUtilityTypes';
2
+ import { GuiRangeTimeInputShortcut, RangeTimeInputDecorator } from './rangeTimeInput.domain';
3
+ export declare function _guiRangeTimeInput(path: string): GuiRangeTimeInputShortcut;
4
+ export declare function _guiRangeTimeInput(path: string, props: Partial<Omit<RangeTimeInputDecorator, 'type'>>): GuiRangeTimeInputShortcut;
5
+ export declare function _guiRangeTimeInput(path: string, props: Partial<Omit<RangeTimeInputDecorator, 'type'>>, tags: string[]): GuiRangeTimeInputShortcut;
6
+ export declare function _guiRangeTimeInput(path: string, callback: (params: DxRuntimeParams) => Partial<Omit<RangeTimeInputDecorator, 'type'>>, tags?: string[]): GuiRangeTimeInputShortcut;
@@ -0,0 +1,17 @@
1
+ import { ArrayValidator } from '@golemui/gui-validators';
2
+ import { RangeTimeInputProps } from '../../../widget.props';
3
+ import { DxCommonFields, DxInputBase } from '../../core/dxBase.types';
4
+ import { DefOrCallback, GslConfigBase, GuiShortcutOf } from '../../core/dxUtilityTypes';
5
+ import { DxValidator } from '../../core/dxValidatorHelper';
6
+ export interface RangeTimeInputDecorator extends DxInputBase, DxCommonFields, Partial<RangeTimeInputProps> {
7
+ type: 'rangeTimeInput';
8
+ validator?: DxValidator<ArrayValidator>;
9
+ }
10
+ export interface GslRangeTimeInputConfig extends GslConfigBase<RangeTimeInputDecorator> {
11
+ suppressAutomaticLabels?: boolean;
12
+ }
13
+ export type RangeTimeInputEntry = {
14
+ key: string;
15
+ def: DefOrCallback<RangeTimeInputDecorator>;
16
+ };
17
+ export type GuiRangeTimeInputShortcut = GuiShortcutOf<'RANGE_TIME_INPUT', RangeTimeInputEntry>;
@@ -0,0 +1,2 @@
1
+ import { GslRangeTimeInputConfig, RangeTimeInputDecorator } from './rangeTimeInput.domain';
2
+ export declare const _gslRangeTimeInputs: (config: GslRangeTimeInputConfig, matcher?: ((decorator: RangeTimeInputDecorator) => boolean) | undefined) => import('../../core/dx.domain').GslLeafSelector, _gslRangeTimeInputByUid: (uid: string, config: GslRangeTimeInputConfig) => import('../../core/dx.domain').GslLeafSelector;
@@ -0,0 +1,6 @@
1
+ import { DxRuntimeParams } from '../../core/dxUtilityTypes';
2
+ import { GuiRangeTimePickerShortcut, RangeTimePickerDecorator } from './rangeTimePicker.domain';
3
+ export declare function _guiRangeTimePicker(path: string): GuiRangeTimePickerShortcut;
4
+ export declare function _guiRangeTimePicker(path: string, props: Partial<Omit<RangeTimePickerDecorator, 'type'>>): GuiRangeTimePickerShortcut;
5
+ export declare function _guiRangeTimePicker(path: string, props: Partial<Omit<RangeTimePickerDecorator, 'type'>>, tags: string[]): GuiRangeTimePickerShortcut;
6
+ export declare function _guiRangeTimePicker(path: string, callback: (params: DxRuntimeParams) => Partial<Omit<RangeTimePickerDecorator, 'type'>>, tags?: string[]): GuiRangeTimePickerShortcut;
@@ -0,0 +1,17 @@
1
+ import { ArrayValidator } from '@golemui/gui-validators';
2
+ import { RangeTimePickerProps } from '../../../widget.props';
3
+ import { DxCommonFields, DxInputBase } from '../../core/dxBase.types';
4
+ import { DefOrCallback, GslConfigBase, GuiShortcutOf } from '../../core/dxUtilityTypes';
5
+ import { DxValidator } from '../../core/dxValidatorHelper';
6
+ export interface RangeTimePickerDecorator extends DxInputBase, DxCommonFields, Partial<RangeTimePickerProps> {
7
+ type: 'rangeTimePicker';
8
+ validator?: DxValidator<ArrayValidator>;
9
+ }
10
+ export interface GslRangeTimePickerConfig extends GslConfigBase<RangeTimePickerDecorator> {
11
+ suppressAutomaticLabels?: boolean;
12
+ }
13
+ export type RangeTimePickerEntry = {
14
+ key: string;
15
+ def: DefOrCallback<RangeTimePickerDecorator>;
16
+ };
17
+ export type GuiRangeTimePickerShortcut = GuiShortcutOf<'RANGE_TIME_PICKER', RangeTimePickerEntry>;
@@ -0,0 +1,2 @@
1
+ import { GslRangeTimePickerConfig, RangeTimePickerDecorator } from './rangeTimePicker.domain';
2
+ export declare const _gslRangeTimePickers: (config: GslRangeTimePickerConfig, matcher?: ((decorator: RangeTimePickerDecorator) => boolean) | undefined) => import('../../core/dx.domain').GslLeafSelector, _gslRangeTimePickerByUid: (uid: string, config: GslRangeTimePickerConfig) => import('../../core/dx.domain').GslLeafSelector;