@ecopages/radiant-ui 0.1.0-beta.3 → 0.1.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ui/autocomplete/autocomplete.css +135 -0
- package/dist/components/ui/autocomplete/autocomplete.d.ts +21 -0
- package/dist/components/ui/autocomplete/autocomplete.script.d.ts +42 -0
- package/dist/components/ui/autocomplete/index.d.ts +2 -0
- package/dist/components/ui/autocomplete/index.js +2 -0
- package/dist/components/ui/autocomplete/index.js.map +7 -0
- package/dist/components/ui/avatar/avatar.css +58 -0
- package/dist/components/ui/avatar/avatar.d.ts +13 -0
- package/dist/components/ui/avatar/index.d.ts +1 -0
- package/dist/components/ui/avatar/index.js +2 -0
- package/dist/components/ui/avatar/index.js.map +7 -0
- package/dist/components/ui/button-group/button-group.css +16 -0
- package/dist/components/ui/button-group/button-group.d.ts +10 -0
- package/dist/components/ui/button-group/index.d.ts +1 -0
- package/dist/components/ui/button-group/index.js +2 -0
- package/dist/components/ui/button-group/index.js.map +7 -0
- package/dist/components/ui/calendar/calendar.css +318 -0
- package/dist/components/ui/calendar/calendar.d.ts +5 -0
- package/dist/components/ui/calendar/calendar.script.d.ts +89 -0
- package/dist/components/ui/calendar/index.d.ts +2 -0
- package/dist/components/ui/calendar/index.js +2 -0
- package/dist/components/ui/calendar/index.js.map +7 -0
- package/dist/components/ui/chip/chip.css +47 -0
- package/dist/components/ui/chip/chip.d.ts +11 -0
- package/dist/components/ui/chip/index.d.ts +1 -0
- package/dist/components/ui/chip/index.js +2 -0
- package/dist/components/ui/chip/index.js.map +7 -0
- package/dist/components/ui/chip-list/chip-list.css +15 -0
- package/dist/components/ui/chip-list/chip-list.d.ts +10 -0
- package/dist/components/ui/chip-list/index.d.ts +1 -0
- package/dist/components/ui/chip-list/index.js +2 -0
- package/dist/components/ui/chip-list/index.js.map +7 -0
- package/dist/components/ui/combobox/combobox.css +42 -80
- package/dist/components/ui/combobox/combobox.d.ts +12 -20
- package/dist/components/ui/combobox/combobox.script.d.ts +15 -14
- package/dist/components/ui/combobox/index.d.ts +2 -1
- package/dist/components/ui/combobox/index.js +1 -1
- package/dist/components/ui/combobox/index.js.map +4 -4
- package/dist/components/ui/date-field/date-field.css +184 -0
- package/dist/components/ui/date-field/date-field.d.ts +10 -0
- package/dist/components/ui/date-field/date-field.script.d.ts +108 -0
- package/dist/components/ui/date-field/index.d.ts +2 -0
- package/dist/components/ui/date-field/index.js +2 -0
- package/dist/components/ui/date-field/index.js.map +7 -0
- package/dist/components/ui/date-range-picker/date-range-picker.css +194 -0
- package/dist/components/ui/date-range-picker/date-range-picker.d.ts +10 -0
- package/dist/components/ui/date-range-picker/date-range-picker.script.d.ts +99 -0
- package/dist/components/ui/date-range-picker/index.d.ts +2 -0
- package/dist/components/ui/date-range-picker/index.js +2 -0
- package/dist/components/ui/date-range-picker/index.js.map +7 -0
- package/dist/components/ui/dialog/dialog.css +1 -1
- package/dist/components/ui/feed/feed.css +169 -5
- package/dist/components/ui/feed/feed.d.ts +54 -11
- package/dist/components/ui/feed/index.d.ts +1 -2
- package/dist/components/ui/feed/index.js +1 -1
- package/dist/components/ui/feed/index.js.map +4 -4
- package/dist/components/ui/field/index.js +1 -1
- package/dist/components/ui/field/index.js.map +3 -3
- package/dist/components/ui/form/form-field.test.d.ts +1 -0
- package/dist/components/ui/form/index.js +1 -1
- package/dist/components/ui/form/index.js.map +3 -3
- package/dist/components/ui/heading/heading.css +107 -0
- package/dist/components/ui/heading/heading.d.ts +30 -0
- package/dist/components/ui/heading/index.d.ts +1 -0
- package/dist/components/ui/heading/index.js +2 -0
- package/dist/components/ui/heading/index.js.map +7 -0
- package/dist/components/ui/headline/headline.css +43 -0
- package/dist/components/ui/headline/headline.d.ts +16 -0
- package/dist/components/ui/headline/index.d.ts +1 -0
- package/dist/components/ui/headline/index.js +2 -0
- package/dist/components/ui/headline/index.js.map +7 -0
- package/dist/components/ui/input/index.js +1 -1
- package/dist/components/ui/input/index.js.map +4 -4
- package/dist/components/ui/input/input.d.ts +8 -1
- package/dist/components/ui/label/index.js +1 -1
- package/dist/components/ui/label/index.js.map +2 -2
- package/dist/components/ui/listbox/index.d.ts +1 -1
- package/dist/components/ui/listbox/index.js +1 -1
- package/dist/components/ui/listbox/index.js.map +4 -4
- package/dist/components/ui/listbox/listbox.css +34 -10
- package/dist/components/ui/listbox/listbox.d.ts +12 -4
- package/dist/components/ui/listbox/listbox.script.d.ts +12 -0
- package/dist/components/ui/menu-button/index.js +1 -1
- package/dist/components/ui/menu-button/index.js.map +4 -4
- package/dist/components/ui/menu-button/menu-button.css +24 -8
- package/dist/components/ui/menu-button/menu-button.script.d.ts +3 -4
- package/dist/components/ui/menubar/index.js +1 -1
- package/dist/components/ui/menubar/index.js.map +4 -4
- package/dist/components/ui/menubar/menubar.css +40 -22
- package/dist/components/ui/menubar/menubar.script.d.ts +6 -1
- package/dist/components/ui/number-field/index.d.ts +2 -0
- package/dist/components/ui/number-field/index.js +2 -0
- package/dist/components/ui/number-field/index.js.map +7 -0
- package/dist/components/ui/number-field/number-field.css +185 -0
- package/dist/components/ui/number-field/number-field.d.ts +43 -0
- package/dist/components/ui/number-field/number-field.script.d.ts +104 -0
- package/dist/components/ui/popover/index.d.ts +4 -0
- package/dist/components/ui/popover/index.js +2 -0
- package/dist/components/ui/popover/index.js.map +7 -0
- package/dist/components/ui/popover/popover.css +132 -0
- package/dist/components/ui/popover/popover.d.ts +15 -0
- package/dist/components/ui/popover/popover.script.d.ts +85 -0
- package/dist/components/ui/select/index.d.ts +3 -0
- package/dist/components/ui/select/index.js +2 -0
- package/dist/components/ui/select/index.js.map +7 -0
- package/dist/components/ui/select/select.css +216 -0
- package/dist/components/ui/select/select.d.ts +54 -0
- package/dist/components/ui/select/select.script.d.ts +106 -0
- package/dist/components/ui/shared/collection-navigation.d.ts +8 -0
- package/dist/components/ui/shared/collection-navigation.test.d.ts +1 -0
- package/dist/components/ui/shared/control-toggle.css +132 -0
- package/dist/components/ui/shared/field-label.d.ts +9 -0
- package/dist/components/ui/shared/floating-position.d.ts +13 -2
- package/dist/components/ui/shared/listbox-popover-behavior.d.ts +47 -0
- package/dist/components/ui/shared/listbox-popover-behavior.test.d.ts +1 -0
- package/dist/components/ui/shared/multi-value.d.ts +4 -0
- package/dist/components/ui/shared/popover-controller.d.ts +35 -0
- package/dist/components/ui/shared/popover-controller.test.d.ts +1 -0
- package/dist/components/ui/shared/popover.css +123 -0
- package/dist/components/ui/shared/portal.d.ts +7 -0
- package/dist/components/ui/shared/portal.test.d.ts +1 -0
- package/dist/components/ui/sidebar/index.js +1 -1
- package/dist/components/ui/sidebar/index.js.map +3 -3
- package/dist/components/ui/slider/index.js +1 -1
- package/dist/components/ui/slider/index.js.map +3 -3
- package/dist/components/ui/slider/slider.script.d.ts +5 -12
- package/dist/components/ui/tag-group/index.d.ts +2 -0
- package/dist/components/ui/tag-group/index.js +2 -0
- package/dist/components/ui/tag-group/index.js.map +7 -0
- package/dist/components/ui/tag-group/tag-group.css +184 -0
- package/dist/components/ui/tag-group/tag-group.d.ts +28 -0
- package/dist/components/ui/tag-group/tag-group.script.d.ts +65 -0
- package/dist/components/ui/textarea/index.js +1 -1
- package/dist/components/ui/textarea/index.js.map +2 -2
- package/dist/components/ui/toc/index.js +1 -1
- package/dist/components/ui/toc/index.js.map +3 -3
- package/dist/components/ui/toc/toc.css +1 -1
- package/dist/components/ui/toc/toc.ssr.test.d.ts +1 -0
- package/dist/components/ui/toc/toc.test.d.ts +1 -0
- package/dist/components/ui/tooltip/index.js +1 -1
- package/dist/components/ui/tooltip/index.js.map +3 -3
- package/dist/index.d.ts +14 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/lib/icons/calendar.d.ts +3 -0
- package/dist/lib/icons/chevron-down.d.ts +3 -0
- package/dist/lib/icons/index.d.ts +3 -0
- package/dist/lib/icons/types.d.ts +4 -0
- package/dist/lib/intl/locale.d.ts +3 -0
- package/dist/lib/intl-date/calendar.d.ts +25 -0
- package/dist/lib/intl-date/formatters.d.ts +13 -0
- package/dist/lib/intl-date/index.d.ts +12 -0
- package/dist/lib/intl-date/iso.d.ts +6 -0
- package/dist/lib/intl-date/months.d.ts +12 -0
- package/dist/lib/intl-date/parts.d.ts +15 -0
- package/dist/lib/intl-date/parts.test.d.ts +1 -0
- package/dist/lib/intl-date/segments.d.ts +32 -0
- package/dist/lib/intl-date/segments.test.d.ts +1 -0
- package/dist/lib/intl-date/selection.d.ts +39 -0
- package/dist/lib/intl-date/selection.test.d.ts +1 -0
- package/dist/lib/intl-date/types.d.ts +17 -0
- package/dist/lib/intl-number/format.d.ts +9 -0
- package/dist/lib/intl-number/index.d.ts +2 -0
- package/dist/lib/intl-number/range.d.ts +3 -0
- package/dist/lib/intrinsic.d.ts +13 -0
- package/dist/lib/mask/date-mask.d.ts +29 -0
- package/dist/lib/mask/date-mask.test.d.ts +1 -0
- package/dist/lib/mask/index.d.ts +4 -0
- package/dist/lib/mask/input-mask.d.ts +52 -0
- package/dist/lib/mask/input-mask.test.d.ts +1 -0
- package/dist/lib/text-filter.d.ts +7 -0
- package/dist/lib/text-filter.test.d.ts +1 -0
- package/dist/styles/radiant-ui-core.css +131 -1
- package/dist/styles/radiant-ui.css +142 -1
- package/dist/styles/styles.css +4504 -2395
- package/dist/styles/tailwind.css +142 -1
- package/dist/styles/tokens/typography/default.css +8 -0
- package/package.json +106 -15
- package/dist/components/ui/feed/feed.script.d.ts +0 -22
- package/dist/components/ui/spinbutton/index.d.ts +0 -2
- package/dist/components/ui/spinbutton/index.js +0 -2
- package/dist/components/ui/spinbutton/index.js.map +0 -7
- package/dist/components/ui/spinbutton/spinbutton.css +0 -69
- package/dist/components/ui/spinbutton/spinbutton.d.ts +0 -5
- package/dist/components/ui/spinbutton/spinbutton.script.d.ts +0 -64
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as ht}from"@ecopages/jsx/jsx-runtime";var Ge=Symbol.for("@ecopages/storybook-radiant.viewElement"),he=Symbol.for("@ecopages/storybook-radiant.scriptModule"),me=Symbol.for("@ecopages/storybook-radiant.scriptExport");function Je(i,e){i[Ge]=e;let t=e[he];t&&(i[he]=t,i[me]=e[me]??e.name)}function pe(i,e,t){let r=s=>e(s);return Je(r,i),r}import{jsx as Ue}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as Be,customElement as ft,event as Pe,onEvent as Y,onUpdated as $e,prop as w}from"@ecopages/radiant";import{provideContext as dt}from"@ecopages/radiant/context";import{createContext as We}from"@ecopages/radiant/context";var W=We(Symbol.for("rui-form-context"));function F(i,e){if(!(e===void 0||e===!1))return typeof e=="string"?e:typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"?e.message:i}function R(i){return typeof i=="object"&&i!==null&&"value"in i?i.value:i}async function Ke(i,e,t,r){if(!t)return;if(t.required&&(e==null||e===""||Array.isArray(e)&&e.length===0||e===!1))return F("This field is required",t.required)??"This field is required";if(typeof e=="number"||typeof e=="string"&&e!==""&&!Number.isNaN(Number(e))){let o=typeof e=="number"?e:Number(e);if(t.min!==void 0&&o<R(t.min))return F(`Minimum value is ${R(t.min)}`,t.min);if(t.max!==void 0&&o>R(t.max))return F(`Maximum value is ${R(t.max)}`,t.max)}let s=e==null?"":String(e);if(t.minLength!==void 0&&s.length<R(t.minLength))return F(`Minimum length is ${R(t.minLength)}`,t.minLength);if(t.maxLength!==void 0&&s.length>R(t.maxLength))return F(`Maximum length is ${R(t.maxLength)}`,t.maxLength);if(t.pattern!==void 0&&!R(t.pattern).test(s)){let l=t.pattern;return typeof l=="object"&&"message"in l&&typeof l.message=="string"?l.message:"Invalid format"}if(t.validate){if(typeof t.validate=="function"){let o=await t.validate(e,r);return o===!0||o===void 0?void 0:o===!1?"Invalid value":String(o)}for(let o of Object.keys(t.validate)){let l=t.validate[o],n=await l(e,r);if(n!==!0&&n!==void 0)return n===!1?"Invalid value":String(n)}}}async function ve(i,e,t){let r=t??Object.keys(e.fields),s={};for(let o of r){let l=e.fields[o]?.rules,n=await Ke(o,i[o],l,i);n&&(s[o]={type:"validation",message:n})}return Object.keys(s).length>0?{values:{},errors:s}:{values:i,errors:{}}}function K(){return(i,e,t)=>ve(i,e,t.names)}function be(i){return typeof i=="function"?i:K()}var C=class{mode;reValidateMode;resolver;fields=new Map;listeners=new Set;revision=0;defaultValues;values;errors={};touched={};dirty={};isSubmitting=!1;isSubmitted=!1;constructor(e={}){this.mode=e.mode??"onSubmit",this.reValidateMode=e.reValidateMode??"onChange",this.resolver=be(e.resolver),this.defaultValues={...e.defaultValues??{}},this.values={...this.defaultValues,...e.values??{}}}updateOptions(e){e.mode!==void 0&&(this.mode=e.mode),e.reValidateMode!==void 0&&(this.reValidateMode=e.reValidateMode),e.resolver!==void 0&&(this.resolver=be(e.resolver)),e.defaultValues!==void 0&&(this.defaultValues={...e.defaultValues})}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(){this.revision+=1;for(let e of this.listeners)e()}getRevision(){return this.revision}getRegisteredFieldNames(){return Array.from(this.fields.keys())}register(e){let t=this.fields.get(e.name),r={...e,rules:e.rules??t?.rules,defaultValue:e.defaultValue??t?.defaultValue,getRules:e.getRules??t?.getRules};return this.fields.set(e.name,r),this.values[e.name]===void 0&&r.defaultValue!==void 0&&(this.values={...this.values,[e.name]:r.defaultValue}),r.setValue(this.values[e.name]),()=>{this.fields.get(e.name)===r&&(this.fields.delete(e.name),this.notify())}}updateFieldOptions(e,t){let r=this.fields.get(e);r&&(t.rules!==void 0&&(r.rules=t.rules),t.defaultValue!==void 0&&(r.defaultValue=t.defaultValue))}getValues(){let e={...this.values};for(let[t,r]of this.fields)e[t]=r.getValue();return e}setValue(e,t,r){this.values={...this.values,[e]:t},this.fields.get(String(e))?.setValue(t),r?.shouldDirty&&(this.dirty={...this.dirty,[e]:!0}),r?.shouldTouch&&(this.touched={...this.touched,[e]:!0}),this.notify()}markTouched(e){this.touched={...this.touched,[e]:!0},this.notify()}markDirty(e){this.dirty={...this.dirty,[e]:!0},this.notify()}clearErrors(e){if(e){let t={...this.errors};delete t[e],this.errors=t,this.notify();return}this.errors={},this.notify()}getFieldError(e){return this.errors[e]?.message}getState(){let e=this.getValues(),t=Object.keys(this.errors).length;return{values:e,errors:this.errors,touched:this.touched,dirty:this.dirty,isSubmitting:this.isSubmitting,isSubmitted:this.isSubmitted,isValid:t===0}}async validateField(e){let t=this.getValues(),s=(await this.resolver(t,{fields:this.buildResolverFields()},{names:[e]})).errors[e]?.message,o={...this.errors};return s?o[e]={type:"validation",message:s}:delete o[e],this.errors=o,this.notify(),!s}async validateAll(){let e=this.getValues(),t=await this.resolver(e,{fields:this.buildResolverFields()},{});return this.errors=t.errors,this.notify(),Object.keys(this.errors).length===0}shouldValidate(e,t){switch(this.isSubmitted?this.reValidateMode:this.mode){case"all":return!0;case"onChange":return t==="change";case"onBlur":return t==="blur";case"onTouched":return t==="blur"&&!!this.touched[e];case"onSubmit":return!1;default:return!1}}async handleFieldChange(e){let t=this.fields.get(e);if(!t)return;let r=t.getValue();this.values={...this.values,[e]:r},this.dirty={...this.dirty,[e]:!0},this.shouldValidate(e,"change")?await this.validateField(e):this.notify()}async handleFieldBlur(e){this.markTouched(e),this.shouldValidate(e,"blur")?await this.validateField(e):this.notify()}shouldDisplayFieldError(e){if(!this.errors[e]?.message)return!1;if(this.isSubmitted)return!0;switch(this.mode){case"all":return!!(this.dirty[e]||this.touched[e]);case"onChange":return!!this.dirty[e];case"onBlur":case"onTouched":return!!this.touched[e];default:return!1}}async handleSubmit(e,t){this.isSubmitting=!0,this.isSubmitted=!0;for(let s of this.fields.keys())this.touched={...this.touched,[s]:!0};this.notify();let r=await this.validateAll();if(this.isSubmitting=!1,this.notify(),r){await e(this.getValues());return}t?.(this.errors)}reset(e){let t=e??{...this.defaultValues,...this.collectFieldDefaults()};this.values={...t},this.errors={},this.touched={},this.dirty={},this.isSubmitted=!1,this.isSubmitting=!1;for(let r of this.fields.values())r.setValue(this.values[r.name]);this.notify()}collectFieldDefaults(){let e={};for(let[t,r]of this.fields)r.defaultValue!==void 0&&(e[t]=r.defaultValue);return e}buildResolverFields(){let e={};for(let[t,r]of this.fields){let s=r.getRules?.()??r.rules;e[t]={rules:s}}return e}};var N="data-rui-control",Xe="data-rui-field-managed",Qe="data-rui-field-label",Ye="data-rui-field-description",Ze="data-rui-field-error";var X="data-default-values",Q=new Set(["rui-combobox","rui-checkbox","rui-switch","rui-radio-group","rui-slider","rui-spinbutton","rui-listbox"]),ge=`[${N}], ${Array.from(Q).join(", ")}, input, textarea`;function et(i,e){let t=i,r=new Set,s=n=>{r.has(n)||(r.add(n),e(n))};if(typeof t.getSlotElements=="function")for(let n of t.getSlotElements())s(n);let o=i.querySelector(".rui-field")??i;for(let n of Array.from(o.children))s(n);for(let n of o.querySelectorAll("*"))s(n);for(let n of Array.from(i.children))s(n);let l=i.shadowRoot;if(l)for(let n of Array.from(l.children))s(n)}function tt(i){if(i.length===0)return null;if(i.length===1)return i[0];let e=document.activeElement;if(e instanceof HTMLElement){for(let s of i)if(s===e||s.contains(e))return s}let t=i.filter(s=>s.isConnected&&s.getClientRects().length>0&&!s.closest('[hidden],[aria-hidden="true"]')),r=t.length>0?t:i.filter(s=>s.isConnected);return r[r.length-1]??i[i.length-1]}function it(i){let e=i.querySelector(".rui-field");return e instanceof HTMLElement?Array.from(e.querySelectorAll(ge)).filter(t=>i.contains(t)):[]}function rt(i){let e=tt(it(i));if(e)return e;let t=null;if(et(i,s=>{if(t)return;let o=ye(s);o&&(t=o)}),t)return t;let r=i.querySelector(".rui-field")??i;return ye(r)}function ye(i){return i instanceof HTMLElement?i.matches(`[${N}]`)||Q.has(i.localName)||i instanceof HTMLInputElement||i instanceof HTMLTextAreaElement?i:i.querySelector(ge):null}function st(i){if(i instanceof HTMLInputElement)return i.type==="checkbox"?i.checked:i.type==="number"||i.type==="range"?i.value===""?"":Number(i.value):i.value;if(i instanceof HTMLTextAreaElement)return i.value;let e=Re(i);if(e.localName==="rui-checkbox"||e.localName==="rui-switch"){let t=e.querySelector('input[type="checkbox"]');return t?t.checked:e.hasAttribute("checked")}if(e.localName==="rui-combobox"||e.localName==="rui-radio-group"||e.localName==="rui-listbox")return e.value??e.getAttribute("value")??"";if(e.localName==="rui-slider"||e.localName==="rui-spinbutton"){let t=e.value;if(typeof t=="number")return t;let r=e.getAttribute("value");return r==null||r===""?"":Number(r)}return e.getAttribute("value")??""}function nt(i,e){if(i instanceof HTMLInputElement){if(i.type==="checkbox"){i.checked=!!e;let r=i.closest("rui-checkbox, rui-switch");r&&(e?r.setAttribute("checked",""):r.removeAttribute("checked"));return}i.value=e==null?"":String(e);return}if(i instanceof HTMLTextAreaElement){i.value=e==null?"":String(e);return}let t=Re(i);if(t.localName==="rui-checkbox"||t.localName==="rui-switch"){e?t.setAttribute("checked",""):t.removeAttribute("checked");return}t.setAttribute("value",e==null?"":String(e))}function Re(i){return i.hasAttribute(N)?i.closest(Array.from(Q).join(","))??i:i}var Se,_e,xe,Ve,Ee,Ae,Te,Fe,Ce,we,Le,Me,Ie,De,ke,Oe,Ne,qe;function ot(i,e,t,r,s,o){var l,n,j,U,L,B,E,Z=Symbol.metadata||Symbol.for("Symbol.metadata"),ee=Object.defineProperty,P=Object.create,te=[P(null),P(null)],ie=e.length;function M(u,v,m){return function(a,f){v&&(f=a,a=i);for(var b=0;b<u.length;b++)f=u[b].apply(a,m?[f]:[]);return m?f:a}}function S(u,v,m,a){if(typeof u!="function"&&(a||u!==void 0))throw new TypeError(v+" must "+(m||"be")+" a function"+(a?"":" or undefined"));return u}function re(u,v,m,a,f,b,x,p,y,g,ne){function $(c){if(!ne(c))throw new TypeError("Attempted to access private element on non-instance")}var H=[].concat(v[0]),oe=v[3],z=!x,A=f===1,ue=f===3,ae=f===4,I=f===2;function D(c,V,de){return function(O,ce){return V&&(ce=O,O=u),de&&de(O),d[c].call(O,ce)}}if(!z){var d={},G=[],_=ue?"get":ae||A?"set":"value";if(y?(g||A?d={get:je(function(){return oe(this)},a,"get"),set:function(c){v[4](this,c)}}:d[_]=oe,g||je(d[_],a,I?"":_)):g||(d=Object.getOwnPropertyDescriptor(u,a)),!g&&!y){if((n=te[+p][a])&&(n^f)!==7)throw Error("Decorating two elements with the same name ("+d[_].name+") is not supported yet");te[+p][a]=f<3?1:f}}for(var h=u,k=H.length-1;k>=0;k-=m?2:1){var le=S(H[k],"A decorator","be",!0),fe=m?H[k-1]:void 0,J={},T={kind:["field","accessor","method","getter","setter","class"][f],name:a,metadata:l,addInitializer:function(c,V){if(c.v)throw new TypeError("attempted to call addInitializer after decoration was finished");S(V,"An initializer","be",!0),b.push(V)}.bind(null,J)};if(z)n=le.call(fe,h,T),J.v=1,S(n,"class decorators","return")&&(h=n);else if(T.static=p,T.private=y,n=T.access={has:y?ne.bind():function(c){return a in c}},ae||(n.get=y?I?function(c){return $(c),d.value}:D("get",0,$):function(c){return c[a]}),I||ue||(n.set=y?D("set",0,$):function(c,V){c[a]=V}),h=le.call(fe,A?{get:d.get,set:d.set}:d[_],T),J.v=1,A){if(typeof h=="object"&&h)(n=S(h.get,"accessor.get"))&&(d.get=n),(n=S(h.set,"accessor.set"))&&(d.set=n),(n=S(h.init,"accessor.init"))&&G.unshift(n);else if(h!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else S(h,(g?"field":"method")+" decorators","return")&&(g?G.unshift(h):d[_]=h)}return f<2&&x.push(M(G,p,1),M(b,p,0)),g||z||(y?A?x.splice(-1,0,D("get",p),D("set",p)):x.push(I?d[_]:S.call.bind(d[_])):ee(u,a,d)),h}function se(u){return ee(u,Z,{configurable:!0,enumerable:!0,value:l})}return o!==void 0&&(l=o[Z]),l=P(l??null),L=[],B=function(u){u&&L.push(M(u))},E=function(u,v){for(var m=0;m<t.length;m++){var a=t[m],f=a[1],b=7&f;if((8&f)==u&&!b==v){var x=a[2],p=!!a[3],y=16&f;re(u?i:i.prototype,a,y,p?"#"+x:ut(x),b,b<2?[]:u?U=U||[]:j=j||[],L,!!u,p,v,u&&p?function(g){return lt(g)===i}:s)}}},E(8,0),E(0,0),E(8,1),E(0,1),B(j),B(U),n=L,ie||se(i),{e:n,get c(){var u=[];return ie&&[se(i=re(i,[e],r,i.name,5,u)),M(u,1)]}}}function ut(i){var e=at(i,"string");return typeof e=="symbol"?e:e+""}function at(i,e){if(typeof i!="object"||!i)return i;var t=i[Symbol.toPrimitive];if(t!==void 0){var r=t.call(i,e||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(i)}function je(i,e,t){typeof e=="symbol"&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(i,"name",{configurable:!0,value:t?t+" "+e:e})}catch{}return i}function lt(i){if(Object(i)!==i)throw TypeError("right-hand side of 'in' should be an object, got "+(i!==null?typeof i:"null"));return i}var He=()=>{},ct={register:()=>He,updateFieldOptions:()=>{},handleFieldChange:()=>{},handleFieldBlur:()=>{},subscribePresentation:()=>He},q,ze=class extends Be{static{({e:[xe,Ve,Ee,Ae,Te,Fe,Ce,we,Le,Me,Ie,De,ke,Oe,Ne,qe,Se],c:[q,_e]}=ot(this,[ft("rui-form")],[[dt({context:W,initialValue:{ready:!1,revision:0,fields:{},actions:ct}}),0,"formProvider"],[Pe({name:"rui-submit",bubbles:!0,composed:!0}),0,"submitEvent"],[Pe({name:"rui-invalid",bubbles:!0,composed:!0}),0,"invalidEvent"],[w({type:Object,defaultValue:{}}),0,"defaultValues"],[w({type:String,attribute:X}),0,"defaultValuesData"],[w({type:Object}),0,"resolver"],[w({type:String,reflect:!0,defaultValue:"onSubmit"}),0,"mode"],[w({type:String,reflect:!0,attribute:"revalidate-mode",defaultValue:"onChange"}),0,"reValidateMode"],[$e(["defaultValues","defaultValuesData","mode","reValidateMode"]),2,"syncOptions"],[$e(["resolver"]),2,"syncResolver"],[Y({selector:"button[type=submit]",type:"click"}),2,"onSubmitButtonClick"],[Y({ref:"form",type:"submit"}),2,"onNativeSubmit"],[Y({ref:"form",type:"reset"}),2,"onNativeReset"]],0,void 0,Be))}formProvider=(Se(this),xe(this));submitEvent=(Ve(this),Ee(this));invalidEvent=(Ae(this),Te(this));defaultValues=(Fe(this),Ce(this));defaultValuesData=(we(this),Le(this));resolver=(Me(this),Ie(this));mode=(De(this),ke(this));reValidateMode=(Oe(this),Ne(this));store=void qe(this);unsubscribeStore;nativeFormId=`rui-form-native-${Math.random().toString(36).slice(2,9)}`;lastPublishedRevision=-1;lastPublishedContext;presentationListeners=new Set;formActions={register:e=>{let r=this.ensureStore().register(e);return this.publishFormContext({force:!0}),()=>{r(),this.publishFormContext({force:!0})}},updateFieldOptions:(e,t)=>{this.ensureStore().updateFieldOptions(e,t)},handleFieldChange:e=>{this.ensureStore().handleFieldChange(e).then(()=>this.publishFormContext({force:!0}))},handleFieldBlur:e=>{this.ensureStore().handleFieldBlur(e).then(()=>this.publishFormContext({force:!0}))},subscribePresentation:e=>(this.presentationListeners.add(e),this.lastPublishedContext&&e(this.lastPublishedContext),()=>this.presentationListeners.delete(e))};connectedCallback(){super.connectedCallback(),this.ensureStore(),this.publishFormContext({force:!0}),queueMicrotask(()=>this.wireOrphanSubmitButtons())}queryNativeForm(){return this.getRef("form")??this.querySelector("form.rui-form")}wireOrphanSubmitButtons(){let e=this.queryNativeForm();if(e){e.id||(e.id=this.nativeFormId);for(let t of this.querySelectorAll("button[type=submit]"))e.contains(t)||t.setAttribute("form",e.id)}}runFormSubmit(){this.ensureStore().handleSubmit(t=>{this.submitEvent.emit({values:t})},t=>{this.invalidEvent.emit({errors:t})})}disconnectedCallback(){this.unsubscribeStore?.(),this.unsubscribeStore=void 0,super.disconnectedCallback()}resolveMode(){let e=this.getAttribute("mode");return e||(this.mode??"onSubmit")}resolveReValidateMode(){let e=this.getAttribute("revalidate-mode");return e||(this.reValidateMode??"onChange")}resolveDefaultValues(){if(this.defaultValues&&Object.keys(this.defaultValues).length>0)return this.defaultValues;let e=this.defaultValuesData??this.getAttribute(X);if(!e)return this.defaultValues??{};try{let t=JSON.parse(e);return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}catch{return this.defaultValues??{}}}ensureStore(){return this.store?this.store:(this.store=new C({defaultValues:this.resolveDefaultValues(),resolver:typeof this.resolver=="function"?this.resolver:void 0,mode:this.resolveMode(),reValidateMode:this.resolveReValidateMode()}),this.unsubscribeStore=this.store.subscribe(()=>this.publishFormContext()),this.store)}buildFieldPresentations(e){let t={};for(let r of e.getRegisteredFieldNames()){let s=e.getFieldError(r),o=e.shouldDisplayFieldError(r);t[r]={error:o?s:void 0,invalid:!!(o&&s)}}return t}publishFormContext(e){let t=this.store;if(!t)return;let r=t.getRevision();if(!e?.force&&r===this.lastPublishedRevision)return;this.lastPublishedRevision=r;let s={ready:!0,revision:r,fields:this.buildFieldPresentations(t),actions:this.formActions};this.lastPublishedContext=s,this.formProvider.setContext(s);for(let o of this.presentationListeners)o(s)}syncOptions(){this.ensureStore().updateOptions({defaultValues:this.resolveDefaultValues(),mode:this.resolveMode(),reValidateMode:this.resolveReValidateMode()})}syncResolver(){typeof this.resolver=="function"&&this.ensureStore().updateOptions({resolver:this.resolver})}onSubmitButtonClick(e){e.preventDefault(),this.runFormSubmit()}onNativeSubmit(e){e.preventDefault(),this.runFormSubmit()}onNativeReset(){this.store?.reset()}render(){return Ue("form",{class:"rui-form","data-ref":"form",noValidate:!0,children:Ue("slot",{})})}static{_e()}};var mt=pe(q,({children:i,defaultValues:e,defaultValuesData:t,resolver:r,reValidateMode:s,...o})=>ht("rui-form",{...o,reValidateMode:s,"attr:revalidate-mode":s,"prop:defaultValues":e,"prop:resolver":r,"attr:data-default-values":t??(e!==void 0?JSON.stringify(e):void 0),children:i}),{stylesheets:["./form.css"]});export{C as FormStore,N as RUI_CONTROL_ATTR,Ye as RUI_FIELD_DESCRIPTION_ATTR,Ze as RUI_FIELD_ERROR_ATTR,Qe as RUI_FIELD_LABEL_ATTR,Xe as RUI_FIELD_MANAGED_ATTR,mt as RuiForm,q as RuiFormElement,K as createRulesResolver,rt as findFieldControl,W as formContext,st as readControlValue,ve as runRulesResolver,nt as writeControlValue};
|
|
1
|
+
import{jsx as bt}from"@ecopages/jsx/jsx-runtime";var Xe=Symbol.for("@ecopages/storybook-radiant.viewElement"),ve=Symbol.for("@ecopages/storybook-radiant.scriptModule"),be=Symbol.for("@ecopages/storybook-radiant.scriptExport");function Qe(t,e){t[Xe]=e;let i=e[ve];i&&(t[ve]=i,t[be]=e[be]??e.name)}function ye(t,e,i){let r=s=>e(s);return Qe(r,t),r}import{jsx as He}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as ze,customElement as mt,event as Ge,onEvent as te,onUpdated as Je,prop as M}from"@ecopages/radiant";import{provideContext as pt}from"@ecopages/radiant/context";import{createContext as Ye}from"@ecopages/radiant/context";var Y=Ye(Symbol.for("rui-form-context"));function C(t,e){if(!(e===void 0||e===!1))return typeof e=="string"?e:typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"?e.message:t}function R(t){return typeof t=="object"&&t!==null&&"value"in t?t.value:t}async function Ze(t,e,i,r){if(!i)return;if(i.required&&(e==null||e===""||Array.isArray(e)&&e.length===0||e===!1))return C("This field is required",i.required)??"This field is required";if(typeof e=="number"||typeof e=="string"&&e!==""&&!Number.isNaN(Number(e))){let n=typeof e=="number"?e:Number(e);if(i.min!==void 0&&n<R(i.min))return C(`Minimum value is ${R(i.min)}`,i.min);if(i.max!==void 0&&n>R(i.max))return C(`Maximum value is ${R(i.max)}`,i.max)}let s=e==null?"":String(e);if(i.minLength!==void 0&&s.length<R(i.minLength))return C(`Minimum length is ${R(i.minLength)}`,i.minLength);if(i.maxLength!==void 0&&s.length>R(i.maxLength))return C(`Maximum length is ${R(i.maxLength)}`,i.maxLength);if(i.pattern!==void 0&&!R(i.pattern).test(s)){let u=i.pattern;return typeof u=="object"&&"message"in u&&typeof u.message=="string"?u.message:"Invalid format"}if(i.validate){if(typeof i.validate=="function"){let n=await i.validate(e,r);return n===!0||n===void 0?void 0:n===!1?"Invalid value":String(n)}for(let n of Object.keys(i.validate)){let u=i.validate[n],o=await u(e,r);if(o!==!0&&o!==void 0)return o===!1?"Invalid value":String(o)}}}async function ge(t,e,i){let r=i??Object.keys(e.fields),s={};for(let n of r){let u=e.fields[n]?.rules,o=await Ze(n,t[n],u,t);o&&(s[n]={type:"validation",message:o})}return Object.keys(s).length>0?{values:{},errors:s}:{values:t,errors:{}}}function Z(){return(t,e,i)=>ge(t,e,i.names)}function Re(t){return typeof t=="function"?t:Z()}var w=class{mode;reValidateMode;resolver;fields=new Map;listeners=new Set;revision=0;defaultValues;values;errors={};touched={};dirty={};isSubmitting=!1;isSubmitted=!1;constructor(e={}){this.mode=e.mode??"onSubmit",this.reValidateMode=e.reValidateMode??"onChange",this.resolver=Re(e.resolver),this.defaultValues={...e.defaultValues??{}},this.values={...this.defaultValues,...e.values??{}}}updateOptions(e){e.mode!==void 0&&(this.mode=e.mode),e.reValidateMode!==void 0&&(this.reValidateMode=e.reValidateMode),e.resolver!==void 0&&(this.resolver=Re(e.resolver)),e.defaultValues!==void 0&&(this.defaultValues={...e.defaultValues})}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(){this.revision+=1;for(let e of this.listeners)e()}getRevision(){return this.revision}getRegisteredFieldNames(){return Array.from(this.fields.keys())}register(e){let i=this.fields.get(e.name),r={...e,rules:e.rules??i?.rules,defaultValue:e.defaultValue??i?.defaultValue,getRules:e.getRules??i?.getRules};return this.fields.set(e.name,r),this.values[e.name]===void 0&&r.defaultValue!==void 0&&(this.values={...this.values,[e.name]:r.defaultValue}),r.setValue(this.values[e.name]),()=>{this.fields.get(e.name)===r&&(this.fields.delete(e.name),this.notify())}}updateFieldOptions(e,i){let r=this.fields.get(e);r&&(i.rules!==void 0&&(r.rules=i.rules),i.defaultValue!==void 0&&(r.defaultValue=i.defaultValue))}getValues(){let e={...this.values};for(let[i,r]of this.fields)e[i]=r.getValue();return e}setValue(e,i,r){this.values={...this.values,[e]:i},this.fields.get(String(e))?.setValue(i),r?.shouldDirty&&(this.dirty={...this.dirty,[e]:!0}),r?.shouldTouch&&(this.touched={...this.touched,[e]:!0}),this.notify()}markTouched(e){this.touched={...this.touched,[e]:!0},this.notify()}markDirty(e){this.dirty={...this.dirty,[e]:!0},this.notify()}clearErrors(e){if(e){let i={...this.errors};delete i[e],this.errors=i,this.notify();return}this.errors={},this.notify()}getFieldError(e){return this.errors[e]?.message}getState(){let e=this.getValues(),i=Object.keys(this.errors).length;return{values:e,errors:this.errors,touched:this.touched,dirty:this.dirty,isSubmitting:this.isSubmitting,isSubmitted:this.isSubmitted,isValid:i===0}}async validateField(e){let i=this.getValues(),s=(await this.resolver(i,{fields:this.buildResolverFields()},{names:[e]})).errors[e]?.message,n={...this.errors};return s?n[e]={type:"validation",message:s}:delete n[e],this.errors=n,this.notify(),!s}async validateAll(){let e=this.getValues(),i=await this.resolver(e,{fields:this.buildResolverFields()},{});return this.errors=i.errors,this.notify(),Object.keys(this.errors).length===0}shouldValidate(e,i){switch(this.isSubmitted?this.reValidateMode:this.mode){case"all":return!0;case"onChange":return i==="change";case"onBlur":return i==="blur";case"onTouched":return i==="blur"&&!!this.touched[e];case"onSubmit":return!1;default:return!1}}async handleFieldChange(e){let i=this.fields.get(e);if(!i)return;let r=i.getValue();this.values={...this.values,[e]:r},this.dirty={...this.dirty,[e]:!0},this.shouldValidate(e,"change")?await this.validateField(e):this.notify()}async handleFieldBlur(e){this.markTouched(e),this.shouldValidate(e,"blur")?await this.validateField(e):this.notify()}shouldDisplayFieldError(e){if(!this.errors[e]?.message)return!1;if(this.isSubmitted)return!0;switch(this.mode){case"all":return!!(this.dirty[e]||this.touched[e]);case"onChange":return!!this.dirty[e];case"onBlur":case"onTouched":return!!this.touched[e];default:return!1}}async handleSubmit(e,i){this.isSubmitting=!0,this.isSubmitted=!0;for(let s of this.fields.keys())this.touched={...this.touched,[s]:!0};this.notify();let r=await this.validateAll();if(this.isSubmitting=!1,this.notify(),r){await e(this.getValues());return}i?.(this.errors)}reset(e){let i=e??{...this.defaultValues,...this.collectFieldDefaults()};this.values={...i},this.errors={},this.touched={},this.dirty={},this.isSubmitted=!1,this.isSubmitting=!1;for(let r of this.fields.values())r.setValue(this.values[r.name]);this.notify()}collectFieldDefaults(){let e={};for(let[i,r]of this.fields)r.defaultValue!==void 0&&(e[i]=r.defaultValue);return e}buildResolverFields(){let e={};for(let[i,r]of this.fields){let s=r.getRules?.()??r.rules;e[i]={rules:s}}return e}};var L="data-rui-control",et="data-rui-field-managed",tt="data-rui-field-label",it="data-rui-field-description",rt="data-rui-field-error";var ee="data-default-values",B=new Set(["rui-combobox","rui-date-field","rui-date-range-picker","rui-select","rui-tag-group","rui-checkbox","rui-switch","rui-radio-group","rui-slider","rui-number-field","rui-listbox"]),Ve=`[${L}], ${Array.from(B).join(", ")}, input, textarea`,V={read:t=>{let e=Reflect.get(t,"value");return typeof e=="string"?e:t.getAttribute("value")??""},write:(t,e)=>{let i=e==null?"":String(e);t.setAttribute("value",i),"value"in t&&Reflect.set(t,"value",i)}},Se={read:t=>{let e=Reflect.get(t,"value");if(typeof e=="number")return e;let i=t.getAttribute("value");return i==null||i===""?"":Number(i)},write:(t,e)=>{let i=e==null?"":String(e);t.setAttribute("value",i),"value"in t&&Reflect.set(t,"value",e)}},_e={read:t=>t.querySelector('input[type="checkbox"]')?.checked??t.hasAttribute("checked"),write:(t,e)=>{e?t.setAttribute("checked",""):t.removeAttribute("checked")}},j=new Map([["rui-checkbox",_e],["rui-switch",_e],["rui-combobox",V],["rui-date-field",V],["rui-date-range-picker",V],["rui-select",V],["rui-radio-group",V],["rui-listbox",V],["rui-tag-group",V],["rui-slider",Se],["rui-number-field",Se]]);function st(t,e){let i=t,r=new Set,s=o=>{r.has(o)||(r.add(o),e(o))};if(typeof i.getSlotElements=="function")for(let o of i.getSlotElements())s(o);let n=t.querySelector(".rui-field")??t;for(let o of Array.from(n.children))s(o);for(let o of n.querySelectorAll("*"))s(o);for(let o of Array.from(t.children))s(o);let u=t.shadowRoot;if(u)for(let o of Array.from(u.children))s(o)}function nt(t){if(t.length===0)return null;if(t.length===1)return t[0];let e=t.find(u=>B.has(u.localName)),i=t.find(u=>u.hasAttribute(L));if(i)return i;if(e)return e;let r=document.activeElement;if(r instanceof HTMLElement){for(let u of t)if(u===r||u.contains(r))return u}let s=t.filter(u=>u.isConnected&&u.getClientRects().length>0&&!u.closest('[hidden],[aria-hidden="true"]')),n=s.length>0?s:t.filter(u=>u.isConnected);return n[n.length-1]??t[t.length-1]}function ot(t){let e=t.querySelector(".rui-field");return e instanceof HTMLElement?Array.from(e.querySelectorAll(Ve)).filter(i=>t.contains(i)):[]}function ut(t){let e=nt(ot(t));if(e)return e;let i=null;if(st(t,s=>{if(i)return;let n=xe(s);n&&(i=n)}),i)return i;let r=t.querySelector(".rui-field")??t;return xe(r)}function xe(t){return t instanceof HTMLElement?t.matches(`[${L}]`)||B.has(t.localName)||t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement?t:t.querySelector(Ve):null}function at(t){if(t instanceof HTMLInputElement){let i=U(t),r=i===t?void 0:j.get(i.localName);return r?r.read(i):t.type==="checkbox"?t.checked:t.type==="number"||t.type==="range"?t.value===""?"":Number(t.value):t.value}if(t instanceof HTMLTextAreaElement)return t.value;let e=U(t);return j.get(e.localName)?.read(e)??e.getAttribute("value")??""}function lt(t,e){if(t instanceof HTMLInputElement){let r=U(t),s=r===t?void 0:j.get(r.localName);if(s){s.write(r,e);return}if(t.type==="checkbox"){t.checked=!!e;let n=t.closest("rui-checkbox, rui-switch");n&&(e?n.setAttribute("checked",""):n.removeAttribute("checked"));return}t.value=e==null?"":String(e);return}if(t instanceof HTMLTextAreaElement){t.value=e==null?"":String(e);return}let i=U(t);j.get(i.localName)?.write(i,e)}function U(t){return t.hasAttribute(L)?t.closest(Array.from(B).join(","))??t:t}var Ae,Ee,Te,Fe,Ce,we,Le,Me,Ie,ke,De,Oe,Ne,qe,je,Ue,Be,Pe;function ft(t,e,i,r,s,n){var u,o,$,H,I,z,E,ie=Symbol.metadata||Symbol.for("Symbol.metadata"),re=Object.defineProperty,G=Object.create,se=[G(null),G(null)],ne=e.length;function k(a,v,m){return function(l,f){v&&(f=l,l=t);for(var b=0;b<a.length;b++)f=a[b].apply(l,m?[f]:[]);return m?f:l}}function S(a,v,m,l){if(typeof a!="function"&&(l||a!==void 0))throw new TypeError(v+" must "+(m||"be")+" a function"+(l?"":" or undefined"));return a}function oe(a,v,m,l,f,b,x,p,y,g,ae){function J(c){if(!ae(c))throw new TypeError("Attempted to access private element on non-instance")}var W=[].concat(v[0]),le=v[3],K=!x,T=f===1,fe=f===3,de=f===4,D=f===2;function O(c,A,me){return function(q,pe){return A&&(pe=q,q=a),me&&me(q),d[c].call(q,pe)}}if(!K){var d={},X=[],_=fe?"get":de||T?"set":"value";if(y?(g||T?d={get:$e(function(){return le(this)},l,"get"),set:function(c){v[4](this,c)}}:d[_]=le,g||$e(d[_],l,D?"":_)):g||(d=Object.getOwnPropertyDescriptor(a,l)),!g&&!y){if((o=se[+p][l])&&(o^f)!==7)throw Error("Decorating two elements with the same name ("+d[_].name+") is not supported yet");se[+p][l]=f<3?1:f}}for(var h=a,N=W.length-1;N>=0;N-=m?2:1){var ce=S(W[N],"A decorator","be",!0),he=m?W[N-1]:void 0,Q={},F={kind:["field","accessor","method","getter","setter","class"][f],name:l,metadata:u,addInitializer:function(c,A){if(c.v)throw new TypeError("attempted to call addInitializer after decoration was finished");S(A,"An initializer","be",!0),b.push(A)}.bind(null,Q)};if(K)o=ce.call(he,h,F),Q.v=1,S(o,"class decorators","return")&&(h=o);else if(F.static=p,F.private=y,o=F.access={has:y?ae.bind():function(c){return l in c}},de||(o.get=y?D?function(c){return J(c),d.value}:O("get",0,J):function(c){return c[l]}),D||fe||(o.set=y?O("set",0,J):function(c,A){c[l]=A}),h=ce.call(he,T?{get:d.get,set:d.set}:d[_],F),Q.v=1,T){if(typeof h=="object"&&h)(o=S(h.get,"accessor.get"))&&(d.get=o),(o=S(h.set,"accessor.set"))&&(d.set=o),(o=S(h.init,"accessor.init"))&&X.unshift(o);else if(h!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else S(h,(g?"field":"method")+" decorators","return")&&(g?X.unshift(h):d[_]=h)}return f<2&&x.push(k(X,p,1),k(b,p,0)),g||K||(y?T?x.splice(-1,0,O("get",p),O("set",p)):x.push(D?d[_]:S.call.bind(d[_])):re(a,l,d)),h}function ue(a){return re(a,ie,{configurable:!0,enumerable:!0,value:u})}return n!==void 0&&(u=n[ie]),u=G(u??null),I=[],z=function(a){a&&I.push(k(a))},E=function(a,v){for(var m=0;m<i.length;m++){var l=i[m],f=l[1],b=7&f;if((8&f)==a&&!b==v){var x=l[2],p=!!l[3],y=16&f;oe(a?t:t.prototype,l,y,p?"#"+x:dt(x),b,b<2?[]:a?H=H||[]:$=$||[],I,!!a,p,v,a&&p?function(g){return ht(g)===t}:s)}}},E(8,0),E(0,0),E(8,1),E(0,1),z($),z(H),o=I,ne||ue(t),{e:o,get c(){var a=[];return ne&&[ue(t=oe(t,[e],r,t.name,5,a)),k(a,1)]}}}function dt(t){var e=ct(t,"string");return typeof e=="symbol"?e:e+""}function ct(t,e){if(typeof t!="object"||!t)return t;var i=t[Symbol.toPrimitive];if(i!==void 0){var r=i.call(t,e||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function $e(t,e,i){typeof e=="symbol"&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(t,"name",{configurable:!0,value:i?i+" "+e:e})}catch{}return t}function ht(t){if(Object(t)!==t)throw TypeError("right-hand side of 'in' should be an object, got "+(t!==null?typeof t:"null"));return t}var We=()=>{},vt={register:()=>We,updateFieldOptions:()=>{},handleFieldChange:()=>{},handleFieldBlur:()=>{},subscribePresentation:()=>We},P,Ke=class extends ze{static{({e:[Te,Fe,Ce,we,Le,Me,Ie,ke,De,Oe,Ne,qe,je,Ue,Be,Pe,Ae],c:[P,Ee]}=ft(this,[mt("rui-form")],[[pt({context:Y,initialValue:{ready:!1,revision:0,fields:{},actions:vt}}),0,"formProvider"],[Ge({name:"rui-submit",bubbles:!0,composed:!0}),0,"submitEvent"],[Ge({name:"rui-invalid",bubbles:!0,composed:!0}),0,"invalidEvent"],[M({type:Object,defaultValue:{}}),0,"defaultValues"],[M({type:String,attribute:ee}),0,"defaultValuesData"],[M({type:Object}),0,"resolver"],[M({type:String,reflect:!0,defaultValue:"onSubmit"}),0,"mode"],[M({type:String,reflect:!0,attribute:"revalidate-mode",defaultValue:"onChange"}),0,"reValidateMode"],[Je(["defaultValues","defaultValuesData","mode","reValidateMode"]),2,"syncOptions"],[Je(["resolver"]),2,"syncResolver"],[te({selector:"button[type=submit]",type:"click"}),2,"onSubmitButtonClick"],[te({ref:"form",type:"submit"}),2,"onNativeSubmit"],[te({ref:"form",type:"reset"}),2,"onNativeReset"]],0,void 0,ze))}formProvider=(Ae(this),Te(this));submitEvent=(Fe(this),Ce(this));invalidEvent=(we(this),Le(this));defaultValues=(Me(this),Ie(this));defaultValuesData=(ke(this),De(this));resolver=(Oe(this),Ne(this));mode=(qe(this),je(this));reValidateMode=(Ue(this),Be(this));store=void Pe(this);unsubscribeStore;nativeFormId=`rui-form-native-${Math.random().toString(36).slice(2,9)}`;lastPublishedRevision=-1;lastPublishedContext;presentationListeners=new Set;formActions={register:e=>{let r=this.ensureStore().register(e);return this.publishFormContext({force:!0}),()=>{r(),this.publishFormContext({force:!0})}},updateFieldOptions:(e,i)=>{this.ensureStore().updateFieldOptions(e,i)},handleFieldChange:e=>{this.ensureStore().handleFieldChange(e).then(()=>this.publishFormContext({force:!0}))},handleFieldBlur:e=>{this.ensureStore().handleFieldBlur(e).then(()=>this.publishFormContext({force:!0}))},subscribePresentation:e=>(this.presentationListeners.add(e),this.lastPublishedContext&&e(this.lastPublishedContext),()=>this.presentationListeners.delete(e))};connectedCallback(){super.connectedCallback(),this.ensureStore(),this.publishFormContext({force:!0}),queueMicrotask(()=>this.wireOrphanSubmitButtons())}queryNativeForm(){return this.getRef("form")??this.querySelector("form.rui-form")}wireOrphanSubmitButtons(){let e=this.queryNativeForm();if(e){e.id||(e.id=this.nativeFormId);for(let i of this.querySelectorAll("button[type=submit]"))e.contains(i)||i.setAttribute("form",e.id)}}runFormSubmit(){this.ensureStore().handleSubmit(i=>{this.submitEvent.emit({values:i})},i=>{this.invalidEvent.emit({errors:i})})}disconnectedCallback(){this.unsubscribeStore?.(),this.unsubscribeStore=void 0,super.disconnectedCallback()}resolveMode(){let e=this.getAttribute("mode");return e||(this.mode??"onSubmit")}resolveReValidateMode(){let e=this.getAttribute("revalidate-mode");return e||(this.reValidateMode??"onChange")}resolveDefaultValues(){if(this.defaultValues&&Object.keys(this.defaultValues).length>0)return this.defaultValues;let e=this.defaultValuesData??this.getAttribute(ee);if(!e)return this.defaultValues??{};try{let i=JSON.parse(e);return i&&typeof i=="object"&&!Array.isArray(i)?i:{}}catch{return this.defaultValues??{}}}ensureStore(){return this.store?this.store:(this.store=new w({defaultValues:this.resolveDefaultValues(),resolver:typeof this.resolver=="function"?this.resolver:void 0,mode:this.resolveMode(),reValidateMode:this.resolveReValidateMode()}),this.unsubscribeStore=this.store.subscribe(()=>this.publishFormContext()),this.store)}buildFieldPresentations(e){let i={};for(let r of e.getRegisteredFieldNames()){let s=e.getFieldError(r),n=e.shouldDisplayFieldError(r);i[r]={error:n?s:void 0,invalid:!!(n&&s)}}return i}publishFormContext(e){let i=this.store;if(!i)return;let r=i.getRevision();if(!e?.force&&r===this.lastPublishedRevision)return;this.lastPublishedRevision=r;let s={ready:!0,revision:r,fields:this.buildFieldPresentations(i),actions:this.formActions};this.lastPublishedContext=s,this.formProvider.setContext(s);for(let n of this.presentationListeners)n(s)}syncOptions(){this.ensureStore().updateOptions({defaultValues:this.resolveDefaultValues(),mode:this.resolveMode(),reValidateMode:this.resolveReValidateMode()})}syncResolver(){typeof this.resolver=="function"&&this.ensureStore().updateOptions({resolver:this.resolver})}onSubmitButtonClick(e){e.preventDefault(),this.runFormSubmit()}onNativeSubmit(e){e.preventDefault(),this.runFormSubmit()}onNativeReset(){this.store?.reset()}render(){return He("form",{class:"rui-form","data-ref":"form",noValidate:!0,children:He("slot",{})})}static{Ee()}};var yt=ye(P,({children:t,defaultValues:e,defaultValuesData:i,resolver:r,reValidateMode:s,...n})=>bt("rui-form",{...n,reValidateMode:s,"attr:revalidate-mode":s,"prop:defaultValues":e,"prop:resolver":r,"attr:data-default-values":i??(e!==void 0?JSON.stringify(e):void 0),children:t}),{stylesheets:["./form.css"]});export{w as FormStore,L as RUI_CONTROL_ATTR,it as RUI_FIELD_DESCRIPTION_ATTR,rt as RUI_FIELD_ERROR_ATTR,tt as RUI_FIELD_LABEL_ATTR,et as RUI_FIELD_MANAGED_ATTR,yt as RuiForm,P as RuiFormElement,Z as createRulesResolver,ut as findFieldControl,Y as formContext,at as readControlValue,ge as runRulesResolver,lt as writeControlValue};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/ui/form/form.tsx", "../../../../src/lib/radiant-view.ts", "../../../../src/components/ui/form/form.script.tsx", "../../../../src/components/ui/form/form-context.ts", "../../../../src/components/ui/form/resolvers.ts", "../../../../src/components/ui/form/form-store.ts", "../../../../src/components/ui/form/control-protocol.ts"],
|
|
4
|
-
"sourcesContent": ["import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { defineRadiantView } from \"@/lib/radiant-view\";\nimport { RuiForm as RuiFormElement } from \"./form.script\";\nexport const RuiForm = defineRadiantView(RuiFormElement, ({\n children,\n defaultValues,\n defaultValuesData,\n resolver,\n reValidateMode,\n ...props\n}) => /* @__PURE__ */jsx(\"rui-form\", {\n ...props,\n reValidateMode,\n \"attr:revalidate-mode\": reValidateMode,\n \"prop:defaultValues\": defaultValues,\n \"prop:resolver\": resolver,\n \"attr:data-default-values\": defaultValuesData ?? (defaultValues !== void 0 ? JSON.stringify(defaultValues) : void 0),\n children\n}), {\n stylesheets: [\"./form.css\"]\n});", "const RADIANT_VIEW_ELEMENT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewElement\");\nconst RADIANT_SCRIPT_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptModule\");\nconst RADIANT_SCRIPT_EXPORT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptExport\");\nconst RADIANT_VIEW_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewModule\");\nfunction linkViewToElement(view, element) {\n view[RADIANT_VIEW_ELEMENT] = element;\n const ssrModule = element[RADIANT_SCRIPT_MODULE];\n if (ssrModule) {\n view[RADIANT_SCRIPT_MODULE] = ssrModule;\n view[RADIANT_SCRIPT_EXPORT] = element[RADIANT_SCRIPT_EXPORT] ?? element.name;\n }\n}\nexport function defineRadiantView(element, render, _options) {\n const view = args => render(args);\n linkViewToElement(view, element);\n return view;\n}\nexport function attachRadiantStylesheets(target, _stylesheets, moduleUrl) {\n const view = target;\n view[RADIANT_VIEW_MODULE] = moduleUrl;\n return target;\n}\nexport function syncRadiantViewMetadata(view) {\n const element = view[RADIANT_VIEW_ELEMENT];\n if (element) {\n linkViewToElement(view, element);\n }\n}", "let _initProto, _initClass, _init_formProvider, _init_extra_formProvider, _init_submitEvent, _init_extra_submitEvent, _init_invalidEvent, _init_extra_invalidEvent, _init_defaultValues, _init_extra_defaultValues, _init_defaultValuesData, _init_extra_defaultValuesData, _init_resolver, _init_extra_resolver, _init_mode, _init_extra_mode, _init_reValidateMode, _init_extra_reValidateMode;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { RadiantElement, customElement, event, onEvent, onUpdated, prop } from \"@ecopages/radiant\";\nimport { provideContext } from \"@ecopages/radiant/context\";\nimport { formContext } from \"./form-context\";\nimport { FormStore } from \"./form-store\";\nimport { RUI_FORM_DEFAULT_VALUES_ATTR } from \"./control-protocol\";\nconst noopUnregister = () => {};\nconst initialFormActions = {\n register: () => noopUnregister,\n updateFieldOptions: () => {},\n handleFieldChange: () => {},\n handleFieldBlur: () => {},\n subscribePresentation: () => noopUnregister\n};\nlet _RuiForm;\nclass RuiForm extends RadiantElement {\n static {\n ({\n e: [_init_formProvider, _init_extra_formProvider, _init_submitEvent, _init_extra_submitEvent, _init_invalidEvent, _init_extra_invalidEvent, _init_defaultValues, _init_extra_defaultValues, _init_defaultValuesData, _init_extra_defaultValuesData, _init_resolver, _init_extra_resolver, _init_mode, _init_extra_mode, _init_reValidateMode, _init_extra_reValidateMode, _initProto],\n c: [_RuiForm, _initClass]\n } = _applyDecs(this, [customElement(\"rui-form\")], [[provideContext({\n context: formContext,\n initialValue: {\n ready: false,\n revision: 0,\n fields: {},\n actions: initialFormActions\n }\n }), 0, \"formProvider\"], [event({\n name: \"rui-submit\",\n bubbles: true,\n composed: true\n }), 0, \"submitEvent\"], [event({\n name: \"rui-invalid\",\n bubbles: true,\n composed: true\n }), 0, \"invalidEvent\"], [prop({\n type: Object,\n defaultValue: {}\n }), 0, \"defaultValues\"], [prop({\n type: String,\n attribute: RUI_FORM_DEFAULT_VALUES_ATTR\n }), 0, \"defaultValuesData\"], [prop({\n type: Object\n }), 0, \"resolver\"], [prop({\n type: String,\n reflect: true,\n defaultValue: \"onSubmit\"\n }), 0, \"mode\"], [prop({\n type: String,\n reflect: true,\n attribute: \"revalidate-mode\",\n defaultValue: \"onChange\"\n }), 0, \"reValidateMode\"], [onUpdated([\"defaultValues\", \"defaultValuesData\", \"mode\", \"reValidateMode\"]), 2, \"syncOptions\"], [onUpdated([\"resolver\"]), 2, \"syncResolver\"], [onEvent({\n selector: \"button[type=submit]\",\n type: \"click\"\n }), 2, \"onSubmitButtonClick\"], [onEvent({\n ref: \"form\",\n type: \"submit\"\n }), 2, \"onNativeSubmit\"], [onEvent({\n ref: \"form\",\n type: \"reset\"\n }), 2, \"onNativeReset\"]], 0, void 0, RadiantElement));\n }\n formProvider = (_initProto(this), _init_formProvider(this));\n submitEvent = (_init_extra_formProvider(this), _init_submitEvent(this));\n invalidEvent = (_init_extra_submitEvent(this), _init_invalidEvent(this));\n defaultValues = (_init_extra_invalidEvent(this), _init_defaultValues(this));\n defaultValuesData = (_init_extra_defaultValues(this), _init_defaultValuesData(this));\n resolver = (_init_extra_defaultValuesData(this), _init_resolver(this));\n mode = (_init_extra_resolver(this), _init_mode(this));\n reValidateMode = (_init_extra_mode(this), _init_reValidateMode(this));\n store = void _init_extra_reValidateMode(this);\n unsubscribeStore;\n nativeFormId = `rui-form-native-${Math.random().toString(36).slice(2, 9)}`;\n lastPublishedRevision = -1;\n lastPublishedContext;\n presentationListeners = /* @__PURE__ */new Set();\n formActions = {\n register: registration => {\n const store = this.ensureStore();\n const unregister = store.register(registration);\n this.publishFormContext({\n force: true\n });\n return () => {\n unregister();\n this.publishFormContext({\n force: true\n });\n };\n },\n updateFieldOptions: (name, options) => {\n this.ensureStore().updateFieldOptions(name, options);\n },\n handleFieldChange: name => {\n void this.ensureStore().handleFieldChange(name).then(() => this.publishFormContext({\n force: true\n }));\n },\n handleFieldBlur: name => {\n void this.ensureStore().handleFieldBlur(name).then(() => this.publishFormContext({\n force: true\n }));\n },\n subscribePresentation: listener => {\n this.presentationListeners.add(listener);\n if (this.lastPublishedContext) {\n listener(this.lastPublishedContext);\n }\n return () => this.presentationListeners.delete(listener);\n }\n };\n connectedCallback() {\n super.connectedCallback();\n this.ensureStore();\n this.publishFormContext({\n force: true\n });\n queueMicrotask(() => this.wireOrphanSubmitButtons());\n }\n queryNativeForm() {\n return this.getRef(\"form\") ?? this.querySelector(\"form.rui-form\");\n }\n /** Link submit buttons left on the host (outside the inner `<form>`) after slot projection. */\n wireOrphanSubmitButtons() {\n const formEl = this.queryNativeForm();\n if (!formEl) {\n return;\n }\n if (!formEl.id) {\n formEl.id = this.nativeFormId;\n }\n for (const btn of this.querySelectorAll(\"button[type=submit]\")) {\n if (formEl.contains(btn)) {\n continue;\n }\n btn.setAttribute(\"form\", formEl.id);\n }\n }\n runFormSubmit() {\n const store = this.ensureStore();\n void store.handleSubmit(values => {\n this.submitEvent.emit({\n values\n });\n }, errors => {\n this.invalidEvent.emit({\n errors\n });\n });\n }\n disconnectedCallback() {\n this.unsubscribeStore?.();\n this.unsubscribeStore = void 0;\n super.disconnectedCallback();\n }\n resolveMode() {\n const fromAttr = this.getAttribute(\"mode\");\n if (fromAttr) {\n return fromAttr;\n }\n return this.mode ?? \"onSubmit\";\n }\n resolveReValidateMode() {\n const fromAttr = this.getAttribute(\"revalidate-mode\");\n if (fromAttr) {\n return fromAttr;\n }\n return this.reValidateMode ?? \"onChange\";\n }\n resolveDefaultValues() {\n if (this.defaultValues && Object.keys(this.defaultValues).length > 0) {\n return this.defaultValues;\n }\n const raw = this.defaultValuesData ?? this.getAttribute(RUI_FORM_DEFAULT_VALUES_ATTR);\n if (!raw) {\n return this.defaultValues ?? {};\n }\n try {\n const parsed = JSON.parse(raw);\n return parsed && typeof parsed === \"object\" && !Array.isArray(parsed) ? parsed : {};\n } catch {\n return this.defaultValues ?? {};\n }\n }\n ensureStore() {\n if (this.store) {\n return this.store;\n }\n this.store = new FormStore({\n defaultValues: this.resolveDefaultValues(),\n resolver: typeof this.resolver === \"function\" ? this.resolver : void 0,\n mode: this.resolveMode(),\n reValidateMode: this.resolveReValidateMode()\n });\n this.unsubscribeStore = this.store.subscribe(() => this.publishFormContext());\n return this.store;\n }\n buildFieldPresentations(store) {\n const fields = {};\n for (const name of store.getRegisteredFieldNames()) {\n const message = store.getFieldError(name);\n const show = store.shouldDisplayFieldError(name);\n fields[name] = {\n error: show ? message : void 0,\n invalid: Boolean(show && message)\n };\n }\n return fields;\n }\n publishFormContext(options) {\n const store = this.store;\n if (!store) {\n return;\n }\n const revision = store.getRevision();\n if (!options?.force && revision === this.lastPublishedRevision) {\n return;\n }\n this.lastPublishedRevision = revision;\n const nextContext = {\n ready: true,\n revision,\n fields: this.buildFieldPresentations(store),\n actions: this.formActions\n };\n this.lastPublishedContext = nextContext;\n this.formProvider.setContext(nextContext);\n for (const listener of this.presentationListeners) {\n listener(nextContext);\n }\n }\n syncOptions() {\n const store = this.ensureStore();\n store.updateOptions({\n defaultValues: this.resolveDefaultValues(),\n mode: this.resolveMode(),\n reValidateMode: this.resolveReValidateMode()\n });\n }\n syncResolver() {\n if (typeof this.resolver === \"function\") {\n this.ensureStore().updateOptions({\n resolver: this.resolver\n });\n }\n }\n onSubmitButtonClick(event2) {\n event2.preventDefault();\n this.runFormSubmit();\n }\n onNativeSubmit(event2) {\n event2.preventDefault();\n this.runFormSubmit();\n }\n onNativeReset() {\n this.store?.reset();\n }\n render() {\n return /* @__PURE__ */jsx(\"form\", {\n class: \"rui-form\",\n \"data-ref\": \"form\",\n noValidate: true,\n children: /* @__PURE__ */jsx(\"slot\", {})\n });\n }\n static {\n _initClass();\n }\n}\nexport { _RuiForm as RuiForm };", "import { createContext } from \"@ecopages/radiant/context\";\nexport const formContext = createContext(/* @__PURE__ */Symbol.for(\"rui-form-context\"));", "function resolveRuleMessage(fallback, rule) {\n if (rule === void 0 || rule === false) {\n return void 0;\n }\n if (typeof rule === \"string\") {\n return rule;\n }\n if (typeof rule === \"object\" && rule !== null && \"message\" in rule && typeof rule.message === \"string\") {\n return rule.message;\n }\n return fallback;\n}\nfunction ruleValue(rule) {\n if (typeof rule === \"object\" && rule !== null && \"value\" in rule) {\n return rule.value;\n }\n return rule;\n}\nasync function validateFieldRules(_valueName, value, rules, values) {\n if (!rules) {\n return void 0;\n }\n if (rules.required) {\n const empty = value === void 0 || value === null || value === \"\" || Array.isArray(value) && value.length === 0 || value === false;\n if (empty) {\n return resolveRuleMessage(\"This field is required\", rules.required) ?? \"This field is required\";\n }\n }\n if (typeof value === \"number\" || typeof value === \"string\" && value !== \"\" && !Number.isNaN(Number(value))) {\n const num = typeof value === \"number\" ? value : Number(value);\n if (rules.min !== void 0 && num < ruleValue(rules.min)) {\n return resolveRuleMessage(`Minimum value is ${ruleValue(rules.min)}`, rules.min);\n }\n if (rules.max !== void 0 && num > ruleValue(rules.max)) {\n return resolveRuleMessage(`Maximum value is ${ruleValue(rules.max)}`, rules.max);\n }\n }\n const str = value == null ? \"\" : String(value);\n if (rules.minLength !== void 0 && str.length < ruleValue(rules.minLength)) {\n return resolveRuleMessage(`Minimum length is ${ruleValue(rules.minLength)}`, rules.minLength);\n }\n if (rules.maxLength !== void 0 && str.length > ruleValue(rules.maxLength)) {\n return resolveRuleMessage(`Maximum length is ${ruleValue(rules.maxLength)}`, rules.maxLength);\n }\n if (rules.pattern !== void 0) {\n const pattern = ruleValue(rules.pattern);\n if (!pattern.test(str)) {\n const patternRule = rules.pattern;\n const message = typeof patternRule === \"object\" && \"message\" in patternRule && typeof patternRule.message === \"string\" ? patternRule.message : \"Invalid format\";\n return message;\n }\n }\n if (rules.validate) {\n if (typeof rules.validate === \"function\") {\n const result = await rules.validate(value, values);\n if (result === true || result === void 0) {\n return void 0;\n }\n if (result === false) {\n return \"Invalid value\";\n }\n return String(result);\n }\n for (const key of Object.keys(rules.validate)) {\n const fn = rules.validate[key];\n const result = await fn(value, values);\n if (result !== true && result !== void 0) {\n return result === false ? \"Invalid value\" : String(result);\n }\n }\n }\n return void 0;\n}\nexport async function runRulesResolver(values, context, names) {\n const targetNames = names ?? Object.keys(context.fields);\n const errors = {};\n for (const name of targetNames) {\n const rules = context.fields[name]?.rules;\n const message = await validateFieldRules(name, values[name], rules, values);\n if (message) {\n errors[name] = {\n type: \"validation\",\n message\n };\n }\n }\n if (Object.keys(errors).length > 0) {\n return {\n values: {},\n errors\n };\n }\n return {\n values,\n errors: {}\n };\n}\nexport function createRulesResolver() {\n return (values, context, options) => runRulesResolver(values, context, options.names);\n}", "import { createRulesResolver } from \"./resolvers\";\nfunction normalizeResolver(resolver) {\n if (typeof resolver === \"function\") {\n return resolver;\n }\n return createRulesResolver();\n}\nexport class FormStore {\n mode;\n reValidateMode;\n resolver;\n fields = /* @__PURE__ */new Map();\n listeners = /* @__PURE__ */new Set();\n revision = 0;\n defaultValues;\n values;\n errors = {};\n touched = {};\n dirty = {};\n isSubmitting = false;\n isSubmitted = false;\n constructor(options = {}) {\n this.mode = options.mode ?? \"onSubmit\";\n this.reValidateMode = options.reValidateMode ?? \"onChange\";\n this.resolver = normalizeResolver(options.resolver);\n this.defaultValues = {\n ...(options.defaultValues ?? {})\n };\n this.values = {\n ...this.defaultValues,\n ...(options.values ?? {})\n };\n }\n /** Update options without dropping registered fields. */\n updateOptions(options) {\n if (options.mode !== void 0) {\n this.mode = options.mode;\n }\n if (options.reValidateMode !== void 0) {\n this.reValidateMode = options.reValidateMode;\n }\n if (options.resolver !== void 0) {\n this.resolver = normalizeResolver(options.resolver);\n }\n if (options.defaultValues !== void 0) {\n this.defaultValues = {\n ...options.defaultValues\n };\n }\n }\n subscribe(listener) {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n notify() {\n this.revision += 1;\n for (const listener of this.listeners) {\n listener();\n }\n }\n getRevision() {\n return this.revision;\n }\n getRegisteredFieldNames() {\n return Array.from(this.fields.keys());\n }\n register(registration) {\n const existing = this.fields.get(registration.name);\n const entry = {\n ...registration,\n rules: registration.rules ?? existing?.rules,\n defaultValue: registration.defaultValue ?? existing?.defaultValue,\n getRules: registration.getRules ?? existing?.getRules\n };\n this.fields.set(registration.name, entry);\n if (this.values[registration.name] === void 0 && entry.defaultValue !== void 0) {\n this.values = {\n ...this.values,\n [registration.name]: entry.defaultValue\n };\n }\n entry.setValue(this.values[registration.name]);\n return () => {\n const current = this.fields.get(registration.name);\n if (current === entry) {\n this.fields.delete(registration.name);\n this.notify();\n }\n };\n }\n updateFieldOptions(name, options) {\n const field = this.fields.get(name);\n if (!field) {\n return;\n }\n if (options.rules !== void 0) {\n field.rules = options.rules;\n }\n if (options.defaultValue !== void 0) {\n field.defaultValue = options.defaultValue;\n }\n }\n getValues() {\n const next = {\n ...this.values\n };\n for (const [name, field] of this.fields) {\n next[name] = field.getValue();\n }\n return next;\n }\n setValue(name, value, options) {\n this.values = {\n ...this.values,\n [name]: value\n };\n const field = this.fields.get(String(name));\n field?.setValue(value);\n if (options?.shouldDirty) {\n this.dirty = {\n ...this.dirty,\n [name]: true\n };\n }\n if (options?.shouldTouch) {\n this.touched = {\n ...this.touched,\n [name]: true\n };\n }\n this.notify();\n }\n markTouched(name) {\n this.touched = {\n ...this.touched,\n [name]: true\n };\n this.notify();\n }\n markDirty(name) {\n this.dirty = {\n ...this.dirty,\n [name]: true\n };\n this.notify();\n }\n clearErrors(name) {\n if (name) {\n const next = {\n ...this.errors\n };\n delete next[name];\n this.errors = next;\n this.notify();\n return;\n }\n this.errors = {};\n this.notify();\n }\n getFieldError(name) {\n return this.errors[name]?.message;\n }\n getState() {\n const values = this.getValues();\n const errorCount = Object.keys(this.errors).length;\n return {\n values,\n errors: this.errors,\n touched: this.touched,\n dirty: this.dirty,\n isSubmitting: this.isSubmitting,\n isSubmitted: this.isSubmitted,\n isValid: errorCount === 0\n };\n }\n async validateField(name) {\n const values = this.getValues();\n const result = await this.resolver(values, {\n fields: this.buildResolverFields()\n }, {\n names: [name]\n });\n const message = result.errors[name]?.message;\n const next = {\n ...this.errors\n };\n if (message) {\n next[name] = {\n type: \"validation\",\n message\n };\n } else {\n delete next[name];\n }\n this.errors = next;\n this.notify();\n return !message;\n }\n async validateAll() {\n const values = this.getValues();\n const result = await this.resolver(values, {\n fields: this.buildResolverFields()\n }, {});\n this.errors = result.errors;\n this.notify();\n return Object.keys(this.errors).length === 0;\n }\n shouldValidate(name, trigger) {\n const mode = this.isSubmitted ? this.reValidateMode : this.mode;\n switch (mode) {\n case \"all\":\n return true;\n case \"onChange\":\n return trigger === \"change\";\n case \"onBlur\":\n return trigger === \"blur\";\n case \"onTouched\":\n return trigger === \"blur\" && Boolean(this.touched[name]);\n case \"onSubmit\":\n return false;\n default:\n return false;\n }\n }\n async handleFieldChange(name) {\n const field = this.fields.get(name);\n if (!field) {\n return;\n }\n const value = field.getValue();\n this.values = {\n ...this.values,\n [name]: value\n };\n this.dirty = {\n ...this.dirty,\n [name]: true\n };\n if (this.shouldValidate(name, \"change\")) {\n await this.validateField(name);\n } else {\n this.notify();\n }\n }\n async handleFieldBlur(name) {\n this.markTouched(name);\n if (this.shouldValidate(name, \"blur\")) {\n await this.validateField(name);\n } else {\n this.notify();\n }\n }\n /** Whether a field's validation message should be shown in the UI (RHF-style). */\n shouldDisplayFieldError(name) {\n const message = this.errors[name]?.message;\n if (!message) {\n return false;\n }\n if (this.isSubmitted) {\n return true;\n }\n switch (this.mode) {\n case \"all\":\n return Boolean(this.dirty[name] || this.touched[name]);\n case \"onChange\":\n return Boolean(this.dirty[name]);\n case \"onBlur\":\n case \"onTouched\":\n return Boolean(this.touched[name]);\n case \"onSubmit\":\n default:\n return false;\n }\n }\n async handleSubmit(onValid, onInvalid) {\n this.isSubmitting = true;\n this.isSubmitted = true;\n for (const name of this.fields.keys()) {\n this.touched = {\n ...this.touched,\n [name]: true\n };\n }\n this.notify();\n const valid = await this.validateAll();\n this.isSubmitting = false;\n this.notify();\n if (valid) {\n await onValid(this.getValues());\n return;\n }\n onInvalid?.(this.errors);\n }\n reset(values) {\n const nextDefaults = values ?? {\n ...this.defaultValues,\n ...this.collectFieldDefaults()\n };\n this.values = {\n ...nextDefaults\n };\n this.errors = {};\n this.touched = {};\n this.dirty = {};\n this.isSubmitted = false;\n this.isSubmitting = false;\n for (const field of this.fields.values()) {\n field.setValue(this.values[field.name]);\n }\n this.notify();\n }\n collectFieldDefaults() {\n const defaults = {};\n for (const [name, field] of this.fields) {\n if (field.defaultValue !== void 0) {\n defaults[name] = field.defaultValue;\n }\n }\n return defaults;\n }\n buildResolverFields() {\n const fields = {};\n for (const [name, field] of this.fields) {\n const rules = field.getRules?.() ?? field.rules;\n fields[name] = {\n rules\n };\n }\n return fields;\n }\n}", "export const RUI_CONTROL_ATTR = \"data-rui-control\";\nexport const RUI_FIELD_MANAGED_ATTR = \"data-rui-field-managed\";\nexport const RUI_FIELD_LABEL_ATTR = \"data-rui-field-label\";\nexport const RUI_FIELD_DESCRIPTION_ATTR = \"data-rui-field-description\";\nexport const RUI_FIELD_ERROR_ATTR = \"data-rui-field-error\";\nexport const RUI_FIELD_DEFAULT_VALUE_ATTR = \"data-default-value\";\nexport const RUI_FORM_DEFAULT_VALUES_ATTR = \"data-default-values\";\nconst HOST_CONTROL_TAGS = /* @__PURE__ */new Set([\"rui-combobox\", \"rui-checkbox\", \"rui-switch\", \"rui-radio-group\", \"rui-slider\", \"rui-spinbutton\", \"rui-listbox\"]);\nconst CONTROL_SELECTOR = `[${RUI_CONTROL_ATTR}], ${Array.from(HOST_CONTROL_TAGS).join(\", \")}, input, textarea`;\nfunction forEachFieldContentNode(root, visit) {\n const slotHost = root;\n const visited = /* @__PURE__ */new Set();\n const safeVisit = node => {\n if (visited.has(node)) {\n return;\n }\n visited.add(node);\n visit(node);\n };\n if (typeof slotHost.getSlotElements === \"function\") {\n for (const node of slotHost.getSlotElements()) {\n safeVisit(node);\n }\n }\n const renderRoot = root.querySelector(\".rui-field\") ?? root;\n for (const child of Array.from(renderRoot.children)) {\n safeVisit(child);\n }\n for (const node of renderRoot.querySelectorAll(\"*\")) {\n safeVisit(node);\n }\n for (const child of Array.from(root.children)) {\n safeVisit(child);\n }\n const shadow = root.shadowRoot;\n if (shadow) {\n for (const child of Array.from(shadow.children)) {\n safeVisit(child);\n }\n }\n}\nfunction queryFieldContent(root, selector) {\n let found = null;\n forEachFieldContentNode(root, node => {\n if (found || !(node instanceof HTMLElement)) {\n return;\n }\n if (node.matches(selector)) {\n found = node;\n return;\n }\n found = node.querySelector(selector);\n });\n return found;\n}\nfunction pickPrimaryFieldControl(candidates) {\n if (candidates.length === 0) {\n return null;\n }\n if (candidates.length === 1) {\n return candidates[0];\n }\n const active = document.activeElement;\n if (active instanceof HTMLElement) {\n for (const candidate of candidates) {\n if (candidate === active || candidate.contains(active)) {\n return candidate;\n }\n }\n }\n const visible = candidates.filter(el => el.isConnected && el.getClientRects().length > 0 && !el.closest('[hidden],[aria-hidden=\"true\"]'));\n const pool = visible.length > 0 ? visible : candidates.filter(el => el.isConnected);\n return pool[pool.length - 1] ?? candidates[candidates.length - 1];\n}\nfunction listFieldControlsInRenderTree(root) {\n const renderRoot = root.querySelector(\".rui-field\");\n if (!(renderRoot instanceof HTMLElement)) {\n return [];\n }\n return Array.from(renderRoot.querySelectorAll(CONTROL_SELECTOR)).filter(el => root.contains(el));\n}\nexport function findFieldControl(root) {\n const fromRenderTree = pickPrimaryFieldControl(listFieldControlsInRenderTree(root));\n if (fromRenderTree) {\n return fromRenderTree;\n }\n let found = null;\n forEachFieldContentNode(root, node => {\n if (found) {\n return;\n }\n const match = findControlInSubtree(node);\n if (match) {\n found = match;\n }\n });\n if (found) {\n return found;\n }\n const renderRoot = root.querySelector(\".rui-field\") ?? root;\n return findControlInSubtree(renderRoot);\n}\nfunction findControlInSubtree(node) {\n if (!(node instanceof HTMLElement)) {\n return null;\n }\n if (node.matches(`[${RUI_CONTROL_ATTR}]`)) {\n return node;\n }\n if (HOST_CONTROL_TAGS.has(node.localName)) {\n return node;\n }\n if (node instanceof HTMLInputElement || node instanceof HTMLTextAreaElement) {\n return node;\n }\n const nested = node.querySelector(CONTROL_SELECTOR);\n return nested;\n}\nexport function readControlValue(control) {\n if (control instanceof HTMLInputElement) {\n if (control.type === \"checkbox\") {\n return control.checked;\n }\n if (control.type === \"number\" || control.type === \"range\") {\n return control.value === \"\" ? \"\" : Number(control.value);\n }\n return control.value;\n }\n if (control instanceof HTMLTextAreaElement) {\n return control.value;\n }\n const host = resolveControlHost(control);\n if (host.localName === \"rui-checkbox\" || host.localName === \"rui-switch\") {\n const input = host.querySelector('input[type=\"checkbox\"]');\n if (input) {\n return input.checked;\n }\n return host.hasAttribute(\"checked\");\n }\n if (host.localName === \"rui-combobox\" || host.localName === \"rui-radio-group\" || host.localName === \"rui-listbox\") {\n return host.value ?? host.getAttribute(\"value\") ?? \"\";\n }\n if (host.localName === \"rui-slider\" || host.localName === \"rui-spinbutton\") {\n const propValue = host.value;\n if (typeof propValue === \"number\") {\n return propValue;\n }\n const raw = host.getAttribute(\"value\");\n return raw == null || raw === \"\" ? \"\" : Number(raw);\n }\n return host.getAttribute(\"value\") ?? \"\";\n}\nexport function writeControlValue(control, value) {\n if (control instanceof HTMLInputElement) {\n if (control.type === \"checkbox\") {\n control.checked = Boolean(value);\n const ce = control.closest(\"rui-checkbox, rui-switch\");\n if (ce) {\n if (value) {\n ce.setAttribute(\"checked\", \"\");\n } else {\n ce.removeAttribute(\"checked\");\n }\n }\n return;\n }\n control.value = value == null ? \"\" : String(value);\n return;\n }\n if (control instanceof HTMLTextAreaElement) {\n control.value = value == null ? \"\" : String(value);\n return;\n }\n const host = resolveControlHost(control);\n if (host.localName === \"rui-checkbox\" || host.localName === \"rui-switch\") {\n if (value) {\n host.setAttribute(\"checked\", \"\");\n } else {\n host.removeAttribute(\"checked\");\n }\n return;\n }\n host.setAttribute(\"value\", value == null ? \"\" : String(value));\n}\nfunction resolveControlHost(control) {\n if (control.hasAttribute(RUI_CONTROL_ATTR)) {\n const host = control.closest(Array.from(HOST_CONTROL_TAGS).join(\",\"));\n return host ?? control;\n }\n return control;\n}\nexport function findFieldLabel(root) {\n return queryFieldContent(root, `[${RUI_FIELD_LABEL_ATTR}], label.rui-label`);\n}\nexport function findFieldDescription(root) {\n return queryFieldContent(root, `[${RUI_FIELD_DESCRIPTION_ATTR}]`);\n}\nexport function findFieldError(root) {\n const all = findFieldErrorElements(root);\n return all[0] ?? null;\n}\nexport function findFieldErrorElements(root) {\n const renderRoot = root.querySelector(\".rui-field\");\n if (renderRoot instanceof HTMLElement) {\n const inRender = Array.from(renderRoot.querySelectorAll(`[${RUI_FIELD_ERROR_ATTR}]`));\n const visible = inRender.filter(el => el.getClientRects().length > 0);\n if (visible.length > 0) {\n return visible;\n }\n if (inRender.length > 0) {\n return inRender;\n }\n }\n const fromDom = Array.from(root.querySelectorAll(`[${RUI_FIELD_ERROR_ATTR}]`));\n if (fromDom.length > 0) {\n return fromDom;\n }\n const single = queryFieldContent(root, `[${RUI_FIELD_ERROR_ATTR}]`);\n return single ? [single] : [];\n}\nexport function wireFieldControlName(controlHost, ariaTarget, name) {\n if (!name) {\n return;\n }\n if (ariaTarget instanceof HTMLInputElement || ariaTarget instanceof HTMLTextAreaElement) {\n ariaTarget.name = name;\n }\n if (!controlHost) {\n return;\n }\n if (controlHost === ariaTarget) {\n return;\n }\n if (HOST_CONTROL_TAGS.has(controlHost.localName)) {\n controlHost.setAttribute(\"name\", name);\n }\n}\nexport function getAriaControlTarget(control) {\n if (control instanceof HTMLInputElement || control instanceof HTMLTextAreaElement) {\n return control;\n }\n if (control.hasAttribute(RUI_CONTROL_ATTR)) {\n return control;\n }\n const marked = control.querySelector(`[${RUI_CONTROL_ATTR}]`);\n if (marked) {\n return marked;\n }\n if (control.localName === \"rui-combobox\") {\n return control.querySelector(\"[data-combobox-input]\") ?? control;\n }\n if (control.localName === \"rui-spinbutton\") {\n return control.querySelector(\"[data-spinbutton-input], input\") ?? control;\n }\n if (control.localName === \"rui-slider\") {\n return control.querySelector('input[type=\"range\"]') ?? control;\n }\n if (control.localName === \"rui-checkbox\" || control.localName === \"rui-switch\") {\n return control.querySelector(\"input\") ?? control;\n }\n if (control.localName === \"rui-radio-group\") {\n const checked = control.querySelector('input[type=\"radio\"]:checked');\n const first = control.querySelector('input[type=\"radio\"]');\n return checked ?? first ?? control;\n }\n return control;\n}"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["jsx", "RADIANT_VIEW_ELEMENT", "RADIANT_SCRIPT_MODULE", "RADIANT_SCRIPT_EXPORT", "linkViewToElement", "view", "element", "RADIANT_VIEW_ELEMENT", "ssrModule", "RADIANT_SCRIPT_MODULE", "RADIANT_SCRIPT_EXPORT", "defineRadiantView", "render", "_options", "args", "jsx", "RadiantElement", "customElement", "event", "onEvent", "onUpdated", "prop", "provideContext", "createContext", "formContext", "resolveRuleMessage", "fallback", "rule", "ruleValue", "validateFieldRules", "_valueName", "value", "rules", "values", "num", "str", "patternRule", "result", "key", "fn", "runRulesResolver", "context", "names", "targetNames", "errors", "name", "message", "createRulesResolver", "options", "normalizeResolver", "resolver", "createRulesResolver", "FormStore", "options", "listener", "registration", "existing", "entry", "name", "field", "next", "value", "values", "errorCount", "message", "result", "trigger", "onValid", "onInvalid", "valid", "nextDefaults", "defaults", "fields", "rules", "RUI_CONTROL_ATTR", "RUI_FIELD_MANAGED_ATTR", "RUI_FIELD_LABEL_ATTR", "RUI_FIELD_DESCRIPTION_ATTR", "RUI_FIELD_ERROR_ATTR", "RUI_FORM_DEFAULT_VALUES_ATTR", "HOST_CONTROL_TAGS", "CONTROL_SELECTOR", "RUI_CONTROL_ATTR", "forEachFieldContentNode", "root", "visit", "slotHost", "visited", "safeVisit", "node", "renderRoot", "child", "shadow", "pickPrimaryFieldControl", "candidates", "
|
|
4
|
+
"sourcesContent": ["import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { defineRadiantView } from \"@/lib/radiant-view\";\nimport { RuiForm as RuiFormElement } from \"./form.script\";\nexport const RuiForm = defineRadiantView(RuiFormElement, ({\n children,\n defaultValues,\n defaultValuesData,\n resolver,\n reValidateMode,\n ...props\n}) => /* @__PURE__ */jsx(\"rui-form\", {\n ...props,\n reValidateMode,\n \"attr:revalidate-mode\": reValidateMode,\n \"prop:defaultValues\": defaultValues,\n \"prop:resolver\": resolver,\n \"attr:data-default-values\": defaultValuesData ?? (defaultValues !== void 0 ? JSON.stringify(defaultValues) : void 0),\n children\n}), {\n stylesheets: [\"./form.css\"]\n});", "const RADIANT_VIEW_ELEMENT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewElement\");\nconst RADIANT_SCRIPT_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptModule\");\nconst RADIANT_SCRIPT_EXPORT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptExport\");\nconst RADIANT_VIEW_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewModule\");\nfunction linkViewToElement(view, element) {\n view[RADIANT_VIEW_ELEMENT] = element;\n const ssrModule = element[RADIANT_SCRIPT_MODULE];\n if (ssrModule) {\n view[RADIANT_SCRIPT_MODULE] = ssrModule;\n view[RADIANT_SCRIPT_EXPORT] = element[RADIANT_SCRIPT_EXPORT] ?? element.name;\n }\n}\nexport function defineRadiantView(element, render, _options) {\n const view = args => render(args);\n linkViewToElement(view, element);\n return view;\n}\nexport function attachRadiantStylesheets(target, _stylesheets, moduleUrl) {\n const view = target;\n view[RADIANT_VIEW_MODULE] = moduleUrl;\n return target;\n}\nexport function syncRadiantViewMetadata(view) {\n const element = view[RADIANT_VIEW_ELEMENT];\n if (element) {\n linkViewToElement(view, element);\n }\n}", "let _initProto, _initClass, _init_formProvider, _init_extra_formProvider, _init_submitEvent, _init_extra_submitEvent, _init_invalidEvent, _init_extra_invalidEvent, _init_defaultValues, _init_extra_defaultValues, _init_defaultValuesData, _init_extra_defaultValuesData, _init_resolver, _init_extra_resolver, _init_mode, _init_extra_mode, _init_reValidateMode, _init_extra_reValidateMode;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { RadiantElement, customElement, event, onEvent, onUpdated, prop } from \"@ecopages/radiant\";\nimport { provideContext } from \"@ecopages/radiant/context\";\nimport { formContext } from \"./form-context\";\nimport { FormStore } from \"./form-store\";\nimport { RUI_FORM_DEFAULT_VALUES_ATTR } from \"./control-protocol\";\nconst noopUnregister = () => {};\nconst initialFormActions = {\n register: () => noopUnregister,\n updateFieldOptions: () => {},\n handleFieldChange: () => {},\n handleFieldBlur: () => {},\n subscribePresentation: () => noopUnregister\n};\nlet _RuiForm;\nclass RuiForm extends RadiantElement {\n static {\n ({\n e: [_init_formProvider, _init_extra_formProvider, _init_submitEvent, _init_extra_submitEvent, _init_invalidEvent, _init_extra_invalidEvent, _init_defaultValues, _init_extra_defaultValues, _init_defaultValuesData, _init_extra_defaultValuesData, _init_resolver, _init_extra_resolver, _init_mode, _init_extra_mode, _init_reValidateMode, _init_extra_reValidateMode, _initProto],\n c: [_RuiForm, _initClass]\n } = _applyDecs(this, [customElement(\"rui-form\")], [[provideContext({\n context: formContext,\n initialValue: {\n ready: false,\n revision: 0,\n fields: {},\n actions: initialFormActions\n }\n }), 0, \"formProvider\"], [event({\n name: \"rui-submit\",\n bubbles: true,\n composed: true\n }), 0, \"submitEvent\"], [event({\n name: \"rui-invalid\",\n bubbles: true,\n composed: true\n }), 0, \"invalidEvent\"], [prop({\n type: Object,\n defaultValue: {}\n }), 0, \"defaultValues\"], [prop({\n type: String,\n attribute: RUI_FORM_DEFAULT_VALUES_ATTR\n }), 0, \"defaultValuesData\"], [prop({\n type: Object\n }), 0, \"resolver\"], [prop({\n type: String,\n reflect: true,\n defaultValue: \"onSubmit\"\n }), 0, \"mode\"], [prop({\n type: String,\n reflect: true,\n attribute: \"revalidate-mode\",\n defaultValue: \"onChange\"\n }), 0, \"reValidateMode\"], [onUpdated([\"defaultValues\", \"defaultValuesData\", \"mode\", \"reValidateMode\"]), 2, \"syncOptions\"], [onUpdated([\"resolver\"]), 2, \"syncResolver\"], [onEvent({\n selector: \"button[type=submit]\",\n type: \"click\"\n }), 2, \"onSubmitButtonClick\"], [onEvent({\n ref: \"form\",\n type: \"submit\"\n }), 2, \"onNativeSubmit\"], [onEvent({\n ref: \"form\",\n type: \"reset\"\n }), 2, \"onNativeReset\"]], 0, void 0, RadiantElement));\n }\n formProvider = (_initProto(this), _init_formProvider(this));\n submitEvent = (_init_extra_formProvider(this), _init_submitEvent(this));\n invalidEvent = (_init_extra_submitEvent(this), _init_invalidEvent(this));\n defaultValues = (_init_extra_invalidEvent(this), _init_defaultValues(this));\n defaultValuesData = (_init_extra_defaultValues(this), _init_defaultValuesData(this));\n resolver = (_init_extra_defaultValuesData(this), _init_resolver(this));\n mode = (_init_extra_resolver(this), _init_mode(this));\n reValidateMode = (_init_extra_mode(this), _init_reValidateMode(this));\n store = void _init_extra_reValidateMode(this);\n unsubscribeStore;\n nativeFormId = `rui-form-native-${Math.random().toString(36).slice(2, 9)}`;\n lastPublishedRevision = -1;\n lastPublishedContext;\n presentationListeners = /* @__PURE__ */new Set();\n formActions = {\n register: registration => {\n const store = this.ensureStore();\n const unregister = store.register(registration);\n this.publishFormContext({\n force: true\n });\n return () => {\n unregister();\n this.publishFormContext({\n force: true\n });\n };\n },\n updateFieldOptions: (name, options) => {\n this.ensureStore().updateFieldOptions(name, options);\n },\n handleFieldChange: name => {\n void this.ensureStore().handleFieldChange(name).then(() => this.publishFormContext({\n force: true\n }));\n },\n handleFieldBlur: name => {\n void this.ensureStore().handleFieldBlur(name).then(() => this.publishFormContext({\n force: true\n }));\n },\n subscribePresentation: listener => {\n this.presentationListeners.add(listener);\n if (this.lastPublishedContext) {\n listener(this.lastPublishedContext);\n }\n return () => this.presentationListeners.delete(listener);\n }\n };\n connectedCallback() {\n super.connectedCallback();\n this.ensureStore();\n this.publishFormContext({\n force: true\n });\n queueMicrotask(() => this.wireOrphanSubmitButtons());\n }\n queryNativeForm() {\n return this.getRef(\"form\") ?? this.querySelector(\"form.rui-form\");\n }\n /** Link submit buttons left on the host (outside the inner `<form>`) after slot projection. */\n wireOrphanSubmitButtons() {\n const formEl = this.queryNativeForm();\n if (!formEl) {\n return;\n }\n if (!formEl.id) {\n formEl.id = this.nativeFormId;\n }\n for (const btn of this.querySelectorAll(\"button[type=submit]\")) {\n if (formEl.contains(btn)) {\n continue;\n }\n btn.setAttribute(\"form\", formEl.id);\n }\n }\n runFormSubmit() {\n const store = this.ensureStore();\n void store.handleSubmit(values => {\n this.submitEvent.emit({\n values\n });\n }, errors => {\n this.invalidEvent.emit({\n errors\n });\n });\n }\n disconnectedCallback() {\n this.unsubscribeStore?.();\n this.unsubscribeStore = void 0;\n super.disconnectedCallback();\n }\n resolveMode() {\n const fromAttr = this.getAttribute(\"mode\");\n if (fromAttr) {\n return fromAttr;\n }\n return this.mode ?? \"onSubmit\";\n }\n resolveReValidateMode() {\n const fromAttr = this.getAttribute(\"revalidate-mode\");\n if (fromAttr) {\n return fromAttr;\n }\n return this.reValidateMode ?? \"onChange\";\n }\n resolveDefaultValues() {\n if (this.defaultValues && Object.keys(this.defaultValues).length > 0) {\n return this.defaultValues;\n }\n const raw = this.defaultValuesData ?? this.getAttribute(RUI_FORM_DEFAULT_VALUES_ATTR);\n if (!raw) {\n return this.defaultValues ?? {};\n }\n try {\n const parsed = JSON.parse(raw);\n return parsed && typeof parsed === \"object\" && !Array.isArray(parsed) ? parsed : {};\n } catch {\n return this.defaultValues ?? {};\n }\n }\n ensureStore() {\n if (this.store) {\n return this.store;\n }\n this.store = new FormStore({\n defaultValues: this.resolveDefaultValues(),\n resolver: typeof this.resolver === \"function\" ? this.resolver : void 0,\n mode: this.resolveMode(),\n reValidateMode: this.resolveReValidateMode()\n });\n this.unsubscribeStore = this.store.subscribe(() => this.publishFormContext());\n return this.store;\n }\n buildFieldPresentations(store) {\n const fields = {};\n for (const name of store.getRegisteredFieldNames()) {\n const message = store.getFieldError(name);\n const show = store.shouldDisplayFieldError(name);\n fields[name] = {\n error: show ? message : void 0,\n invalid: Boolean(show && message)\n };\n }\n return fields;\n }\n publishFormContext(options) {\n const store = this.store;\n if (!store) {\n return;\n }\n const revision = store.getRevision();\n if (!options?.force && revision === this.lastPublishedRevision) {\n return;\n }\n this.lastPublishedRevision = revision;\n const nextContext = {\n ready: true,\n revision,\n fields: this.buildFieldPresentations(store),\n actions: this.formActions\n };\n this.lastPublishedContext = nextContext;\n this.formProvider.setContext(nextContext);\n for (const listener of this.presentationListeners) {\n listener(nextContext);\n }\n }\n syncOptions() {\n const store = this.ensureStore();\n store.updateOptions({\n defaultValues: this.resolveDefaultValues(),\n mode: this.resolveMode(),\n reValidateMode: this.resolveReValidateMode()\n });\n }\n syncResolver() {\n if (typeof this.resolver === \"function\") {\n this.ensureStore().updateOptions({\n resolver: this.resolver\n });\n }\n }\n onSubmitButtonClick(event2) {\n event2.preventDefault();\n this.runFormSubmit();\n }\n onNativeSubmit(event2) {\n event2.preventDefault();\n this.runFormSubmit();\n }\n onNativeReset() {\n this.store?.reset();\n }\n render() {\n return /* @__PURE__ */jsx(\"form\", {\n class: \"rui-form\",\n \"data-ref\": \"form\",\n noValidate: true,\n children: /* @__PURE__ */jsx(\"slot\", {})\n });\n }\n static {\n _initClass();\n }\n}\nexport { _RuiForm as RuiForm };", "import { createContext } from \"@ecopages/radiant/context\";\nexport const formContext = createContext(/* @__PURE__ */Symbol.for(\"rui-form-context\"));", "function resolveRuleMessage(fallback, rule) {\n if (rule === void 0 || rule === false) {\n return void 0;\n }\n if (typeof rule === \"string\") {\n return rule;\n }\n if (typeof rule === \"object\" && rule !== null && \"message\" in rule && typeof rule.message === \"string\") {\n return rule.message;\n }\n return fallback;\n}\nfunction ruleValue(rule) {\n if (typeof rule === \"object\" && rule !== null && \"value\" in rule) {\n return rule.value;\n }\n return rule;\n}\nasync function validateFieldRules(_valueName, value, rules, values) {\n if (!rules) {\n return void 0;\n }\n if (rules.required) {\n const empty = value === void 0 || value === null || value === \"\" || Array.isArray(value) && value.length === 0 || value === false;\n if (empty) {\n return resolveRuleMessage(\"This field is required\", rules.required) ?? \"This field is required\";\n }\n }\n if (typeof value === \"number\" || typeof value === \"string\" && value !== \"\" && !Number.isNaN(Number(value))) {\n const num = typeof value === \"number\" ? value : Number(value);\n if (rules.min !== void 0 && num < ruleValue(rules.min)) {\n return resolveRuleMessage(`Minimum value is ${ruleValue(rules.min)}`, rules.min);\n }\n if (rules.max !== void 0 && num > ruleValue(rules.max)) {\n return resolveRuleMessage(`Maximum value is ${ruleValue(rules.max)}`, rules.max);\n }\n }\n const str = value == null ? \"\" : String(value);\n if (rules.minLength !== void 0 && str.length < ruleValue(rules.minLength)) {\n return resolveRuleMessage(`Minimum length is ${ruleValue(rules.minLength)}`, rules.minLength);\n }\n if (rules.maxLength !== void 0 && str.length > ruleValue(rules.maxLength)) {\n return resolveRuleMessage(`Maximum length is ${ruleValue(rules.maxLength)}`, rules.maxLength);\n }\n if (rules.pattern !== void 0) {\n const pattern = ruleValue(rules.pattern);\n if (!pattern.test(str)) {\n const patternRule = rules.pattern;\n const message = typeof patternRule === \"object\" && \"message\" in patternRule && typeof patternRule.message === \"string\" ? patternRule.message : \"Invalid format\";\n return message;\n }\n }\n if (rules.validate) {\n if (typeof rules.validate === \"function\") {\n const result = await rules.validate(value, values);\n if (result === true || result === void 0) {\n return void 0;\n }\n if (result === false) {\n return \"Invalid value\";\n }\n return String(result);\n }\n for (const key of Object.keys(rules.validate)) {\n const fn = rules.validate[key];\n const result = await fn(value, values);\n if (result !== true && result !== void 0) {\n return result === false ? \"Invalid value\" : String(result);\n }\n }\n }\n return void 0;\n}\nexport async function runRulesResolver(values, context, names) {\n const targetNames = names ?? Object.keys(context.fields);\n const errors = {};\n for (const name of targetNames) {\n const rules = context.fields[name]?.rules;\n const message = await validateFieldRules(name, values[name], rules, values);\n if (message) {\n errors[name] = {\n type: \"validation\",\n message\n };\n }\n }\n if (Object.keys(errors).length > 0) {\n return {\n values: {},\n errors\n };\n }\n return {\n values,\n errors: {}\n };\n}\nexport function createRulesResolver() {\n return (values, context, options) => runRulesResolver(values, context, options.names);\n}", "import { createRulesResolver } from \"./resolvers\";\nfunction normalizeResolver(resolver) {\n if (typeof resolver === \"function\") {\n return resolver;\n }\n return createRulesResolver();\n}\nexport class FormStore {\n mode;\n reValidateMode;\n resolver;\n fields = /* @__PURE__ */new Map();\n listeners = /* @__PURE__ */new Set();\n revision = 0;\n defaultValues;\n values;\n errors = {};\n touched = {};\n dirty = {};\n isSubmitting = false;\n isSubmitted = false;\n constructor(options = {}) {\n this.mode = options.mode ?? \"onSubmit\";\n this.reValidateMode = options.reValidateMode ?? \"onChange\";\n this.resolver = normalizeResolver(options.resolver);\n this.defaultValues = {\n ...(options.defaultValues ?? {})\n };\n this.values = {\n ...this.defaultValues,\n ...(options.values ?? {})\n };\n }\n /** Update options without dropping registered fields. */\n updateOptions(options) {\n if (options.mode !== void 0) {\n this.mode = options.mode;\n }\n if (options.reValidateMode !== void 0) {\n this.reValidateMode = options.reValidateMode;\n }\n if (options.resolver !== void 0) {\n this.resolver = normalizeResolver(options.resolver);\n }\n if (options.defaultValues !== void 0) {\n this.defaultValues = {\n ...options.defaultValues\n };\n }\n }\n subscribe(listener) {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n notify() {\n this.revision += 1;\n for (const listener of this.listeners) {\n listener();\n }\n }\n getRevision() {\n return this.revision;\n }\n getRegisteredFieldNames() {\n return Array.from(this.fields.keys());\n }\n register(registration) {\n const existing = this.fields.get(registration.name);\n const entry = {\n ...registration,\n rules: registration.rules ?? existing?.rules,\n defaultValue: registration.defaultValue ?? existing?.defaultValue,\n getRules: registration.getRules ?? existing?.getRules\n };\n this.fields.set(registration.name, entry);\n if (this.values[registration.name] === void 0 && entry.defaultValue !== void 0) {\n this.values = {\n ...this.values,\n [registration.name]: entry.defaultValue\n };\n }\n entry.setValue(this.values[registration.name]);\n return () => {\n const current = this.fields.get(registration.name);\n if (current === entry) {\n this.fields.delete(registration.name);\n this.notify();\n }\n };\n }\n updateFieldOptions(name, options) {\n const field = this.fields.get(name);\n if (!field) {\n return;\n }\n if (options.rules !== void 0) {\n field.rules = options.rules;\n }\n if (options.defaultValue !== void 0) {\n field.defaultValue = options.defaultValue;\n }\n }\n getValues() {\n const next = {\n ...this.values\n };\n for (const [name, field] of this.fields) {\n next[name] = field.getValue();\n }\n return next;\n }\n setValue(name, value, options) {\n this.values = {\n ...this.values,\n [name]: value\n };\n const field = this.fields.get(String(name));\n field?.setValue(value);\n if (options?.shouldDirty) {\n this.dirty = {\n ...this.dirty,\n [name]: true\n };\n }\n if (options?.shouldTouch) {\n this.touched = {\n ...this.touched,\n [name]: true\n };\n }\n this.notify();\n }\n markTouched(name) {\n this.touched = {\n ...this.touched,\n [name]: true\n };\n this.notify();\n }\n markDirty(name) {\n this.dirty = {\n ...this.dirty,\n [name]: true\n };\n this.notify();\n }\n clearErrors(name) {\n if (name) {\n const next = {\n ...this.errors\n };\n delete next[name];\n this.errors = next;\n this.notify();\n return;\n }\n this.errors = {};\n this.notify();\n }\n getFieldError(name) {\n return this.errors[name]?.message;\n }\n getState() {\n const values = this.getValues();\n const errorCount = Object.keys(this.errors).length;\n return {\n values,\n errors: this.errors,\n touched: this.touched,\n dirty: this.dirty,\n isSubmitting: this.isSubmitting,\n isSubmitted: this.isSubmitted,\n isValid: errorCount === 0\n };\n }\n async validateField(name) {\n const values = this.getValues();\n const result = await this.resolver(values, {\n fields: this.buildResolverFields()\n }, {\n names: [name]\n });\n const message = result.errors[name]?.message;\n const next = {\n ...this.errors\n };\n if (message) {\n next[name] = {\n type: \"validation\",\n message\n };\n } else {\n delete next[name];\n }\n this.errors = next;\n this.notify();\n return !message;\n }\n async validateAll() {\n const values = this.getValues();\n const result = await this.resolver(values, {\n fields: this.buildResolverFields()\n }, {});\n this.errors = result.errors;\n this.notify();\n return Object.keys(this.errors).length === 0;\n }\n shouldValidate(name, trigger) {\n const mode = this.isSubmitted ? this.reValidateMode : this.mode;\n switch (mode) {\n case \"all\":\n return true;\n case \"onChange\":\n return trigger === \"change\";\n case \"onBlur\":\n return trigger === \"blur\";\n case \"onTouched\":\n return trigger === \"blur\" && Boolean(this.touched[name]);\n case \"onSubmit\":\n return false;\n default:\n return false;\n }\n }\n async handleFieldChange(name) {\n const field = this.fields.get(name);\n if (!field) {\n return;\n }\n const value = field.getValue();\n this.values = {\n ...this.values,\n [name]: value\n };\n this.dirty = {\n ...this.dirty,\n [name]: true\n };\n if (this.shouldValidate(name, \"change\")) {\n await this.validateField(name);\n } else {\n this.notify();\n }\n }\n async handleFieldBlur(name) {\n this.markTouched(name);\n if (this.shouldValidate(name, \"blur\")) {\n await this.validateField(name);\n } else {\n this.notify();\n }\n }\n /** Whether a field's validation message should be shown in the UI (RHF-style). */\n shouldDisplayFieldError(name) {\n const message = this.errors[name]?.message;\n if (!message) {\n return false;\n }\n if (this.isSubmitted) {\n return true;\n }\n switch (this.mode) {\n case \"all\":\n return Boolean(this.dirty[name] || this.touched[name]);\n case \"onChange\":\n return Boolean(this.dirty[name]);\n case \"onBlur\":\n case \"onTouched\":\n return Boolean(this.touched[name]);\n case \"onSubmit\":\n default:\n return false;\n }\n }\n async handleSubmit(onValid, onInvalid) {\n this.isSubmitting = true;\n this.isSubmitted = true;\n for (const name of this.fields.keys()) {\n this.touched = {\n ...this.touched,\n [name]: true\n };\n }\n this.notify();\n const valid = await this.validateAll();\n this.isSubmitting = false;\n this.notify();\n if (valid) {\n await onValid(this.getValues());\n return;\n }\n onInvalid?.(this.errors);\n }\n reset(values) {\n const nextDefaults = values ?? {\n ...this.defaultValues,\n ...this.collectFieldDefaults()\n };\n this.values = {\n ...nextDefaults\n };\n this.errors = {};\n this.touched = {};\n this.dirty = {};\n this.isSubmitted = false;\n this.isSubmitting = false;\n for (const field of this.fields.values()) {\n field.setValue(this.values[field.name]);\n }\n this.notify();\n }\n collectFieldDefaults() {\n const defaults = {};\n for (const [name, field] of this.fields) {\n if (field.defaultValue !== void 0) {\n defaults[name] = field.defaultValue;\n }\n }\n return defaults;\n }\n buildResolverFields() {\n const fields = {};\n for (const [name, field] of this.fields) {\n const rules = field.getRules?.() ?? field.rules;\n fields[name] = {\n rules\n };\n }\n return fields;\n }\n}", "export const RUI_CONTROL_ATTR = \"data-rui-control\";\nexport const RUI_FIELD_MANAGED_ATTR = \"data-rui-field-managed\";\nexport const RUI_FIELD_LABEL_ATTR = \"data-rui-field-label\";\nexport const RUI_FIELD_DESCRIPTION_ATTR = \"data-rui-field-description\";\nexport const RUI_FIELD_ERROR_ATTR = \"data-rui-field-error\";\nexport const RUI_FIELD_DEFAULT_VALUE_ATTR = \"data-default-value\";\nexport const RUI_FORM_DEFAULT_VALUES_ATTR = \"data-default-values\";\nconst HOST_CONTROL_TAGS = /* @__PURE__ */new Set([\"rui-combobox\", \"rui-date-field\", \"rui-date-range-picker\", \"rui-select\", \"rui-tag-group\", \"rui-checkbox\", \"rui-switch\", \"rui-radio-group\", \"rui-slider\", \"rui-number-field\", \"rui-listbox\"]);\nconst CONTROL_SELECTOR = `[${RUI_CONTROL_ATTR}], ${Array.from(HOST_CONTROL_TAGS).join(\", \")}, input, textarea`;\nconst stringValueAdapter = {\n read: host => {\n const value = Reflect.get(host, \"value\");\n return typeof value === \"string\" ? value : host.getAttribute(\"value\") ?? \"\";\n },\n write: (host, value) => {\n const next = value == null ? \"\" : String(value);\n host.setAttribute(\"value\", next);\n if (\"value\" in host) {\n Reflect.set(host, \"value\", next);\n }\n }\n};\nconst numberValueAdapter = {\n read: host => {\n const value = Reflect.get(host, \"value\");\n if (typeof value === \"number\") {\n return value;\n }\n const raw = host.getAttribute(\"value\");\n return raw == null || raw === \"\" ? \"\" : Number(raw);\n },\n write: (host, value) => {\n const next = value == null ? \"\" : String(value);\n host.setAttribute(\"value\", next);\n if (\"value\" in host) {\n Reflect.set(host, \"value\", value);\n }\n }\n};\nconst booleanValueAdapter = {\n read: host => {\n const input = host.querySelector('input[type=\"checkbox\"]');\n return input?.checked ?? host.hasAttribute(\"checked\");\n },\n write: (host, value) => {\n if (value) {\n host.setAttribute(\"checked\", \"\");\n } else {\n host.removeAttribute(\"checked\");\n }\n }\n};\nconst CONTROL_VALUE_ADAPTERS = /* @__PURE__ */new Map([[\"rui-checkbox\", booleanValueAdapter], [\"rui-switch\", booleanValueAdapter], [\"rui-combobox\", stringValueAdapter], [\"rui-date-field\", stringValueAdapter], [\"rui-date-range-picker\", stringValueAdapter], [\"rui-select\", stringValueAdapter], [\"rui-radio-group\", stringValueAdapter], [\"rui-listbox\", stringValueAdapter], [\"rui-tag-group\", stringValueAdapter], [\"rui-slider\", numberValueAdapter], [\"rui-number-field\", numberValueAdapter]]);\nfunction forEachFieldContentNode(root, visit) {\n const slotHost = root;\n const visited = /* @__PURE__ */new Set();\n const safeVisit = node => {\n if (visited.has(node)) {\n return;\n }\n visited.add(node);\n visit(node);\n };\n if (typeof slotHost.getSlotElements === \"function\") {\n for (const node of slotHost.getSlotElements()) {\n safeVisit(node);\n }\n }\n const renderRoot = root.querySelector(\".rui-field\") ?? root;\n for (const child of Array.from(renderRoot.children)) {\n safeVisit(child);\n }\n for (const node of renderRoot.querySelectorAll(\"*\")) {\n safeVisit(node);\n }\n for (const child of Array.from(root.children)) {\n safeVisit(child);\n }\n const shadow = root.shadowRoot;\n if (shadow) {\n for (const child of Array.from(shadow.children)) {\n safeVisit(child);\n }\n }\n}\nfunction queryFieldContent(root, selector) {\n let found = null;\n forEachFieldContentNode(root, node => {\n if (found || !(node instanceof HTMLElement)) {\n return;\n }\n if (node.matches(selector)) {\n found = node;\n return;\n }\n found = node.querySelector(selector);\n });\n return found;\n}\nfunction pickPrimaryFieldControl(candidates) {\n if (candidates.length === 0) {\n return null;\n }\n if (candidates.length === 1) {\n return candidates[0];\n }\n const hostControl = candidates.find(candidate => HOST_CONTROL_TAGS.has(candidate.localName));\n const markedControl = candidates.find(candidate => candidate.hasAttribute(RUI_CONTROL_ATTR));\n if (markedControl) {\n return markedControl;\n }\n if (hostControl) {\n return hostControl;\n }\n const active = document.activeElement;\n if (active instanceof HTMLElement) {\n for (const candidate of candidates) {\n if (candidate === active || candidate.contains(active)) {\n return candidate;\n }\n }\n }\n const visible = candidates.filter(el => el.isConnected && el.getClientRects().length > 0 && !el.closest('[hidden],[aria-hidden=\"true\"]'));\n const pool = visible.length > 0 ? visible : candidates.filter(el => el.isConnected);\n return pool[pool.length - 1] ?? candidates[candidates.length - 1];\n}\nfunction listFieldControlsInRenderTree(root) {\n const renderRoot = root.querySelector(\".rui-field\");\n if (!(renderRoot instanceof HTMLElement)) {\n return [];\n }\n return Array.from(renderRoot.querySelectorAll(CONTROL_SELECTOR)).filter(el => root.contains(el));\n}\nexport function findFieldControl(root) {\n const fromRenderTree = pickPrimaryFieldControl(listFieldControlsInRenderTree(root));\n if (fromRenderTree) {\n return fromRenderTree;\n }\n let found = null;\n forEachFieldContentNode(root, node => {\n if (found) {\n return;\n }\n const match = findControlInSubtree(node);\n if (match) {\n found = match;\n }\n });\n if (found) {\n return found;\n }\n const renderRoot = root.querySelector(\".rui-field\") ?? root;\n return findControlInSubtree(renderRoot);\n}\nfunction findControlInSubtree(node) {\n if (!(node instanceof HTMLElement)) {\n return null;\n }\n if (node.matches(`[${RUI_CONTROL_ATTR}]`)) {\n return node;\n }\n if (HOST_CONTROL_TAGS.has(node.localName)) {\n return node;\n }\n if (node instanceof HTMLInputElement || node instanceof HTMLTextAreaElement) {\n return node;\n }\n const nested = node.querySelector(CONTROL_SELECTOR);\n return nested;\n}\nexport function readControlValue(control) {\n if (control instanceof HTMLInputElement) {\n const host2 = resolveControlHost(control);\n const adapter = host2 === control ? void 0 : CONTROL_VALUE_ADAPTERS.get(host2.localName);\n if (adapter) {\n return adapter.read(host2);\n }\n if (control.type === \"checkbox\") {\n return control.checked;\n }\n if (control.type === \"number\" || control.type === \"range\") {\n return control.value === \"\" ? \"\" : Number(control.value);\n }\n return control.value;\n }\n if (control instanceof HTMLTextAreaElement) {\n return control.value;\n }\n const host = resolveControlHost(control);\n return CONTROL_VALUE_ADAPTERS.get(host.localName)?.read(host) ?? host.getAttribute(\"value\") ?? \"\";\n}\nexport function writeControlValue(control, value) {\n if (control instanceof HTMLInputElement) {\n const host2 = resolveControlHost(control);\n const adapter = host2 === control ? void 0 : CONTROL_VALUE_ADAPTERS.get(host2.localName);\n if (adapter) {\n adapter.write(host2, value);\n return;\n }\n if (control.type === \"checkbox\") {\n control.checked = Boolean(value);\n const ce = control.closest(\"rui-checkbox, rui-switch\");\n if (ce) {\n if (value) {\n ce.setAttribute(\"checked\", \"\");\n } else {\n ce.removeAttribute(\"checked\");\n }\n }\n return;\n }\n control.value = value == null ? \"\" : String(value);\n return;\n }\n if (control instanceof HTMLTextAreaElement) {\n control.value = value == null ? \"\" : String(value);\n return;\n }\n const host = resolveControlHost(control);\n CONTROL_VALUE_ADAPTERS.get(host.localName)?.write(host, value);\n}\nfunction resolveControlHost(control) {\n if (control.hasAttribute(RUI_CONTROL_ATTR)) {\n const host = control.closest(Array.from(HOST_CONTROL_TAGS).join(\",\"));\n return host ?? control;\n }\n return control;\n}\nexport function findFieldLabel(root) {\n return queryFieldContent(root, `[${RUI_FIELD_LABEL_ATTR}], label.rui-label`);\n}\nexport function findFieldDescription(root) {\n return queryFieldContent(root, `[${RUI_FIELD_DESCRIPTION_ATTR}]`);\n}\nexport function findFieldError(root) {\n const all = findFieldErrorElements(root);\n return all[0] ?? null;\n}\nexport function findFieldErrorElements(root) {\n const renderRoot = root.querySelector(\".rui-field\");\n if (renderRoot instanceof HTMLElement) {\n const inRender = Array.from(renderRoot.querySelectorAll(`[${RUI_FIELD_ERROR_ATTR}]`));\n const visible = inRender.filter(el => el.getClientRects().length > 0);\n if (visible.length > 0) {\n return visible;\n }\n if (inRender.length > 0) {\n return inRender;\n }\n }\n const fromDom = Array.from(root.querySelectorAll(`[${RUI_FIELD_ERROR_ATTR}]`));\n if (fromDom.length > 0) {\n return fromDom;\n }\n const single = queryFieldContent(root, `[${RUI_FIELD_ERROR_ATTR}]`);\n return single ? [single] : [];\n}\nexport function wireFieldControlName(controlHost, ariaTarget, name) {\n if (!name) {\n return;\n }\n if (ariaTarget instanceof HTMLInputElement || ariaTarget instanceof HTMLTextAreaElement) {\n ariaTarget.name = name;\n }\n if (!controlHost) {\n return;\n }\n if (controlHost === ariaTarget) {\n return;\n }\n if (HOST_CONTROL_TAGS.has(controlHost.localName)) {\n controlHost.setAttribute(\"name\", name);\n }\n}\nexport function getAriaControlTarget(control) {\n if (control instanceof HTMLInputElement || control instanceof HTMLTextAreaElement) {\n return control;\n }\n if (control.hasAttribute(RUI_CONTROL_ATTR)) {\n return control;\n }\n const marked = control.querySelector(`[${RUI_CONTROL_ATTR}]`);\n if (marked) {\n return marked;\n }\n if (control.localName === \"rui-combobox\") {\n return control.querySelector(\"[data-combobox-input]\") ?? control;\n }\n if (control.localName === \"rui-date-field\") {\n return control.querySelector(\"[data-date-field-input]\") ?? control;\n }\n if (control.localName === \"rui-date-range-picker\") {\n return control.querySelector(\"[data-range-start]\") ?? control;\n }\n if (control.localName === \"rui-select\") {\n return control.querySelector(\"[data-select-trigger]\") ?? control;\n }\n if (control.localName === \"rui-tag-group\") {\n return control.querySelector(\"[data-tag-list]\") ?? control;\n }\n if (control.localName === \"rui-number-field\") {\n return control.querySelector(\"[data-number-field-input], input\") ?? control;\n }\n if (control.localName === \"rui-slider\") {\n return control.querySelector('input[type=\"range\"]') ?? control;\n }\n if (control.localName === \"rui-checkbox\" || control.localName === \"rui-switch\") {\n return control.querySelector(\"input\") ?? control;\n }\n if (control.localName === \"rui-radio-group\") {\n const checked = control.querySelector('input[type=\"radio\"]:checked');\n const first = control.querySelector('input[type=\"radio\"]');\n return checked ?? first ?? control;\n }\n return control;\n}"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["jsx", "RADIANT_VIEW_ELEMENT", "RADIANT_SCRIPT_MODULE", "RADIANT_SCRIPT_EXPORT", "linkViewToElement", "view", "element", "RADIANT_VIEW_ELEMENT", "ssrModule", "RADIANT_SCRIPT_MODULE", "RADIANT_SCRIPT_EXPORT", "defineRadiantView", "render", "_options", "args", "jsx", "RadiantElement", "customElement", "event", "onEvent", "onUpdated", "prop", "provideContext", "createContext", "formContext", "resolveRuleMessage", "fallback", "rule", "ruleValue", "validateFieldRules", "_valueName", "value", "rules", "values", "num", "str", "patternRule", "result", "key", "fn", "runRulesResolver", "context", "names", "targetNames", "errors", "name", "message", "createRulesResolver", "options", "normalizeResolver", "resolver", "createRulesResolver", "FormStore", "options", "listener", "registration", "existing", "entry", "name", "field", "next", "value", "values", "errorCount", "message", "result", "trigger", "onValid", "onInvalid", "valid", "nextDefaults", "defaults", "fields", "rules", "RUI_CONTROL_ATTR", "RUI_FIELD_MANAGED_ATTR", "RUI_FIELD_LABEL_ATTR", "RUI_FIELD_DESCRIPTION_ATTR", "RUI_FIELD_ERROR_ATTR", "RUI_FORM_DEFAULT_VALUES_ATTR", "HOST_CONTROL_TAGS", "CONTROL_SELECTOR", "RUI_CONTROL_ATTR", "stringValueAdapter", "host", "value", "next", "numberValueAdapter", "raw", "booleanValueAdapter", "CONTROL_VALUE_ADAPTERS", "forEachFieldContentNode", "root", "visit", "slotHost", "visited", "safeVisit", "node", "renderRoot", "child", "shadow", "pickPrimaryFieldControl", "candidates", "hostControl", "candidate", "HOST_CONTROL_TAGS", "markedControl", "RUI_CONTROL_ATTR", "active", "visible", "el", "pool", "listFieldControlsInRenderTree", "root", "renderRoot", "CONTROL_SELECTOR", "findFieldControl", "fromRenderTree", "found", "forEachFieldContentNode", "node", "match", "findControlInSubtree", "readControlValue", "control", "host2", "resolveControlHost", "adapter", "CONTROL_VALUE_ADAPTERS", "host", "writeControlValue", "value", "ce", "_initProto", "_initClass", "_init_formProvider", "_init_extra_formProvider", "_init_submitEvent", "_init_extra_submitEvent", "_init_invalidEvent", "_init_extra_invalidEvent", "_init_defaultValues", "_init_extra_defaultValues", "_init_defaultValuesData", "_init_extra_defaultValuesData", "_init_resolver", "_init_extra_resolver", "_init_mode", "_init_extra_mode", "_init_reValidateMode", "_init_extra_reValidateMode", "_applyDecs", "e", "t", "n", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "r", "b", "applyDec", "w", "D", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "noopUnregister", "initialFormActions", "_RuiForm", "RuiForm", "RadiantElement", "customElement", "provideContext", "formContext", "event", "prop", "RUI_FORM_DEFAULT_VALUES_ATTR", "onUpdated", "onEvent", "registration", "unregister", "name", "options", "listener", "formEl", "btn", "values", "errors", "fromAttr", "raw", "parsed", "FormStore", "store", "fields", "message", "show", "revision", "nextContext", "event2", "jsx", "RuiForm", "defineRadiantView", "_RuiForm", "children", "defaultValues", "defaultValuesData", "resolver", "reValidateMode", "props", "jsx"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties;
|
|
3
|
+
@layer components {
|
|
4
|
+
.rui-heading {
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
color: var(--color-on-background, var(--on-background));
|
|
8
|
+
}
|
|
9
|
+
.rui-heading--align-start {
|
|
10
|
+
align-items: flex-start;
|
|
11
|
+
text-align: left;
|
|
12
|
+
}
|
|
13
|
+
.rui-heading--align-center {
|
|
14
|
+
align-items: center;
|
|
15
|
+
text-align: center;
|
|
16
|
+
}
|
|
17
|
+
.rui-heading--align-center .rui-heading__description {
|
|
18
|
+
margin-inline: auto;
|
|
19
|
+
}
|
|
20
|
+
.rui-heading--size-sm {
|
|
21
|
+
--heading-eyebrow-font-size: var(--text-xs);
|
|
22
|
+
--heading-title-font-size: var(--text-xl);
|
|
23
|
+
--heading-description-font-size: var(--text-sm);
|
|
24
|
+
--heading-title-leading: var(--leading-compact);
|
|
25
|
+
--heading-title-tracking: -0.015em;
|
|
26
|
+
--heading-eyebrow-gap: var(--space-2);
|
|
27
|
+
--heading-description-gap: var(--space-3);
|
|
28
|
+
--heading-description-measure: 36rem;
|
|
29
|
+
}
|
|
30
|
+
.rui-heading--size-md {
|
|
31
|
+
--heading-eyebrow-font-size: var(--text-xs);
|
|
32
|
+
--heading-title-font-size: var(--text-3xl);
|
|
33
|
+
--heading-description-font-size: var(--text-body);
|
|
34
|
+
--heading-title-leading: 1.2;
|
|
35
|
+
--heading-title-tracking: -0.02em;
|
|
36
|
+
--heading-eyebrow-gap: var(--space-2);
|
|
37
|
+
--heading-description-gap: var(--space-4);
|
|
38
|
+
--heading-description-measure: 40rem;
|
|
39
|
+
}
|
|
40
|
+
.rui-heading--size-lg {
|
|
41
|
+
--heading-eyebrow-font-size: var(--text-sm);
|
|
42
|
+
--heading-title-font-size: var(--text-4xl);
|
|
43
|
+
--heading-description-font-size: var(--text-lg);
|
|
44
|
+
--heading-title-leading: 1.15;
|
|
45
|
+
--heading-title-tracking: -0.025em;
|
|
46
|
+
--heading-eyebrow-gap: var(--space-3);
|
|
47
|
+
--heading-description-gap: var(--space-5);
|
|
48
|
+
--heading-description-measure: 42rem;
|
|
49
|
+
}
|
|
50
|
+
.rui-heading--size-xl {
|
|
51
|
+
--heading-eyebrow-font-size: var(--text-sm);
|
|
52
|
+
--heading-title-font-size: var(--text-4xl);
|
|
53
|
+
--heading-description-font-size: var(--text-lg);
|
|
54
|
+
--heading-title-leading: 1.1;
|
|
55
|
+
--heading-title-tracking: -0.03em;
|
|
56
|
+
--heading-eyebrow-gap: var(--space-3);
|
|
57
|
+
--heading-description-gap: var(--space-6);
|
|
58
|
+
--heading-description-measure: 36rem;
|
|
59
|
+
}
|
|
60
|
+
.rui-heading__eyebrow {
|
|
61
|
+
margin: 0px;
|
|
62
|
+
--tw-font-weight: var(--font-weight-semibold, var(--weight-semibold));
|
|
63
|
+
font-weight: var(--font-weight-semibold, var(--weight-semibold));
|
|
64
|
+
color: var(--color-primary, var(--primary));
|
|
65
|
+
text-transform: uppercase;
|
|
66
|
+
font-size: var(--heading-eyebrow-font-size);
|
|
67
|
+
letter-spacing: 0.08em;
|
|
68
|
+
line-height: var(--leading-compact);
|
|
69
|
+
}
|
|
70
|
+
.rui-heading__eyebrow:not(:last-child) {
|
|
71
|
+
margin-bottom: var(--heading-eyebrow-gap);
|
|
72
|
+
}
|
|
73
|
+
.rui-heading__eyebrow:empty {
|
|
74
|
+
display: none;
|
|
75
|
+
}
|
|
76
|
+
.rui-heading__title {
|
|
77
|
+
font-size: var(--heading-title-font-size);
|
|
78
|
+
line-height: var(--heading-title-leading, var(--leading-compact));
|
|
79
|
+
letter-spacing: var(--heading-title-tracking, -0.02em);
|
|
80
|
+
text-wrap: balance;
|
|
81
|
+
}
|
|
82
|
+
.rui-heading__description {
|
|
83
|
+
margin: 0px;
|
|
84
|
+
color: var(--color-on-surface, var(--on-surface));
|
|
85
|
+
font-size: var(--heading-description-font-size);
|
|
86
|
+
line-height: var(--leading-relaxed);
|
|
87
|
+
max-width: var(--heading-description-measure, 40rem);
|
|
88
|
+
text-wrap: pretty;
|
|
89
|
+
}
|
|
90
|
+
.rui-heading__title + .rui-heading__description {
|
|
91
|
+
margin-top: var(--heading-description-gap);
|
|
92
|
+
}
|
|
93
|
+
.rui-heading__description:empty {
|
|
94
|
+
display: none;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
@property --tw-font-weight {
|
|
98
|
+
syntax: "*";
|
|
99
|
+
inherits: false;
|
|
100
|
+
}
|
|
101
|
+
@layer properties {
|
|
102
|
+
@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
|
|
103
|
+
*, ::before, ::after, ::backdrop {
|
|
104
|
+
--tw-font-weight: initial;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { JsxHtmlPropsWithChildren } from '@ecopages/jsx';
|
|
2
|
+
import { type IntrinsicTag } from '@/lib/intrinsic';
|
|
3
|
+
import { type RuiHeadlineAs } from '../headline/headline';
|
|
4
|
+
export type RuiHeadingAlign = 'start' | 'center';
|
|
5
|
+
export type RuiHeadingSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
6
|
+
export type RuiHeadingRootAs = Extract<IntrinsicTag, 'div' | 'header' | 'section' | 'article' | 'aside'>;
|
|
7
|
+
export type RuiHeadingTitleAs = RuiHeadlineAs;
|
|
8
|
+
export type RuiHeadingProps = JsxHtmlPropsWithChildren<{
|
|
9
|
+
/** Root element. Default: `div`. */
|
|
10
|
+
as?: RuiHeadingRootAs;
|
|
11
|
+
/** Text and flex alignment. Default: `start`. */
|
|
12
|
+
align?: RuiHeadingAlign;
|
|
13
|
+
/** Type scale and vertical rhythm between slots. Default: `md`. */
|
|
14
|
+
size?: RuiHeadingSize;
|
|
15
|
+
}>;
|
|
16
|
+
/** Groups eyebrow, title, and description with shared spacing and type scale. */
|
|
17
|
+
export declare function RuiHeading({ children, as, align, size, class: className, ...props }: RuiHeadingProps): import("@ecopages/jsx").JsxRenderable;
|
|
18
|
+
export type RuiHeadingEyebrowProps = JsxHtmlPropsWithChildren;
|
|
19
|
+
/** Kicker line above the title. */
|
|
20
|
+
export declare function RuiHeadingEyebrow({ children, class: className, ...props }: RuiHeadingEyebrowProps): import("@ecopages/jsx").JsxRenderable;
|
|
21
|
+
export type RuiHeadingTitleProps = JsxHtmlPropsWithChildren<{
|
|
22
|
+
/** Heading level. Default: `h2`. */
|
|
23
|
+
as?: RuiHeadingTitleAs;
|
|
24
|
+
id?: string;
|
|
25
|
+
}>;
|
|
26
|
+
/** Main title within a heading block — `RuiHeadline` sized by the parent `RuiHeading`. */
|
|
27
|
+
export declare function RuiHeadingTitle({ children, as, class: className, ...props }: RuiHeadingTitleProps): import("@ecopages/jsx").JsxRenderable;
|
|
28
|
+
export type RuiHeadingDescriptionProps = JsxHtmlPropsWithChildren;
|
|
29
|
+
/** Supporting copy below the title. */
|
|
30
|
+
export declare function RuiHeadingDescription({ children, class: className, ...props }: RuiHeadingDescriptionProps): import("@ecopages/jsx").JsxRenderable;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { RuiHeading, RuiHeadingDescription, RuiHeadingEyebrow, RuiHeadingTitle, type RuiHeadingAlign, type RuiHeadingDescriptionProps, type RuiHeadingEyebrowProps, type RuiHeadingProps, type RuiHeadingRootAs, type RuiHeadingSize, type RuiHeadingTitleAs, type RuiHeadingTitleProps, } from './heading';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as s}from"@ecopages/jsx/jsx-runtime";function n(...i){return i.filter(Boolean).join(" ")}import{jsx as p}from"@ecopages/jsx/jsx-runtime";function r({as:i,children:e,...t}){return p(i??"div",{...t,children:e})}var f=Symbol.for("@ecopages/storybook-radiant.viewModule");function a(i,e,t){let o=i;return o[f]=t,i}import{jsx as m}from"@ecopages/jsx/jsx-runtime";function u({children:i,as:e="h2",size:t="md",class:o,...c}){return m(r,{as:e,...c,class:n("rui-headline",t!==!1&&`rui-headline--size-${t}`,o),children:i})}a(u,["./headline.css"],import.meta.url);function R(i,e,t){return n("rui-heading",`rui-heading--align-${i}`,`rui-heading--size-${e}`,t)}function d({children:i,as:e="div",align:t="start",size:o="md",class:c,...l}){return s(r,{as:e,...l,class:R(t,o,c),children:i})}function g({children:i,class:e,...t}){return s("p",{...t,class:n("rui-heading__eyebrow",e),children:i})}function h({children:i,as:e="h2",class:t,...o}){return s(u,{as:e,size:!1,class:n("rui-heading__title",t),...o,children:i})}function x({children:i,class:e,...t}){return s("p",{...t,class:n("rui-heading__description",e),children:i})}a(d,["./heading.css","../headline/headline.css"],import.meta.url);export{d as RuiHeading,x as RuiHeadingDescription,g as RuiHeadingEyebrow,h as RuiHeadingTitle};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/ui/heading/heading.tsx", "../../../../src/lib/cx.ts", "../../../../src/lib/intrinsic.tsx", "../../../../src/lib/radiant-view.ts", "../../../../src/components/ui/headline/headline.tsx"],
|
|
4
|
+
"sourcesContent": ["import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport { Intrinsic } from \"@/lib/intrinsic\";\nimport { attachRadiantStylesheets } from \"@/lib/radiant-view\";\nimport { RuiHeadline } from \"../headline/headline\";\nfunction headingRootClassName(align, size, className) {\n return cx(\"rui-heading\", `rui-heading--align-${align}`, `rui-heading--size-${size}`, className);\n}\nexport function RuiHeading({\n children,\n as = \"div\",\n align = \"start\",\n size = \"md\",\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(Intrinsic, {\n as,\n ...props,\n class: headingRootClassName(align, size, className),\n children\n });\n}\nexport function RuiHeadingEyebrow({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"p\", {\n ...props,\n class: cx(\"rui-heading__eyebrow\", className),\n children\n });\n}\nexport function RuiHeadingTitle({\n children,\n as = \"h2\",\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(RuiHeadline, {\n as,\n size: false,\n class: cx(\"rui-heading__title\", className),\n ...props,\n children\n });\n}\nexport function RuiHeadingDescription({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"p\", {\n ...props,\n class: cx(\"rui-heading__description\", className),\n children\n });\n}\nattachRadiantStylesheets(RuiHeading, [\"./heading.css\", \"../headline/headline.css\"], import.meta.url);", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}", "import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nexport function Intrinsic({\n as,\n children,\n ...props\n}) {\n const Tag = as ?? \"div\";\n return /* @__PURE__ */jsx(Tag, {\n ...props,\n children\n });\n}", "const RADIANT_VIEW_ELEMENT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewElement\");\nconst RADIANT_SCRIPT_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptModule\");\nconst RADIANT_SCRIPT_EXPORT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptExport\");\nconst RADIANT_VIEW_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewModule\");\nfunction linkViewToElement(view, element) {\n view[RADIANT_VIEW_ELEMENT] = element;\n const ssrModule = element[RADIANT_SCRIPT_MODULE];\n if (ssrModule) {\n view[RADIANT_SCRIPT_MODULE] = ssrModule;\n view[RADIANT_SCRIPT_EXPORT] = element[RADIANT_SCRIPT_EXPORT] ?? element.name;\n }\n}\nexport function defineRadiantView(element, render, _options) {\n const view = args => render(args);\n linkViewToElement(view, element);\n return view;\n}\nexport function attachRadiantStylesheets(target, _stylesheets, moduleUrl) {\n const view = target;\n view[RADIANT_VIEW_MODULE] = moduleUrl;\n return target;\n}\nexport function syncRadiantViewMetadata(view) {\n const element = view[RADIANT_VIEW_ELEMENT];\n if (element) {\n linkViewToElement(view, element);\n }\n}", "import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport { Intrinsic } from \"@/lib/intrinsic\";\nimport { attachRadiantStylesheets } from \"@/lib/radiant-view\";\nexport function RuiHeadline({\n children,\n as = \"h2\",\n size = \"md\",\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(Intrinsic, {\n as,\n ...props,\n class: cx(\"rui-headline\", size !== false && `rui-headline--size-${size}`, className),\n children\n });\n}\nattachRadiantStylesheets(RuiHeadline, [\"./headline.css\"], import.meta.url);"],
|
|
5
|
+
"mappings": "AAAA,OAAS,OAAAA,MAAW,4BCAb,SAASC,KAAMC,EAAO,CAC3B,OAAOA,EAAM,OAAO,OAAO,EAAE,KAAK,GAAG,CACvC,CCFA,OAAS,OAAAC,MAAW,4BACb,SAASC,EAAU,CACxB,GAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAAG,CAED,OAAsBJ,EADVE,GAAM,MACa,CAC7B,GAAGE,EACH,SAAAD,CACF,CAAC,CACH,CCRA,IAAME,EAAqC,OAAO,IAAI,wCAAwC,EAcvF,SAASC,EAAyBC,EAAQC,EAAcC,EAAW,CACxE,IAAMC,EAAOH,EACb,OAAAG,EAAKC,CAAmB,EAAIF,EACrBF,CACT,CCrBA,OAAS,OAAAK,MAAW,4BAIb,SAASC,EAAY,CAC1B,SAAAC,EACA,GAAAC,EAAK,KACL,KAAAC,EAAO,KACP,MAAOC,EACP,GAAGC,CACL,EAAG,CACD,OAAsBC,EAAIC,EAAW,CACnC,GAAAL,EACA,GAAGG,EACH,MAAOG,EAAG,eAAgBL,IAAS,IAAS,sBAAsBA,CAAI,GAAIC,CAAS,EACnF,SAAAH,CACF,CAAC,CACH,CACAQ,EAAyBT,EAAa,CAAC,gBAAgB,EAAG,YAAY,GAAG,EJbzE,SAASU,EAAqBC,EAAOC,EAAMC,EAAW,CACpD,OAAOC,EAAG,cAAe,sBAAsBH,CAAK,GAAI,qBAAqBC,CAAI,GAAIC,CAAS,CAChG,CACO,SAASE,EAAW,CACzB,SAAAC,EACA,GAAAC,EAAK,MACL,MAAAN,EAAQ,QACR,KAAAC,EAAO,KACP,MAAOC,EACP,GAAGK,CACL,EAAG,CACD,OAAsBC,EAAIC,EAAW,CACnC,GAAAH,EACA,GAAGC,EACH,MAAOR,EAAqBC,EAAOC,EAAMC,CAAS,EAClD,SAAAG,CACF,CAAC,CACH,CACO,SAASK,EAAkB,CAChC,SAAAL,EACA,MAAOH,EACP,GAAGK,CACL,EAAG,CACD,OAAsBC,EAAI,IAAK,CAC7B,GAAGD,EACH,MAAOJ,EAAG,uBAAwBD,CAAS,EAC3C,SAAAG,CACF,CAAC,CACH,CACO,SAASM,EAAgB,CAC9B,SAAAN,EACA,GAAAC,EAAK,KACL,MAAOJ,EACP,GAAGK,CACL,EAAG,CACD,OAAsBC,EAAII,EAAa,CACrC,GAAAN,EACA,KAAM,GACN,MAAOH,EAAG,qBAAsBD,CAAS,EACzC,GAAGK,EACH,SAAAF,CACF,CAAC,CACH,CACO,SAASQ,EAAsB,CACpC,SAAAR,EACA,MAAOH,EACP,GAAGK,CACL,EAAG,CACD,OAAsBC,EAAI,IAAK,CAC7B,GAAGD,EACH,MAAOJ,EAAG,2BAA4BD,CAAS,EAC/C,SAAAG,CACF,CAAC,CACH,CACAS,EAAyBV,EAAY,CAAC,gBAAiB,0BAA0B,EAAG,YAAY,GAAG",
|
|
6
|
+
"names": ["jsx", "cx", "parts", "jsx", "Intrinsic", "as", "children", "props", "RADIANT_VIEW_MODULE", "attachRadiantStylesheets", "target", "_stylesheets", "moduleUrl", "view", "RADIANT_VIEW_MODULE", "jsx", "RuiHeadline", "children", "as", "size", "className", "props", "jsx", "Intrinsic", "cx", "attachRadiantStylesheets", "headingRootClassName", "align", "size", "className", "cx", "RuiHeading", "children", "as", "props", "jsx", "Intrinsic", "RuiHeadingEyebrow", "RuiHeadingTitle", "RuiHeadline", "RuiHeadingDescription", "attachRadiantStylesheets"]
|
|
7
|
+
}
|