@ecopages/radiant-ui 0.1.0-rc.8 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -1
- package/dist/components/ui/autocomplete/autocomplete.css +1 -2
- package/dist/components/ui/avatar/avatar.css +10 -8
- package/dist/components/ui/avatar/avatar.d.ts +3 -1
- package/dist/components/ui/calendar/calendar.css +10 -5
- package/dist/components/ui/calendar/calendar.script.d.ts +1 -0
- package/dist/components/ui/calendar/index.js +1 -1
- package/dist/components/ui/calendar/index.js.map +3 -3
- package/dist/components/ui/carousel/carousel-autoplay.d.ts +22 -0
- package/dist/components/ui/carousel/carousel-swipe.d.ts +17 -0
- package/dist/components/ui/carousel/carousel-window.d.ts +63 -0
- package/dist/components/ui/carousel/carousel.css +71 -18
- package/dist/components/ui/carousel/carousel.d.ts +1 -1
- package/dist/components/ui/carousel/carousel.script.d.ts +49 -21
- package/dist/components/ui/carousel/index.js +1 -1
- package/dist/components/ui/carousel/index.js.map +4 -4
- package/dist/components/ui/checkbox/checkbox.script.d.ts +0 -3
- package/dist/components/ui/checkbox/index.js +1 -1
- package/dist/components/ui/checkbox/index.js.map +4 -4
- package/dist/components/ui/checkbox-group/checkbox-group.d.ts +0 -1
- package/dist/components/ui/checkbox-group/checkbox-group.script.d.ts +8 -7
- package/dist/components/ui/checkbox-group/index.js +1 -1
- package/dist/components/ui/checkbox-group/index.js.map +4 -4
- package/dist/components/ui/combobox/combobox.css +2 -2
- package/dist/components/ui/combobox/combobox.d.ts +1 -2
- package/dist/components/ui/combobox/combobox.script.d.ts +13 -6
- package/dist/components/ui/combobox/index.js +1 -1
- package/dist/components/ui/combobox/index.js.map +4 -4
- package/dist/components/ui/cycle-toggle/index.js +1 -1
- package/dist/components/ui/cycle-toggle/index.js.map +3 -3
- package/dist/components/ui/date-field/date-field.css +13 -17
- package/dist/components/ui/date-field/date-field.d.ts +7 -5
- package/dist/components/ui/date-field/date-field.script.d.ts +16 -48
- package/dist/components/ui/date-field/index.js +1 -1
- package/dist/components/ui/date-field/index.js.map +4 -4
- package/dist/components/ui/date-input/date-input-segment-dom.d.ts +24 -0
- package/dist/components/ui/date-input/date-input.css +50 -0
- package/dist/components/ui/date-input/date-input.d.ts +8 -0
- package/dist/components/ui/date-input/date-input.script.d.ts +137 -0
- package/dist/components/ui/date-input/index.d.ts +2 -0
- package/dist/components/ui/date-input/index.js +2 -0
- package/dist/components/ui/date-input/index.js.map +7 -0
- package/dist/components/ui/date-range-picker/date-range-picker.css +18 -19
- package/dist/components/ui/date-range-picker/date-range-picker.d.ts +8 -6
- package/dist/components/ui/date-range-picker/date-range-picker.script.d.ts +24 -47
- package/dist/components/ui/date-range-picker/index.js +1 -1
- package/dist/components/ui/date-range-picker/index.js.map +4 -4
- package/dist/components/ui/dialog/dialog.css +18 -14
- package/dist/components/ui/dialog/dialog.script.d.ts +10 -3
- package/dist/components/ui/dialog/index.js +1 -1
- package/dist/components/ui/dialog/index.js.map +4 -4
- package/dist/components/ui/disclosure/disclosure.css +3 -6
- package/dist/components/ui/disclosure/disclosure.d.ts +15 -5
- package/dist/components/ui/disclosure/disclosure.script.d.ts +2 -2
- package/dist/components/ui/disclosure/index.d.ts +1 -1
- package/dist/components/ui/disclosure/index.js +1 -1
- package/dist/components/ui/disclosure/index.js.map +4 -4
- package/dist/components/ui/field/field.d.ts +1 -1
- package/dist/components/ui/field/field.script.d.ts +27 -4
- package/dist/components/ui/field/index.js +1 -1
- package/dist/components/ui/field/index.js.map +4 -4
- package/dist/components/ui/form/control-protocol.d.ts +38 -1
- package/dist/components/ui/form/form-context.d.ts +3 -0
- package/dist/components/ui/form/form.script.d.ts +7 -0
- package/dist/components/ui/form/index.d.ts +2 -1
- package/dist/components/ui/form/index.js +1 -1
- package/dist/components/ui/form/index.js.map +4 -4
- package/dist/components/ui/hover-card/hover-card.css +12 -101
- package/dist/components/ui/hover-card/hover-card.script.d.ts +7 -0
- package/dist/components/ui/hover-card/index.js +1 -1
- package/dist/components/ui/hover-card/index.js.map +4 -4
- 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.css +1 -1
- package/dist/components/ui/knob/index.js +1 -1
- package/dist/components/ui/knob/index.js.map +3 -3
- package/dist/components/ui/knob/knob.css +6 -1
- package/dist/components/ui/knob/knob.d.ts +1 -1
- package/dist/components/ui/knob/knob.script.d.ts +25 -10
- package/dist/components/ui/label/index.js +1 -1
- package/dist/components/ui/label/index.js.map +4 -4
- 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.d.ts +1 -2
- package/dist/components/ui/listbox/listbox.script.d.ts +7 -5
- 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.script.d.ts +1 -1
- package/dist/components/ui/menubar/index.js +1 -1
- package/dist/components/ui/menubar/index.js.map +4 -4
- package/dist/components/ui/meter/index.js +1 -1
- package/dist/components/ui/meter/index.js.map +3 -3
- package/dist/components/ui/meter/meter.css +27 -2
- package/dist/components/ui/meter/meter.script.d.ts +14 -4
- package/dist/components/ui/navigation-menu/index.d.ts +1 -1
- package/dist/components/ui/navigation-menu/index.js +1 -1
- package/dist/components/ui/navigation-menu/index.js.map +4 -4
- package/dist/components/ui/navigation-menu/navigation-menu.css +32 -34
- package/dist/components/ui/navigation-menu/navigation-menu.d.ts +33 -4
- package/dist/components/ui/navigation-menu/navigation-menu.script.d.ts +71 -9
- package/dist/components/ui/number-field/index.js +1 -1
- package/dist/components/ui/number-field/index.js.map +4 -4
- package/dist/components/ui/number-field/number-field.css +1 -1
- package/dist/components/ui/number-field/number-field.d.ts +1 -1
- package/dist/components/ui/number-field/number-field.script.d.ts +7 -9
- package/dist/components/ui/pagination/index.d.ts +1 -1
- package/dist/components/ui/pagination/index.js +1 -1
- package/dist/components/ui/pagination/index.js.map +3 -3
- package/dist/components/ui/pagination/pagination.css +50 -13
- package/dist/components/ui/pagination/pagination.d.ts +25 -6
- package/dist/components/ui/popover/index.js +1 -1
- package/dist/components/ui/popover/index.js.map +4 -4
- package/dist/components/ui/popover/popover.script.d.ts +5 -0
- package/dist/components/ui/radio-group/index.js +1 -1
- package/dist/components/ui/radio-group/index.js.map +4 -4
- package/dist/components/ui/radio-group/radio-group.script.d.ts +2 -1
- package/dist/components/ui/select/index.d.ts +1 -1
- package/dist/components/ui/select/index.js +1 -1
- package/dist/components/ui/select/index.js.map +4 -4
- package/dist/components/ui/select/select.css +4 -3
- package/dist/components/ui/select/select.d.ts +7 -5
- package/dist/components/ui/select/select.script.d.ts +32 -12
- package/dist/components/ui/shared/calendar-popover-behavior.d.ts +27 -0
- package/dist/components/ui/shared/listbox-host-controller.d.ts +5 -4
- package/dist/components/ui/shared/multi-value.d.ts +18 -8
- package/dist/components/ui/shared/numeric-range.d.ts +8 -0
- package/dist/components/ui/shared/popover.css +10 -99
- package/dist/components/ui/sidebar/index.d.ts +2 -1
- package/dist/components/ui/sidebar/index.js +1 -1
- package/dist/components/ui/sidebar/index.js.map +4 -4
- package/dist/components/ui/sidebar/sidebar-trigger.d.ts +12 -0
- package/dist/components/ui/sidebar/sidebar-trigger.script.d.ts +42 -29
- package/dist/components/ui/sidebar/sidebar.css +67 -61
- package/dist/components/ui/sidebar/sidebar.d.ts +1 -7
- package/dist/components/ui/sidebar/sidebar.script.d.ts +12 -7
- package/dist/components/ui/slider/index.js +1 -1
- package/dist/components/ui/slider/index.js.map +4 -4
- package/dist/components/ui/slider/slider.css +5 -5
- package/dist/components/ui/slider/slider.d.ts +5 -6
- package/dist/components/ui/slider/slider.script.d.ts +72 -29
- package/dist/components/ui/switch/index.js +1 -1
- package/dist/components/ui/switch/index.js.map +4 -4
- package/dist/components/ui/switch/switch.css +28 -22
- package/dist/components/ui/switch/switch.script.d.ts +10 -3
- package/dist/components/ui/table/index.js +1 -1
- package/dist/components/ui/table/index.js.map +4 -4
- package/dist/components/ui/table/table.d.ts +5 -3
- package/dist/components/ui/table/table.script.d.ts +25 -10
- package/dist/components/ui/tabs/tabs.css +18 -12
- package/dist/components/ui/tabs/tabs.script.d.ts +7 -0
- package/dist/components/ui/tag-group/index.js +1 -1
- package/dist/components/ui/tag-group/index.js.map +4 -4
- package/dist/components/ui/tag-group/tag-group.d.ts +7 -4
- package/dist/components/ui/tag-group/tag-group.script.d.ts +7 -5
- package/dist/components/ui/textarea/index.js +1 -1
- package/dist/components/ui/textarea/index.js.map +4 -4
- package/dist/components/ui/textarea/textarea.css +1 -1
- package/dist/components/ui/toast/index.js +1 -1
- package/dist/components/ui/toast/index.js.map +3 -3
- package/dist/components/ui/toast/toast.css +35 -32
- package/dist/components/ui/toast/toast.script.d.ts +2 -1
- package/dist/components/ui/toast/toaster.script.d.ts +6 -0
- package/dist/components/ui/tooltip/index.js +1 -1
- package/dist/components/ui/tooltip/index.js.map +4 -4
- package/dist/components/ui/tooltip/tooltip.css +14 -94
- package/dist/components/ui/tooltip/tooltip.script.d.ts +9 -1
- package/dist/components/ui/window-splitter/index.d.ts +1 -1
- package/dist/components/ui/window-splitter/index.js +1 -1
- package/dist/components/ui/window-splitter/index.js.map +3 -3
- package/dist/components/ui/window-splitter/window-splitter.d.ts +1 -1
- package/dist/components/ui/window-splitter/window-splitter.script.d.ts +5 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/lib/icons/chevron-down.d.ts +0 -1
- package/dist/lib/intl-date/index.d.ts +4 -2
- package/dist/lib/intl-date/segment-editing.d.ts +34 -0
- package/dist/lib/intl-date/segments.d.ts +26 -4
- package/dist/lib/non-empty.d.ts +6 -0
- package/dist/lib/unique-id.d.ts +11 -0
- package/dist/lib/viewport/breakpoints.d.ts +6 -0
- package/dist/lib/viewport/mobile-layout.d.ts +15 -0
- package/dist/styles/primitives.css +10 -7
- package/dist/styles/radiant-ui-core.css +10 -0
- package/dist/styles/radiant-ui.css +40 -3
- package/dist/styles/style-dependencies.json +18 -6
- package/dist/styles/styles.css +456 -246
- package/dist/styles/tailwind.css +40 -93
- package/dist/styles/tokens/presets/colors/aurora.css +2 -0
- package/dist/styles/tokens/presets/colors/basalt.css +2 -0
- package/dist/styles/tokens/presets/colors/ember.css +2 -0
- package/dist/styles/tokens/presets/colors/glacier.css +2 -0
- package/dist/styles/tokens/semantic.css +1 -0
- package/dist/styles/tokens/system.css +11 -3
- package/dist/styles/tokens/typography/default.css +8 -0
- package/package.json +20 -10
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{RadiantElement as Ce,customElement as He,event as Le,onEvent as W,onUpdated as Pe,prop as j,state as Ne}from"@ecopages/radiant";import{jsx as ue,jsxs as $e}from"@ecopages/jsx/jsx-runtime";function E(...t){return t.filter(Boolean).join(" ")}var le="http://www.w3.org/2000/svg";function J({class:t,size:e="sm",...i}){return $e("svg",{...i,class:E("rui-icon",e==="md"&&"rui-icon--md",t),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[ue("path",{d:"m18 6-12 12"}),ue("path",{d:"m6 6 12 12"})]})}function ce(){let t=document.createElementNS(le,"svg");t.setAttribute("class","rui-icon"),t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("fill","none"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width","2"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round"),t.setAttribute("aria-hidden","true");for(let e of["m18 6-12 12","m6 6 12 12"]){let i=document.createElementNS(le,"path");i.setAttribute("d",e),t.append(i)}return t}function Ke(t,e){t.forEach((i,r)=>{let d=r===e?0:-1;i.tabIndex!==d&&(i.tabIndex=d)})}function Oe(t,e){if(!t.length)return null;let i=Math.max(0,Math.min(t.length-1,e));return Ke(t,i),t[i]?.focus(),t[i]??null}function Ue(t,e){return t==="Home"?"first":t==="End"?"last":e==="horizontal"?t==="ArrowRight"?"next":t==="ArrowLeft"?"prev":null:t==="ArrowDown"?"next":t==="ArrowUp"?"prev":null}function de(t){let{items:e,current:i,key:r,orientation:d="horizontal",wrap:p=!0}=t;if(!e.length||!i)return{handled:!1};let l=e.indexOf(i);if(l<0)return{handled:!1};let n=Ue(r,d);if(!n)return{handled:!1};let b=l;n==="first"?b=0:n==="last"?b=e.length-1:n==="next"?b=p?(l+1)%e.length:Math.min(e.length-1,l+1):b=p?(l-1+e.length)%e.length:Math.max(0,l-1);let S=Oe(e,b);return S?{handled:!0,index:b,item:S}:{handled:!1}}function fe(t){return t?Je(t.split(",")):[]}function Q(t){return t.join(",")}function Je(t){return[...new Set(t.map(e=>e.trim()).filter(Boolean))]}var he,ge,me,pe,be,ve,ye,xe,Te,_e,we,Ae,Se,Re,Ee,Ie,Ve,Me;function Qe(t,e,i,r,d,p){var l,n,b,S,C,q,I,Y=Symbol.metadata||Symbol.for("Symbol.metadata"),Z=Object.defineProperty,G=Object.create,H=[G(null),G(null)],P=e.length;function L(a,v,h){return function(s,o){v&&(o=s,s=t);for(var y=0;y<a.length;y++)o=a[y].apply(s,h?[o]:[]);return h?o:s}}function _(a,v,h,s){if(typeof a!="function"&&(s||a!==void 0))throw new TypeError(v+" must "+(h||"be")+" a function"+(s?"":" or undefined"));return a}function N(a,v,h,s,o,y,A,g,x,T,ee){function X(c){if(!ee(c))throw new TypeError("Attempted to access private element on non-instance")}var $=[].concat(v[0]),te=v[3],K=!A,V=o===1,re=o===3,ie=o===4,k=o===2;function D(c,R,se){return function(B,oe){return R&&(oe=B,B=a),se&&se(B),u[c].call(B,oe)}}if(!K){var u={},O=[],w=re?"get":ie||V?"set":"value";if(x?(T||V?u={get:je(function(){return te(this)},s,"get"),set:function(c){v[4](this,c)}}:u[w]=te,T||je(u[w],s,k?"":w)):T||(u=Object.getOwnPropertyDescriptor(a,s)),!T&&!x){if((n=H[+g][s])&&(n^o)!==7)throw Error("Decorating two elements with the same name ("+u[w].name+") is not supported yet");H[+g][s]=o<3?1:o}}for(var f=a,z=$.length-1;z>=0;z-=h?2:1){var ne=_($[z],"A decorator","be",!0),ae=h?$[z-1]:void 0,U={},M={kind:["field","accessor","method","getter","setter","class"][o],name:s,metadata:l,addInitializer:function(c,R){if(c.v)throw new TypeError("attempted to call addInitializer after decoration was finished");_(R,"An initializer","be",!0),y.push(R)}.bind(null,U)};if(K)n=ne.call(ae,f,M),U.v=1,_(n,"class decorators","return")&&(f=n);else if(M.static=g,M.private=x,n=M.access={has:x?ee.bind():function(c){return s in c}},ie||(n.get=x?k?function(c){return X(c),u.value}:D("get",0,X):function(c){return c[s]}),k||re||(n.set=x?D("set",0,X):function(c,R){c[s]=R}),f=ne.call(ae,V?{get:u.get,set:u.set}:u[w],M),U.v=1,V){if(typeof f=="object"&&f)(n=_(f.get,"accessor.get"))&&(u.get=n),(n=_(f.set,"accessor.set"))&&(u.set=n),(n=_(f.init,"accessor.init"))&&O.unshift(n);else if(f!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else _(f,(T?"field":"method")+" decorators","return")&&(T?O.unshift(f):u[w]=f)}return o<2&&A.push(L(O,g,1),L(y,g,0)),T||K||(x?V?A.splice(-1,0,D("get",g),D("set",g)):A.push(k?u[w]:_.call.bind(u[w])):Z(a,s,u)),f}function F(a){return Z(a,Y,{configurable:!0,enumerable:!0,value:l})}return p!==void 0&&(l=p[Y]),l=G(l??null),C=[],q=function(a){a&&C.push(L(a))},I=function(a,v){for(var h=0;h<i.length;h++){var s=i[h],o=s[1],y=7&o;if((8&o)==a&&!y==v){var A=s[2],g=!!s[3],x=16&o;N(a?t:t.prototype,s,x,g?"#"+A:We(A),y,y<2?[]:a?S=S||[]:b=b||[],C,!!a,g,v,a&&g?function(T){return Ze(T)===t}:d)}}},I(8,0),I(0,0),I(8,1),I(0,1),q(b),q(S),n=C,P||F(t),{e:n,get c(){var a=[];return P&&[F(t=N(t,[e],r,t.name,5,a)),L(a,1)]}}}function We(t){var e=Ye(t,"string");return typeof e=="symbol"?e:e+""}function Ye(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 je(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 Ze(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 De,ke=class extends Ce{static{({e:[me,pe,be,ve,ye,xe,Te,_e,we,Ae,Se,Re,Ee,Ie,Ve,Me,he],c:[De,ge]}=Qe(this,[He("rui-tag-group")],[[j({type:String,reflect:!0,defaultValue:""}),0,"value"],[j({type:String,defaultValue:""}),0,"label"],[j({type:Boolean,reflect:!0,defaultValue:!1}),0,"disabled"],[j({type:String,attribute:"selection-mode",defaultValue:"multiple"}),0,"selectionMode"],[j({type:Boolean,reflect:!0,defaultValue:!1}),0,"embedded"],[Le({name:"rui-change",bubbles:!0,composed:!0}),0,"changeEvent"],[Le({name:"rui-remove",bubbles:!0,composed:!0}),0,"removeEvent"],[Ne,0,"derivedItems"],[Pe(["value","label","disabled","selectionMode","embedded","derivedItems"]),2,"onPropsUpdated"],[W({selector:"[data-tag]",type:"click"}),2,"onTagClick"],[W({selector:"[data-tag-remove]",type:"click"}),2,"onRemoveClick"],[W({selector:"[data-tag]",type:"keydown"}),2,"onTagKeydown"]],0,void 0,Ce))}constructor(...e){super(...e),Me(this)}value=(he(this),me(this));label=(pe(this),be(this));disabled=(ve(this),ye(this));selectionMode=(xe(this),Te(this));embedded=(_e(this),we(this));changeEvent=(Ae(this),Se(this));removeEvent=(Re(this),Ee(this));uid=(Ie(this),Math.random().toString(36).slice(2,9));derivedItems=Ve(this,null);isMultiple(){return this.selectionMode==="multiple"}getSelectedValues(){return this.value?fe(this.value):[]}setSelectedValues(e){this.value=Q(e)}getList(){let e=this.querySelector("[data-rui-managed-list]");return e||(this.derivedItems!=null?null:this.querySelector("[data-tag-list]"))}getTags(){let e=this.getList();return e?Array.from(e.querySelectorAll("[data-tag]")):[]}getVisibleTags(){return this.getTags().filter(e=>!e.hidden&&e.getAttribute("aria-disabled")!=="true")}getTagValue(e){return e.getAttribute("data-value")||e.textContent?.trim()||""}getTagLabel(e){return e.getAttribute("data-label")||e.textContent?.trim()||""}ensureTagIds(){this.getTags().forEach((e,i)=>{e.id||(e.id=`rui-tag-${this.uid}-${i}`)})}syncList(){let e=this.getList();e&&(e.id||(e.id=`rui-tag-list-${this.uid}`),e.setAttribute("role","list"),e.setAttribute("aria-label",this.label||"Tags"),this.disabled?e.setAttribute("aria-disabled","true"):e.removeAttribute("aria-disabled"))}syncTags(){let e=new Set(this.getSelectedValues());this.getTags().forEach((r,d)=>{r.setAttribute("role","listitem");let p=this.getTagValue(r),l=e.has(p);r.setAttribute("aria-selected",String(l)),r.tabIndex=d===0?0:-1;let n=r.querySelector("[data-tag-remove]");n&&(n.type="button",n.tabIndex=-1,n.setAttribute("aria-label",`Remove ${this.getTagLabel(r)}`))})}selectTag(e){if(this.disabled||this.embedded||e.getAttribute("aria-disabled")==="true")return;let i=this.getTagValue(e);if(this.isMultiple()){let r=new Set(this.getSelectedValues());r.has(i)?r.delete(i):r.add(i),this.setSelectedValues([...r])}else this.value=i;this.syncTags(),this.changeEvent.emit({value:this.value})}removeTag(e){let i=this.getTagValue(e),r=new Set(this.getSelectedValues());r.delete(i),this.setSelectedValues([...r]),this.syncTags(),this.removeEvent.emit({value:i}),this.changeEvent.emit({value:this.value})}initialize(){this.syncManagedList(),this.ensureTagIds(),this.syncList(),this.syncTags()}onConnected(){this.initialize()}onPropsUpdated(){this.syncManagedList(),this.syncList(),this.syncTags()}resync(){this.ensureTagIds(),this.syncList(),this.syncTags()}setItems(e){this.derivedItems=e,this.value=Q(e.map(i=>i.value))}createManagedTag(e){let i=document.createElement("span");i.setAttribute("data-tag",""),i.setAttribute("data-value",e.value),i.setAttribute("data-label",e.label),i.className="rui-tag",i.textContent=e.label;let r=document.createElement("button");return r.type="button",r.setAttribute("data-tag-remove",""),r.className="rui-tag__remove",r.setAttribute("aria-label",`Remove ${e.label}`),r.append(ce()),i.append(r),i}syncManagedList(){let e=this.querySelector('[data-ref="root"]');if(!e||this.derivedItems==null)return;e.querySelector("[data-tag-list]:not([data-rui-managed-list])")?.toggleAttribute("hidden",!0);let r=e.querySelector("[data-rui-managed-list]");if(this.derivedItems.length===0){r?.remove();return}r||(r=document.createElement("div"),r.setAttribute("data-tag-list",""),r.setAttribute("data-rui-managed-list",""),r.className="rui-tag-group__list",e.appendChild(r)),r.replaceChildren(...this.derivedItems.map(d=>this.createManagedTag(d))),this.ensureTagIds(),this.syncList(),this.syncTags()}onTagClick(e){let i=e.target;if(i.closest("[data-tag-remove]"))return;let r=i.closest("[data-tag]");r&&this.contains(r)&&this.selectTag(r)}onRemoveClick(e){e.stopPropagation();let r=e.target.closest("[data-tag]");r&&this.contains(r)&&this.removeTag(r)}onTagKeydown(e){let i=this.getVisibleTags(),r=e.target.closest("[data-tag]");if(!r)return;if(e.key==="Enter"||e.key===" "){e.preventDefault(),this.embedded||this.selectTag(r);return}if(e.key==="Backspace"||e.key==="Delete"){r.querySelector("[data-tag-remove]")&&(e.preventDefault(),this.removeTag(r));return}de({items:i,current:r,key:e.key,orientation:"horizontal"}).handled&&e.preventDefault()}static{ge()}};import{jsx as m,jsxs as Fe}from"@ecopages/jsx/jsx-runtime";function ze(t,e){return e===void 0||t?.label!==void 0?t:{...t,label:e}}function qe({children:t,class:e,...i}){return m("div",{...i,"data-tag-list":!0,class:E("rui-tag-group__list",e),children:t})}function Ge({value:t,label:e,children:i,class:r,disabled:d,...p}){return Fe("span",{...p,"data-tag":!0,"data-value":t,"data-label":e,class:E("rui-tag",r),"aria-disabled":d?"true":void 0,children:[i,m(Xe,{})]})}function Xe({children:t,class:e,aria:i,...r}){return m("button",{...r,aria:ze(i,"Remove"),type:"button","data-tag-remove":!0,class:E("rui-tag__remove",e),children:t??m(J,{})})}function Be({children:t}){return m("div",{class:"rui-tag-group","data-ref":"root",children:t})}function et({tags:t,children:e,...i}){return t!=null?m("rui-tag-group",{...i,children:m(Be,{children:m(qe,{children:t.map(r=>m(Ge,{value:r.value,label:typeof r.label=="string"?r.label:void 0,disabled:r.disabled,children:r.label}))})})}):m("rui-tag-group",{...i,children:m(Be,{children:e})})}export{Ge as RuiTag,et as RuiTagGroup,De as RuiTagGroupElement,qe as RuiTagList,Xe as RuiTagRemove};
|
|
1
|
+
import{RadiantElement as qt,customElement as re,event as zt,onEvent as P,onUpdated as ie,prop as C,state as ne}from"@ecopages/radiant";import{jsx as ut,jsxs as Kt}from"@ecopages/jsx/jsx-runtime";function R(...e){return e.filter(Boolean).join(" ")}var lt="http://www.w3.org/2000/svg";function N({class:e,size:t="sm",...r}){return Kt("svg",{...r,class:R("rui-icon",t==="md"&&"rui-icon--md",e),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[ut("path",{d:"m18 6-12 12"}),ut("path",{d:"m6 6 12 12"})]})}function ct(){let e=document.createElementNS(lt,"svg");e.setAttribute("class","rui-icon"),e.setAttribute("viewBox","0 0 24 24"),e.setAttribute("fill","none"),e.setAttribute("stroke","currentColor"),e.setAttribute("stroke-width","2"),e.setAttribute("stroke-linecap","round"),e.setAttribute("stroke-linejoin","round"),e.setAttribute("aria-hidden","true");for(let t of["m18 6-12 12","m6 6 12 12"]){let r=document.createElementNS(lt,"path");r.setAttribute("d",t),e.append(r)}return e}function Nt(e,t){e.forEach((r,i)=>{let s=i===t?0:-1;r.tabIndex!==s&&(r.tabIndex=s)})}function Pt(e,t){if(!e.length)return null;let r=Math.max(0,Math.min(e.length-1,t));return Nt(e,r),e[r]?.focus(),e[r]??null}function Zt(e,t){return e==="Home"?"first":e==="End"?"last":t==="horizontal"?e==="ArrowRight"?"next":e==="ArrowLeft"?"prev":null:e==="ArrowDown"?"next":e==="ArrowUp"?"prev":null}function dt(e){let{items:t,current:r,key:i,orientation:s="horizontal",wrap:p=!0}=e;if(!t.length||!r)return{handled:!1};let l=t.indexOf(r);if(l<0)return{handled:!1};let n=Zt(i,s);if(!n)return{handled:!1};let b=l;n==="first"?b=0:n==="last"?b=t.length-1:n==="next"?b=p?(l+1)%t.length:Math.min(t.length-1,l+1):b=p?(l-1+t.length)%t.length:Math.max(0,l-1);let S=Pt(t,b);return S?{handled:!0,index:b,item:S}:{handled:!1}}var Jt=/^[A-Za-z][A-Za-z0-9_-]*$/;function ft(e){return Jt.test(e)}function Qt(e){let t=e.trim();if(ft(t))return t;let r=`rui-${t}`;return t&&ft(r)?r:"rui"}function mt(e){let t=typeof crypto.randomUUID=="function"?crypto.randomUUID().replace(/-/g,""):Array.from(crypto.getRandomValues(new Uint8Array(16)),r=>r.toString(16).padStart(2,"0")).join("");return`${Qt(e)}-${t}`}function gt(e){return e?pt(e.split(",")):[]}function Wt(e){return e.join(",")}var Yt={fromAttribute:e=>gt(e),toAttribute:e=>e.length>0?Wt(e):null,fromProperty:e=>Array.isArray(e)?pt(e.map(String)):typeof e=="string"?gt(e):[]},ht={type:Array,reflect:!0,transform:Yt};function pt(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))]}var bt,vt,yt,xt,_t,Tt,At,wt,St,It,Rt,Et,Vt,jt,Ct,Mt,kt,Lt;function Ft(e,t,r,i,s,p){var l,n,b,S,M,B,E,J=Symbol.metadata||Symbol.for("Symbol.metadata"),Q=Object.defineProperty,U=Object.create,W=[U(null),U(null)],Y=t.length;function k(a,v,m){return function(o,u){v&&(u=o,o=e);for(var y=0;y<a.length;y++)u=a[y].apply(o,m?[u]:[]);return m?u:o}}function T(a,v,m,o){if(typeof a!="function"&&(o||a!==void 0))throw new TypeError(v+" must "+(m||"be")+" a function"+(o?"":" or undefined"));return a}function F(a,v,m,o,u,y,w,g,x,_,tt){function $(d){if(!tt(d))throw new TypeError("Attempted to access private element on non-instance")}var G=[].concat(v[0]),et=v[3],O=!w,V=u===1,rt=u===3,it=u===4,L=u===2;function D(d,I,ot){return function(z,st){return I&&(st=z,z=a),ot&&ot(z),c[d].call(z,st)}}if(!O){var c={},X=[],A=rt?"get":it||V?"set":"value";if(x?(_||V?c={get:Dt(function(){return et(this)},o,"get"),set:function(d){v[4](this,d)}}:c[A]=et,_||Dt(c[A],o,L?"":A)):_||(c=Object.getOwnPropertyDescriptor(a,o)),!_&&!x){if((n=W[+g][o])&&(n^u)!==7)throw Error("Decorating two elements with the same name ("+c[A].name+") is not supported yet");W[+g][o]=u<3?1:u}}for(var f=a,q=G.length-1;q>=0;q-=m?2:1){var nt=T(G[q],"A decorator","be",!0),at=m?G[q-1]:void 0,K={},j={kind:["field","accessor","method","getter","setter","class"][u],name:o,metadata:l,addInitializer:function(d,I){if(d.v)throw new TypeError("attempted to call addInitializer after decoration was finished");T(I,"An initializer","be",!0),y.push(I)}.bind(null,K)};if(O)n=nt.call(at,f,j),K.v=1,T(n,"class decorators","return")&&(f=n);else if(j.static=g,j.private=x,n=j.access={has:x?tt.bind():function(d){return o in d}},it||(n.get=x?L?function(d){return $(d),c.value}:D("get",0,$):function(d){return d[o]}),L||rt||(n.set=x?D("set",0,$):function(d,I){d[o]=I}),f=nt.call(at,V?{get:c.get,set:c.set}:c[A],j),K.v=1,V){if(typeof f=="object"&&f)(n=T(f.get,"accessor.get"))&&(c.get=n),(n=T(f.set,"accessor.set"))&&(c.set=n),(n=T(f.init,"accessor.init"))&&X.unshift(n);else if(f!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else T(f,(_?"field":"method")+" decorators","return")&&(_?X.unshift(f):c[A]=f)}return u<2&&w.push(k(X,g,1),k(y,g,0)),_||O||(x?V?w.splice(-1,0,D("get",g),D("set",g)):w.push(L?c[A]:T.call.bind(c[A])):Q(a,o,c)),f}function H(a){return Q(a,J,{configurable:!0,enumerable:!0,value:l})}return p!==void 0&&(l=p[J]),l=U(l??null),M=[],B=function(a){a&&M.push(k(a))},E=function(a,v){for(var m=0;m<r.length;m++){var o=r[m],u=o[1],y=7&u;if((8&u)==a&&!y==v){var w=o[2],g=!!o[3],x=16&u;F(a?e:e.prototype,o,x,g?"#"+w:Ht(w),y,y<2?[]:a?S=S||[]:b=b||[],M,!!a,g,v,a&&g?function(_){return ee(_)===e}:s)}}},E(8,0),E(0,0),E(8,1),E(0,1),B(b),B(S),n=M,Y||H(e),{e:n,get c(){var a=[];return Y&&[H(e=F(e,[t],i,e.name,5,a)),k(a,1)]}}}function Ht(e){var t=te(e,"string");return typeof t=="symbol"?t:t+""}function te(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,t||"default");if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Dt(e,t,r){typeof t=="symbol"&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:r?r+" "+t:t})}catch{}return e}function ee(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(e!==null?typeof e:"null"));return e}var Ut,Bt=class extends qt{static{({e:[yt,xt,_t,Tt,At,wt,St,It,Rt,Et,Vt,jt,Ct,Mt,kt,Lt,bt],c:[Ut,vt]}=Ft(this,[re("rui-tag-group")],[[C({...ht,defaultValue:[]}),0,"value"],[C({type:String,defaultValue:""}),0,"label"],[C({type:Boolean,reflect:!0,defaultValue:!1}),0,"disabled"],[C({type:String,attribute:"selection-mode",defaultValue:"multiple"}),0,"selectionMode"],[C({type:Boolean,reflect:!0,defaultValue:!1}),0,"embedded"],[zt({name:"rui-change",bubbles:!0,composed:!0}),0,"changeEvent"],[zt({name:"rui-remove",bubbles:!0,composed:!0}),0,"removeEvent"],[ne,0,"derivedItems"],[ie(["value","label","disabled","selectionMode","embedded","derivedItems"]),2,"onPropsUpdated"],[P({selector:"[data-tag]",type:"click"}),2,"onTagClick"],[P({selector:"[data-tag-remove]",type:"click"}),2,"onRemoveClick"],[P({selector:"[data-tag]",type:"keydown"}),2,"onTagKeydown"]],0,void 0,qt))}constructor(...t){super(...t),Lt(this)}value=(bt(this),yt(this));label=(xt(this),_t(this));disabled=(Tt(this),At(this));selectionMode=(wt(this),St(this));embedded=(It(this),Rt(this));changeEvent=(Et(this),Vt(this));removeEvent=(jt(this),Ct(this));uid=(Mt(this),mt("rui-tag-group"));derivedItems=kt(this,null);isMultiple(){return this.selectionMode==="multiple"}getSelectedValues(){return this.value}setSelectedValues(t){this.value=t}getList(){let t=this.querySelector("[data-rui-managed-list]");return t||(this.derivedItems!=null?null:this.querySelector("[data-tag-list]"))}getTags(){let t=this.getList();return t?Array.from(t.querySelectorAll("[data-tag]")):[]}getVisibleTags(){return this.getTags().filter(t=>!t.hidden&&t.getAttribute("aria-disabled")!=="true")}getTagValue(t){return t.getAttribute("data-value")||t.textContent?.trim()||""}getTagLabel(t){return t.getAttribute("data-label")||t.textContent?.trim()||""}ensureTagIds(){this.getTags().forEach((t,r)=>{t.id||(t.id=`${this.uid}-tag-${r}`)})}syncList(){let t=this.getList();t&&(t.id||(t.id=`${this.uid}-list`),t.setAttribute("role","list"),t.setAttribute("aria-label",this.label||"Tags"),this.disabled?t.setAttribute("aria-disabled","true"):t.removeAttribute("aria-disabled"))}syncTags(){let t=new Set(this.getSelectedValues());this.getTags().forEach((i,s)=>{i.setAttribute("role","listitem");let p=this.getTagValue(i),l=t.has(p);i.setAttribute("aria-selected",String(l)),i.tabIndex=s===0?0:-1;let n=i.querySelector("[data-tag-remove]");n&&(n.type="button",n.tabIndex=-1,n.setAttribute("aria-label",`Remove ${this.getTagLabel(i)}`))})}selectTag(t){if(this.disabled||this.embedded||t.getAttribute("aria-disabled")==="true")return;let r=this.getTagValue(t);if(this.isMultiple()){let i=new Set(this.getSelectedValues());i.has(r)?i.delete(r):i.add(r),this.setSelectedValues([...i])}else this.value=[r];this.syncTags(),this.changeEvent.emit({value:this.value})}removeTag(t){let r=this.getTagValue(t),i=new Set(this.getSelectedValues());i.delete(r),this.setSelectedValues([...i]),this.syncTags(),this.removeEvent.emit({value:r}),this.changeEvent.emit({value:this.value})}initialize(){this.syncManagedList(),this.ensureTagIds(),this.syncList(),this.syncTags()}onConnected(){this.initialize()}onPropsUpdated(){this.syncManagedList(),this.syncList(),this.syncTags()}resync(){this.ensureTagIds(),this.syncList(),this.syncTags()}setItems(t){this.derivedItems=t,this.value=t.map(r=>r.value)}createManagedTag(t){let r=document.createElement("span");r.setAttribute("data-tag",""),r.setAttribute("data-value",t.value),r.setAttribute("data-label",t.label),r.className="rui-tag",r.textContent=t.label,r.setAttribute("aria-label",t.label);let i=document.createElement("button");return i.type="button",i.setAttribute("data-tag-remove",""),i.className="rui-tag__remove",i.setAttribute("aria-label",`Remove ${t.label}`),i.append(ct()),r.append(i),r}syncManagedList(){let t=this.querySelector('[data-ref="root"]');if(!t||this.derivedItems==null)return;t.querySelector("[data-tag-list]:not([data-rui-managed-list])")?.toggleAttribute("hidden",!0);let i=t.querySelector("[data-rui-managed-list]");if(this.derivedItems.length===0){i?.remove();return}i||(i=document.createElement("div"),i.setAttribute("data-tag-list",""),i.setAttribute("data-rui-managed-list",""),i.className="rui-tag-group__list",t.appendChild(i)),i.replaceChildren(...this.derivedItems.map(s=>this.createManagedTag(s))),this.ensureTagIds(),this.syncList(),this.syncTags()}onTagClick(t){let r=t.target;if(r.closest("[data-tag-remove]"))return;let i=r.closest("[data-tag]");i&&this.contains(i)&&this.selectTag(i)}onRemoveClick(t){t.stopPropagation();let i=t.target.closest("[data-tag]");i&&this.contains(i)&&this.removeTag(i)}onTagKeydown(t){let r=this.getVisibleTags(),i=t.target.closest("[data-tag]");if(!i)return;if(t.key==="Enter"||t.key===" "){t.preventDefault(),this.embedded||this.selectTag(i);return}if(t.key==="Backspace"||t.key==="Delete"){i.querySelector("[data-tag-remove]")&&(t.preventDefault(),this.removeTag(i));return}dt({items:r,current:i,key:t.key,orientation:"horizontal"}).handled&&t.preventDefault()}static{vt()}};import{jsx as h,jsxs as ae}from"@ecopages/jsx/jsx-runtime";function Z(e,t){return t===void 0||e?.label!==void 0?e:{...e,label:t}}function Gt({children:e,class:t,...r}){return h("div",{...r,"data-tag-list":!0,class:R("rui-tag-group__list",t),children:e})}function Ot({value:e,label:t,children:r,class:i,disabled:s,aria:p,...l}){return ae("span",{...l,"data-tag":!0,"data-value":e,"data-label":t,class:R("rui-tag",i),aria:Z(p,t),"aria-disabled":s?"true":void 0,children:[r,h(Xt,{})]})}function Xt({children:e,class:t,aria:r,...i}){return h("button",{...i,aria:Z(r,"Remove"),type:"button","data-tag-remove":!0,class:R("rui-tag__remove",t),children:e??h(N,{})})}function $t({children:e}){return h("div",{class:"rui-tag-group","data-ref":"root",children:e})}function oe({tags:e,children:t,value:r,...i}){return e!=null?h("rui-tag-group",{...i,value:r,children:h($t,{children:h(Gt,{children:e.map(s=>h(Ot,{value:s.value,label:typeof s.label=="string"?s.label:void 0,disabled:s.disabled,children:s.label}))})})}):h("rui-tag-group",{...i,value:r,children:h($t,{children:t})})}export{Ot as RuiTag,oe as RuiTagGroup,Ut as RuiTagGroupElement,Gt as RuiTagList,Xt as RuiTagRemove};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/components/ui/tag-group/tag-group.script.tsx", "../../../../src/lib/icons/x.tsx", "../../../../src/lib/cx.ts", "../../../../src/lib/roving-tabindex.ts", "../../../../src/components/ui/shared/multi-value.ts", "../../../../src/components/ui/tag-group/tag-group.tsx", "../../../../src/aria.ts"],
|
|
4
|
-
"sourcesContent": ["let _initProto, _initClass, _init_value, _init_extra_value, _init_label, _init_extra_label, _init_disabled, _init_extra_disabled, _init_selectionMode, _init_extra_selectionMode, _init_embedded, _init_extra_embedded, _init_changeEvent, _init_extra_changeEvent, _init_removeEvent, _init_extra_removeEvent, _init_derivedItems, _init_extra_derivedItems;\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 { RadiantElement, customElement, event, onEvent, onUpdated, prop, state } from \"@ecopages/radiant\";\nimport { createRuiIconX } from \"@/lib/icons/x\";\nimport { navigateRovingTabindex } from \"@/lib/roving-tabindex\";\nimport { parseMultiValue, serializeMultiValue } from \"../shared/multi-value\";\nlet _RuiTagGroup;\nclass RuiTagGroup extends RadiantElement {\n static {\n ({\n e: [_init_value, _init_extra_value, _init_label, _init_extra_label, _init_disabled, _init_extra_disabled, _init_selectionMode, _init_extra_selectionMode, _init_embedded, _init_extra_embedded, _init_changeEvent, _init_extra_changeEvent, _init_removeEvent, _init_extra_removeEvent, _init_derivedItems, _init_extra_derivedItems, _initProto],\n c: [_RuiTagGroup, _initClass]\n } = _applyDecs(this, [customElement(\"rui-tag-group\")], [[prop({\n type: String,\n reflect: true,\n defaultValue: \"\"\n }), 0, \"value\"], [prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"label\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"disabled\"], [prop({\n type: String,\n attribute: \"selection-mode\",\n defaultValue: \"multiple\"\n }), 0, \"selectionMode\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"embedded\"], [event({\n name: \"rui-change\",\n bubbles: true,\n composed: true\n }), 0, \"changeEvent\"], [event({\n name: \"rui-remove\",\n bubbles: true,\n composed: true\n }), 0, \"removeEvent\"], [state, 0, \"derivedItems\"], [onUpdated([\"value\", \"label\", \"disabled\", \"selectionMode\", \"embedded\", \"derivedItems\"]), 2, \"onPropsUpdated\"], [onEvent({\n selector: \"[data-tag]\",\n type: \"click\"\n }), 2, \"onTagClick\"], [onEvent({\n selector: \"[data-tag-remove]\",\n type: \"click\"\n }), 2, \"onRemoveClick\"], [onEvent({\n selector: \"[data-tag]\",\n type: \"keydown\"\n }), 2, \"onTagKeydown\"]], 0, void 0, RadiantElement));\n }\n constructor(...args) {\n super(...args);\n _init_extra_derivedItems(this);\n }\n value = (_initProto(this), _init_value(this));\n label = (_init_extra_value(this), _init_label(this));\n disabled = (_init_extra_label(this), _init_disabled(this));\n selectionMode = (_init_extra_disabled(this), _init_selectionMode(this));\n embedded = (_init_extra_selectionMode(this), _init_embedded(this));\n changeEvent = (_init_extra_embedded(this), _init_changeEvent(this));\n removeEvent = (_init_extra_changeEvent(this), _init_removeEvent(this));\n uid = (_init_extra_removeEvent(this), Math.random().toString(36).slice(2, 9));\n derivedItems = _init_derivedItems(this, null);\n isMultiple() {\n return this.selectionMode === \"multiple\";\n }\n getSelectedValues() {\n if (!this.value) {\n return [];\n }\n return parseMultiValue(this.value);\n }\n setSelectedValues(values) {\n this.value = serializeMultiValue(values);\n }\n getList() {\n const managed = this.querySelector(\"[data-rui-managed-list]\");\n if (managed) {\n return managed;\n }\n if (this.derivedItems != null) {\n return null;\n }\n return this.querySelector(\"[data-tag-list]\");\n }\n getTags() {\n const list = this.getList();\n if (!list) {\n return [];\n }\n return Array.from(list.querySelectorAll(\"[data-tag]\"));\n }\n getVisibleTags() {\n return this.getTags().filter(tag => !tag.hidden && tag.getAttribute(\"aria-disabled\") !== \"true\");\n }\n getTagValue(tag) {\n return tag.getAttribute(\"data-value\") || tag.textContent?.trim() || \"\";\n }\n getTagLabel(tag) {\n return tag.getAttribute(\"data-label\") || tag.textContent?.trim() || \"\";\n }\n ensureTagIds() {\n this.getTags().forEach((tag, index) => {\n if (!tag.id) {\n tag.id = `rui-tag-${this.uid}-${index}`;\n }\n });\n }\n syncList() {\n const list = this.getList();\n if (!list) {\n return;\n }\n if (!list.id) {\n list.id = `rui-tag-list-${this.uid}`;\n }\n list.setAttribute(\"role\", \"list\");\n list.setAttribute(\"aria-label\", this.label || \"Tags\");\n if (this.disabled) {\n list.setAttribute(\"aria-disabled\", \"true\");\n } else {\n list.removeAttribute(\"aria-disabled\");\n }\n }\n syncTags() {\n const selected = new Set(this.getSelectedValues());\n const tags = this.getTags();\n tags.forEach((tag, index) => {\n tag.setAttribute(\"role\", \"listitem\");\n const value = this.getTagValue(tag);\n const isSelected = selected.has(value);\n tag.setAttribute(\"aria-selected\", String(isSelected));\n tag.tabIndex = index === 0 ? 0 : -1;\n const removeButton = tag.querySelector(\"[data-tag-remove]\");\n if (removeButton) {\n removeButton.type = \"button\";\n removeButton.tabIndex = -1;\n removeButton.setAttribute(\"aria-label\", `Remove ${this.getTagLabel(tag)}`);\n }\n });\n }\n selectTag(tag) {\n if (this.disabled || this.embedded || tag.getAttribute(\"aria-disabled\") === \"true\") {\n return;\n }\n const tagValue = this.getTagValue(tag);\n if (this.isMultiple()) {\n const selected = new Set(this.getSelectedValues());\n if (selected.has(tagValue)) {\n selected.delete(tagValue);\n } else {\n selected.add(tagValue);\n }\n this.setSelectedValues([...selected]);\n } else {\n this.value = tagValue;\n }\n this.syncTags();\n this.changeEvent.emit({\n value: this.value\n });\n }\n removeTag(tag) {\n const tagValue = this.getTagValue(tag);\n const selected = new Set(this.getSelectedValues());\n selected.delete(tagValue);\n this.setSelectedValues([...selected]);\n this.syncTags();\n this.removeEvent.emit({\n value: tagValue\n });\n this.changeEvent.emit({\n value: this.value\n });\n }\n initialize() {\n this.syncManagedList();\n this.ensureTagIds();\n this.syncList();\n this.syncTags();\n }\n onConnected() {\n this.initialize();\n }\n onPropsUpdated() {\n this.syncManagedList();\n this.syncList();\n this.syncTags();\n }\n /**\n * Re-read authored `[data-tag]` children after the parent mutates them in place.\n */\n resync() {\n this.ensureTagIds();\n this.syncList();\n this.syncTags();\n }\n /**\n * Replace authored tags with a CE-owned list. Requires `[data-ref=\"root\"]`.\n *\n * @remarks Hides the authored `[data-tag-list]` and sets `value` to every\n * item. Pass `[]` to clear the managed list.\n */\n setItems(items) {\n this.derivedItems = items;\n this.value = serializeMultiValue(items.map(item => item.value));\n }\n /**\n * Imperative twin of the view's `RuiTag` / `RuiTagRemove` markup for\n * CE-managed items (same `data-*` hooks, classes, and remove icon).\n */\n createManagedTag(item) {\n const tag = document.createElement(\"span\");\n tag.setAttribute(\"data-tag\", \"\");\n tag.setAttribute(\"data-value\", item.value);\n tag.setAttribute(\"data-label\", item.label);\n tag.className = \"rui-tag\";\n tag.textContent = item.label;\n const remove = document.createElement(\"button\");\n remove.type = \"button\";\n remove.setAttribute(\"data-tag-remove\", \"\");\n remove.className = \"rui-tag__remove\";\n remove.setAttribute(\"aria-label\", `Remove ${item.label}`);\n remove.append(createRuiIconX());\n tag.append(remove);\n return tag;\n }\n syncManagedList() {\n const root = this.querySelector('[data-ref=\"root\"]');\n if (!root || this.derivedItems == null) {\n return;\n }\n const authored = root.querySelector(\"[data-tag-list]:not([data-rui-managed-list])\");\n authored?.toggleAttribute(\"hidden\", true);\n let managed = root.querySelector(\"[data-rui-managed-list]\");\n if (this.derivedItems.length === 0) {\n managed?.remove();\n return;\n }\n if (!managed) {\n managed = document.createElement(\"div\");\n managed.setAttribute(\"data-tag-list\", \"\");\n managed.setAttribute(\"data-rui-managed-list\", \"\");\n managed.className = \"rui-tag-group__list\";\n root.appendChild(managed);\n }\n managed.replaceChildren(...this.derivedItems.map(item => this.createManagedTag(item)));\n this.ensureTagIds();\n this.syncList();\n this.syncTags();\n }\n onTagClick(event2) {\n const target = event2.target;\n if (target.closest(\"[data-tag-remove]\")) {\n return;\n }\n const tag = target.closest(\"[data-tag]\");\n if (tag && this.contains(tag)) {\n this.selectTag(tag);\n }\n }\n onRemoveClick(event2) {\n event2.stopPropagation();\n const button = event2.target;\n const tag = button.closest(\"[data-tag]\");\n if (tag && this.contains(tag)) {\n this.removeTag(tag);\n }\n }\n onTagKeydown(event2) {\n const tags = this.getVisibleTags();\n const current = event2.target.closest(\"[data-tag]\");\n if (!current) {\n return;\n }\n if (event2.key === \"Enter\" || event2.key === \" \") {\n event2.preventDefault();\n if (!this.embedded) {\n this.selectTag(current);\n }\n return;\n }\n if (event2.key === \"Backspace\" || event2.key === \"Delete\") {\n const removeButton = current.querySelector(\"[data-tag-remove]\");\n if (removeButton) {\n event2.preventDefault();\n this.removeTag(current);\n }\n return;\n }\n const result = navigateRovingTabindex({\n items: tags,\n current,\n key: event2.key,\n orientation: \"horizontal\"\n });\n if (result.handled) {\n event2.preventDefault();\n }\n }\n static {\n _initClass();\n }\n}\nexport { _RuiTagGroup as RuiTagGroup };", "import { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nexport function RuiIconX({\n class: className,\n size = \"sm\",\n ...props\n}) {\n return /* @__PURE__ */jsxs(\"svg\", {\n ...props,\n class: cx(\"rui-icon\", size === \"md\" && \"rui-icon--md\", className),\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"aria-hidden\": \"true\",\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"m18 6-12 12\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"m6 6 12 12\"\n })]\n });\n}\nexport function createRuiIconX() {\n const icon = document.createElementNS(SVG_NAMESPACE, \"svg\");\n icon.setAttribute(\"class\", \"rui-icon\");\n icon.setAttribute(\"viewBox\", \"0 0 24 24\");\n icon.setAttribute(\"fill\", \"none\");\n icon.setAttribute(\"stroke\", \"currentColor\");\n icon.setAttribute(\"stroke-width\", \"2\");\n icon.setAttribute(\"stroke-linecap\", \"round\");\n icon.setAttribute(\"stroke-linejoin\", \"round\");\n icon.setAttribute(\"aria-hidden\", \"true\");\n for (const d of [\"m18 6-12 12\", \"m6 6 12 12\"]) {\n const path = document.createElementNS(SVG_NAMESPACE, \"path\");\n path.setAttribute(\"d\", d);\n icon.append(path);\n }\n return icon;\n}", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}", "export function applyRovingTabindex(items, activeIndex) {\n items.forEach((item, index) => {\n const next = index === activeIndex ? 0 : -1;\n if (item.tabIndex !== next) {\n item.tabIndex = next;\n }\n });\n}\nexport function focusRovingItem(items, index) {\n if (!items.length) return null;\n const next = Math.max(0, Math.min(items.length - 1, index));\n applyRovingTabindex(items, next);\n items[next]?.focus();\n return items[next] ?? null;\n}\nfunction deltaForKey(key, orientation) {\n if (key === \"Home\") return \"first\";\n if (key === \"End\") return \"last\";\n if (orientation === \"horizontal\") {\n if (key === \"ArrowRight\") return \"next\";\n if (key === \"ArrowLeft\") return \"prev\";\n return null;\n }\n if (key === \"ArrowDown\") return \"next\";\n if (key === \"ArrowUp\") return \"prev\";\n return null;\n}\nexport function navigateRovingTabindex(options) {\n const {\n items,\n current,\n key,\n orientation = \"horizontal\",\n wrap = true\n } = options;\n if (!items.length || !current) return {\n handled: false\n };\n const index = items.indexOf(current);\n if (index < 0) return {\n handled: false\n };\n const delta = deltaForKey(key, orientation);\n if (!delta) return {\n handled: false\n };\n let next = index;\n if (delta === \"first\") next = 0;else if (delta === \"last\") next = items.length - 1;else if (delta === \"next\") next = wrap ? (index + 1) % items.length : Math.min(items.length - 1, index + 1);else next = wrap ? (index - 1 + items.length) % items.length : Math.max(0, index - 1);\n const item = focusRovingItem(items, next);\n if (!item) return {\n handled: false\n };\n return {\n handled: true,\n index: next,\n item\n };\n}", "export function parseMultiValue(value) {\n if (!value) {\n return [];\n }\n return uniqueTrimmed(value.split(\",\"));\n}\nexport function serializeMultiValue(values) {\n return values.join(\",\");\n}\nexport function serializeViewValue(value) {\n if (value == null) {\n return void 0;\n }\n if (typeof value !== \"string\") {\n return serializeMultiValue(uniqueTrimmed(value));\n }\n return value;\n}\nexport function parseViewValue(value) {\n if (value == null) {\n return [];\n }\n if (typeof value !== \"string\") {\n return uniqueTrimmed(value);\n }\n return parseMultiValue(value);\n}\nfunction uniqueTrimmed(values) {\n return [...new Set(values.map(item => item.trim()).filter(Boolean))];\n}", "import { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { withDefaultAriaLabel } from \"@/aria\";\nimport { cx } from \"@/lib/cx\";\nimport { RuiIconX } from \"@/lib/icons\";\nimport \"./tag-group.script\";\nexport function RuiTagList({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n \"data-tag-list\": true,\n class: cx(\"rui-tag-group__list\", className),\n children\n });\n}\nexport function RuiTag({\n value,\n label,\n children,\n class: className,\n disabled,\n ...props\n}) {\n return /* @__PURE__ */jsxs(\"span\", {\n ...props,\n \"data-tag\": true,\n \"data-value\": value,\n \"data-label\": label,\n class: cx(\"rui-tag\", className),\n \"aria-disabled\": disabled ? \"true\" : void 0,\n children: [children, /* @__PURE__ */jsx(RuiTagRemove, {})]\n });\n}\nexport function RuiTagRemove({\n children,\n class: className,\n aria,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"button\", {\n ...props,\n aria: withDefaultAriaLabel(aria, \"Remove\"),\n type: \"button\",\n \"data-tag-remove\": true,\n class: cx(\"rui-tag__remove\", className),\n children: children ?? /* @__PURE__ */jsx(RuiIconX, {})\n });\n}\nfunction TagGroupShell({\n children\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n class: \"rui-tag-group\",\n \"data-ref\": \"root\",\n children\n });\n}\nexport function RuiTagGroup({\n tags,\n children,\n ...props\n}) {\n if (tags != null) {\n return /* @__PURE__ */jsx(\"rui-tag-group\", {\n ...props,\n children: /* @__PURE__ */jsx(TagGroupShell, {\n children: /* @__PURE__ */jsx(RuiTagList, {\n children: tags.map(tag => /* @__PURE__ */jsx(RuiTag, {\n value: tag.value,\n label: typeof tag.label === \"string\" ? tag.label : void 0,\n disabled: tag.disabled,\n children: tag.label\n }))\n })\n })\n });\n }\n return /* @__PURE__ */jsx(\"rui-tag-group\", {\n ...props,\n children: /* @__PURE__ */jsx(TagGroupShell, {\n children\n })\n });\n}", "export function withDefaultAriaLabel(aria, fallback) {\n if (fallback === void 0 || aria?.label !== void 0) {\n return aria;\n }\n return {\n ...aria,\n label: fallback\n };\n}"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["RadiantElement", "customElement", "event", "onEvent", "onUpdated", "prop", "state", "jsx", "jsxs", "cx", "parts", "SVG_NAMESPACE", "RuiIconX", "className", "size", "props", "jsxs", "cx", "jsx", "createRuiIconX", "icon", "d", "path", "applyRovingTabindex", "items", "activeIndex", "item", "index", "next", "focusRovingItem", "deltaForKey", "key", "orientation", "navigateRovingTabindex", "options", "current", "wrap", "delta", "parseMultiValue", "value", "uniqueTrimmed", "serializeMultiValue", "values", "uniqueTrimmed", "values", "item", "_initProto", "_initClass", "_init_value", "_init_extra_value", "_init_label", "_init_extra_label", "_init_disabled", "_init_extra_disabled", "_init_selectionMode", "_init_extra_selectionMode", "_init_embedded", "_init_extra_embedded", "_init_changeEvent", "_init_extra_changeEvent", "_init_removeEvent", "_init_extra_removeEvent", "_init_derivedItems", "_init_extra_derivedItems", "_applyDecs", "
|
|
3
|
+
"sources": ["../../../../src/components/ui/tag-group/tag-group.script.tsx", "../../../../src/lib/icons/x.tsx", "../../../../src/lib/cx.ts", "../../../../src/lib/roving-tabindex.ts", "../../../../src/lib/unique-id.ts", "../../../../src/components/ui/shared/multi-value.ts", "../../../../src/components/ui/tag-group/tag-group.tsx", "../../../../src/aria.ts"],
|
|
4
|
+
"sourcesContent": ["let _initProto, _initClass, _init_value, _init_extra_value, _init_label, _init_extra_label, _init_disabled, _init_extra_disabled, _init_selectionMode, _init_extra_selectionMode, _init_embedded, _init_extra_embedded, _init_changeEvent, _init_extra_changeEvent, _init_removeEvent, _init_extra_removeEvent, _init_derivedItems, _init_extra_derivedItems;\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 { RadiantElement, customElement, event, onEvent, onUpdated, prop, state } from \"@ecopages/radiant\";\nimport { createRuiIconX } from \"@/lib/icons/x\";\nimport { navigateRovingTabindex } from \"@/lib/roving-tabindex\";\nimport { uniqueId } from \"@/lib/unique-id\";\nimport { multiValuePropOptions } from \"../shared/multi-value\";\nlet _RuiTagGroup;\nclass RuiTagGroup extends RadiantElement {\n static {\n ({\n e: [_init_value, _init_extra_value, _init_label, _init_extra_label, _init_disabled, _init_extra_disabled, _init_selectionMode, _init_extra_selectionMode, _init_embedded, _init_extra_embedded, _init_changeEvent, _init_extra_changeEvent, _init_removeEvent, _init_extra_removeEvent, _init_derivedItems, _init_extra_derivedItems, _initProto],\n c: [_RuiTagGroup, _initClass]\n } = _applyDecs(this, [customElement(\"rui-tag-group\")], [[prop({\n ...multiValuePropOptions,\n defaultValue: []\n }), 0, \"value\"], [prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"label\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"disabled\"], [prop({\n type: String,\n attribute: \"selection-mode\",\n defaultValue: \"multiple\"\n }), 0, \"selectionMode\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"embedded\"], [event({\n name: \"rui-change\",\n bubbles: true,\n composed: true\n }), 0, \"changeEvent\"], [event({\n name: \"rui-remove\",\n bubbles: true,\n composed: true\n }), 0, \"removeEvent\"], [state, 0, \"derivedItems\"], [onUpdated([\"value\", \"label\", \"disabled\", \"selectionMode\", \"embedded\", \"derivedItems\"]), 2, \"onPropsUpdated\"], [onEvent({\n selector: \"[data-tag]\",\n type: \"click\"\n }), 2, \"onTagClick\"], [onEvent({\n selector: \"[data-tag-remove]\",\n type: \"click\"\n }), 2, \"onRemoveClick\"], [onEvent({\n selector: \"[data-tag]\",\n type: \"keydown\"\n }), 2, \"onTagKeydown\"]], 0, void 0, RadiantElement));\n }\n constructor(...args) {\n super(...args);\n _init_extra_derivedItems(this);\n }\n value = (_initProto(this), _init_value(this));\n label = (_init_extra_value(this), _init_label(this));\n disabled = (_init_extra_label(this), _init_disabled(this));\n selectionMode = (_init_extra_disabled(this), _init_selectionMode(this));\n embedded = (_init_extra_selectionMode(this), _init_embedded(this));\n changeEvent = (_init_extra_embedded(this), _init_changeEvent(this));\n removeEvent = (_init_extra_changeEvent(this), _init_removeEvent(this));\n uid = (_init_extra_removeEvent(this), uniqueId(\"rui-tag-group\"));\n derivedItems = _init_derivedItems(this, null);\n isMultiple() {\n return this.selectionMode === \"multiple\";\n }\n getSelectedValues() {\n return this.value;\n }\n setSelectedValues(values) {\n this.value = values;\n }\n getList() {\n const managed = this.querySelector(\"[data-rui-managed-list]\");\n if (managed) {\n return managed;\n }\n if (this.derivedItems != null) {\n return null;\n }\n return this.querySelector(\"[data-tag-list]\");\n }\n getTags() {\n const list = this.getList();\n if (!list) {\n return [];\n }\n return Array.from(list.querySelectorAll(\"[data-tag]\"));\n }\n getVisibleTags() {\n return this.getTags().filter(tag => !tag.hidden && tag.getAttribute(\"aria-disabled\") !== \"true\");\n }\n getTagValue(tag) {\n return tag.getAttribute(\"data-value\") || tag.textContent?.trim() || \"\";\n }\n getTagLabel(tag) {\n return tag.getAttribute(\"data-label\") || tag.textContent?.trim() || \"\";\n }\n ensureTagIds() {\n this.getTags().forEach((tag, index) => {\n if (!tag.id) {\n tag.id = `${this.uid}-tag-${index}`;\n }\n });\n }\n syncList() {\n const list = this.getList();\n if (!list) {\n return;\n }\n if (!list.id) {\n list.id = `${this.uid}-list`;\n }\n list.setAttribute(\"role\", \"list\");\n list.setAttribute(\"aria-label\", this.label || \"Tags\");\n if (this.disabled) {\n list.setAttribute(\"aria-disabled\", \"true\");\n } else {\n list.removeAttribute(\"aria-disabled\");\n }\n }\n syncTags() {\n const selected = new Set(this.getSelectedValues());\n const tags = this.getTags();\n tags.forEach((tag, index) => {\n tag.setAttribute(\"role\", \"listitem\");\n const value = this.getTagValue(tag);\n const isSelected = selected.has(value);\n tag.setAttribute(\"aria-selected\", String(isSelected));\n tag.tabIndex = index === 0 ? 0 : -1;\n const removeButton = tag.querySelector(\"[data-tag-remove]\");\n if (removeButton) {\n removeButton.type = \"button\";\n removeButton.tabIndex = -1;\n removeButton.setAttribute(\"aria-label\", `Remove ${this.getTagLabel(tag)}`);\n }\n });\n }\n selectTag(tag) {\n if (this.disabled || this.embedded || tag.getAttribute(\"aria-disabled\") === \"true\") {\n return;\n }\n const tagValue = this.getTagValue(tag);\n if (this.isMultiple()) {\n const selected = new Set(this.getSelectedValues());\n if (selected.has(tagValue)) {\n selected.delete(tagValue);\n } else {\n selected.add(tagValue);\n }\n this.setSelectedValues([...selected]);\n } else {\n this.value = [tagValue];\n }\n this.syncTags();\n this.changeEvent.emit({\n value: this.value\n });\n }\n removeTag(tag) {\n const tagValue = this.getTagValue(tag);\n const selected = new Set(this.getSelectedValues());\n selected.delete(tagValue);\n this.setSelectedValues([...selected]);\n this.syncTags();\n this.removeEvent.emit({\n value: tagValue\n });\n this.changeEvent.emit({\n value: this.value\n });\n }\n initialize() {\n this.syncManagedList();\n this.ensureTagIds();\n this.syncList();\n this.syncTags();\n }\n onConnected() {\n this.initialize();\n }\n onPropsUpdated() {\n this.syncManagedList();\n this.syncList();\n this.syncTags();\n }\n /**\n * Re-read authored `[data-tag]` children after the parent mutates them in place.\n */\n resync() {\n this.ensureTagIds();\n this.syncList();\n this.syncTags();\n }\n /**\n * Replace authored tags with a CE-owned list. Requires `[data-ref=\"root\"]`.\n *\n * @remarks Hides the authored `[data-tag-list]` and sets `value` to every\n * item. Pass `[]` to clear the managed list.\n */\n setItems(items) {\n this.derivedItems = items;\n this.value = items.map(item => item.value);\n }\n /**\n * Imperative twin of the view's `RuiTag` / `RuiTagRemove` markup for\n * CE-managed items (same `data-*` hooks, classes, and remove icon).\n */\n createManagedTag(item) {\n const tag = document.createElement(\"span\");\n tag.setAttribute(\"data-tag\", \"\");\n tag.setAttribute(\"data-value\", item.value);\n tag.setAttribute(\"data-label\", item.label);\n tag.className = \"rui-tag\";\n tag.textContent = item.label;\n tag.setAttribute(\"aria-label\", item.label);\n const remove = document.createElement(\"button\");\n remove.type = \"button\";\n remove.setAttribute(\"data-tag-remove\", \"\");\n remove.className = \"rui-tag__remove\";\n remove.setAttribute(\"aria-label\", `Remove ${item.label}`);\n remove.append(createRuiIconX());\n tag.append(remove);\n return tag;\n }\n syncManagedList() {\n const root = this.querySelector('[data-ref=\"root\"]');\n if (!root || this.derivedItems == null) {\n return;\n }\n const authored = root.querySelector(\"[data-tag-list]:not([data-rui-managed-list])\");\n authored?.toggleAttribute(\"hidden\", true);\n let managed = root.querySelector(\"[data-rui-managed-list]\");\n if (this.derivedItems.length === 0) {\n managed?.remove();\n return;\n }\n if (!managed) {\n managed = document.createElement(\"div\");\n managed.setAttribute(\"data-tag-list\", \"\");\n managed.setAttribute(\"data-rui-managed-list\", \"\");\n managed.className = \"rui-tag-group__list\";\n root.appendChild(managed);\n }\n managed.replaceChildren(...this.derivedItems.map(item => this.createManagedTag(item)));\n this.ensureTagIds();\n this.syncList();\n this.syncTags();\n }\n onTagClick(event2) {\n const target = event2.target;\n if (target.closest(\"[data-tag-remove]\")) {\n return;\n }\n const tag = target.closest(\"[data-tag]\");\n if (tag && this.contains(tag)) {\n this.selectTag(tag);\n }\n }\n onRemoveClick(event2) {\n event2.stopPropagation();\n const button = event2.target;\n const tag = button.closest(\"[data-tag]\");\n if (tag && this.contains(tag)) {\n this.removeTag(tag);\n }\n }\n onTagKeydown(event2) {\n const tags = this.getVisibleTags();\n const current = event2.target.closest(\"[data-tag]\");\n if (!current) {\n return;\n }\n if (event2.key === \"Enter\" || event2.key === \" \") {\n event2.preventDefault();\n if (!this.embedded) {\n this.selectTag(current);\n }\n return;\n }\n if (event2.key === \"Backspace\" || event2.key === \"Delete\") {\n const removeButton = current.querySelector(\"[data-tag-remove]\");\n if (removeButton) {\n event2.preventDefault();\n this.removeTag(current);\n }\n return;\n }\n const result = navigateRovingTabindex({\n items: tags,\n current,\n key: event2.key,\n orientation: \"horizontal\"\n });\n if (result.handled) {\n event2.preventDefault();\n }\n }\n static {\n _initClass();\n }\n}\nexport { _RuiTagGroup as RuiTagGroup };", "import { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nexport function RuiIconX({\n class: className,\n size = \"sm\",\n ...props\n}) {\n return /* @__PURE__ */jsxs(\"svg\", {\n ...props,\n class: cx(\"rui-icon\", size === \"md\" && \"rui-icon--md\", className),\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"aria-hidden\": \"true\",\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"m18 6-12 12\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"m6 6 12 12\"\n })]\n });\n}\nexport function createRuiIconX() {\n const icon = document.createElementNS(SVG_NAMESPACE, \"svg\");\n icon.setAttribute(\"class\", \"rui-icon\");\n icon.setAttribute(\"viewBox\", \"0 0 24 24\");\n icon.setAttribute(\"fill\", \"none\");\n icon.setAttribute(\"stroke\", \"currentColor\");\n icon.setAttribute(\"stroke-width\", \"2\");\n icon.setAttribute(\"stroke-linecap\", \"round\");\n icon.setAttribute(\"stroke-linejoin\", \"round\");\n icon.setAttribute(\"aria-hidden\", \"true\");\n for (const d of [\"m18 6-12 12\", \"m6 6 12 12\"]) {\n const path = document.createElementNS(SVG_NAMESPACE, \"path\");\n path.setAttribute(\"d\", d);\n icon.append(path);\n }\n return icon;\n}", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}", "export function applyRovingTabindex(items, activeIndex) {\n items.forEach((item, index) => {\n const next = index === activeIndex ? 0 : -1;\n if (item.tabIndex !== next) {\n item.tabIndex = next;\n }\n });\n}\nexport function focusRovingItem(items, index) {\n if (!items.length) return null;\n const next = Math.max(0, Math.min(items.length - 1, index));\n applyRovingTabindex(items, next);\n items[next]?.focus();\n return items[next] ?? null;\n}\nfunction deltaForKey(key, orientation) {\n if (key === \"Home\") return \"first\";\n if (key === \"End\") return \"last\";\n if (orientation === \"horizontal\") {\n if (key === \"ArrowRight\") return \"next\";\n if (key === \"ArrowLeft\") return \"prev\";\n return null;\n }\n if (key === \"ArrowDown\") return \"next\";\n if (key === \"ArrowUp\") return \"prev\";\n return null;\n}\nexport function navigateRovingTabindex(options) {\n const {\n items,\n current,\n key,\n orientation = \"horizontal\",\n wrap = true\n } = options;\n if (!items.length || !current) return {\n handled: false\n };\n const index = items.indexOf(current);\n if (index < 0) return {\n handled: false\n };\n const delta = deltaForKey(key, orientation);\n if (!delta) return {\n handled: false\n };\n let next = index;\n if (delta === \"first\") next = 0;else if (delta === \"last\") next = items.length - 1;else if (delta === \"next\") next = wrap ? (index + 1) % items.length : Math.min(items.length - 1, index + 1);else next = wrap ? (index - 1 + items.length) % items.length : Math.max(0, index - 1);\n const item = focusRovingItem(items, next);\n if (!item) return {\n handled: false\n };\n return {\n handled: true,\n index: next,\n item\n };\n}", "const CSS_SAFE_ID = /^[A-Za-z][A-Za-z0-9_-]*$/;\nexport function isCssSafeId(value) {\n return CSS_SAFE_ID.test(value);\n}\nfunction cssSafePrefix(prefix) {\n const trimmed = prefix.trim();\n if (isCssSafeId(trimmed)) {\n return trimmed;\n }\n const prefixed = `rui-${trimmed}`;\n if (trimmed && isCssSafeId(prefixed)) {\n return prefixed;\n }\n return \"rui\";\n}\nexport function uniqueId(prefix) {\n const token = typeof crypto.randomUUID === \"function\" ? crypto.randomUUID().replace(/-/g, \"\") : Array.from(crypto.getRandomValues(new Uint8Array(16)), byte => byte.toString(16).padStart(2, \"0\")).join(\"\");\n return `${cssSafePrefix(prefix)}-${token}`;\n}", "export function parseMultiValue(value) {\n if (!value) {\n return [];\n }\n return uniqueTrimmed(value.split(\",\"));\n}\nexport function serializeMultiValue(values) {\n return values.join(\",\");\n}\nexport const multiValueTransform = {\n fromAttribute: value => parseMultiValue(value),\n toAttribute: values => values.length > 0 ? serializeMultiValue(values) : null,\n fromProperty: value => {\n if (Array.isArray(value)) {\n return uniqueTrimmed(value.map(String));\n }\n if (typeof value === \"string\") {\n return parseMultiValue(value);\n }\n return [];\n }\n};\nexport const multiValuePropOptions = {\n type: Array,\n reflect: true,\n transform: multiValueTransform\n};\nexport function parseViewValue(value) {\n return multiValueTransform.fromProperty?.(value) ?? [];\n}\nfunction parseNumberArray(value) {\n if (!value) {\n return [];\n }\n return value.split(\",\").map(item => Number(item.trim())).filter(item => Number.isFinite(item));\n}\nfunction serializeNumberArray(values) {\n return values.join(\",\");\n}\nexport const numberArrayTransform = {\n fromAttribute: value => parseNumberArray(value),\n toAttribute: values => values.length > 0 ? serializeNumberArray(values) : null,\n fromProperty: value => {\n if (Array.isArray(value)) {\n return value.map(Number).filter(item => Number.isFinite(item));\n }\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return [value];\n }\n if (typeof value === \"string\") {\n return parseNumberArray(value);\n }\n return [];\n }\n};\nfunction uniqueTrimmed(values) {\n return [...new Set(values.map(item => item.trim()).filter(Boolean))];\n}", "import { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { withDefaultAriaLabel } from \"@/aria\";\nimport { cx } from \"@/lib/cx\";\nimport { RuiIconX } from \"@/lib/icons\";\nimport \"./tag-group.script\";\nexport function RuiTagList({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n \"data-tag-list\": true,\n class: cx(\"rui-tag-group__list\", className),\n children\n });\n}\nexport function RuiTag({\n value,\n label,\n children,\n class: className,\n disabled,\n aria,\n ...props\n}) {\n return /* @__PURE__ */jsxs(\"span\", {\n ...props,\n \"data-tag\": true,\n \"data-value\": value,\n \"data-label\": label,\n class: cx(\"rui-tag\", className),\n aria: withDefaultAriaLabel(aria, label),\n \"aria-disabled\": disabled ? \"true\" : void 0,\n children: [children, /* @__PURE__ */jsx(RuiTagRemove, {})]\n });\n}\nexport function RuiTagRemove({\n children,\n class: className,\n aria,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"button\", {\n ...props,\n aria: withDefaultAriaLabel(aria, \"Remove\"),\n type: \"button\",\n \"data-tag-remove\": true,\n class: cx(\"rui-tag__remove\", className),\n children: children ?? /* @__PURE__ */jsx(RuiIconX, {})\n });\n}\nfunction TagGroupShell({\n children\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n class: \"rui-tag-group\",\n \"data-ref\": \"root\",\n children\n });\n}\nexport function RuiTagGroup({\n tags,\n children,\n value,\n ...props\n}) {\n if (tags != null) {\n return /* @__PURE__ */jsx(\"rui-tag-group\", {\n ...props,\n value,\n children: /* @__PURE__ */jsx(TagGroupShell, {\n children: /* @__PURE__ */jsx(RuiTagList, {\n children: tags.map(tag => /* @__PURE__ */jsx(RuiTag, {\n value: tag.value,\n label: typeof tag.label === \"string\" ? tag.label : void 0,\n disabled: tag.disabled,\n children: tag.label\n }))\n })\n })\n });\n }\n return /* @__PURE__ */jsx(\"rui-tag-group\", {\n ...props,\n value,\n children: /* @__PURE__ */jsx(TagGroupShell, {\n children\n })\n });\n}", "export function withDefaultAriaLabel(aria, fallback) {\n if (fallback === void 0 || aria?.label !== void 0) {\n return aria;\n }\n return {\n ...aria,\n label: fallback\n };\n}"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["RadiantElement", "customElement", "event", "onEvent", "onUpdated", "prop", "state", "jsx", "jsxs", "cx", "parts", "SVG_NAMESPACE", "RuiIconX", "className", "size", "props", "jsxs", "cx", "jsx", "createRuiIconX", "icon", "d", "path", "applyRovingTabindex", "items", "activeIndex", "item", "index", "next", "focusRovingItem", "deltaForKey", "key", "orientation", "navigateRovingTabindex", "options", "current", "wrap", "delta", "CSS_SAFE_ID", "isCssSafeId", "value", "cssSafePrefix", "prefix", "trimmed", "prefixed", "uniqueId", "token", "byte", "parseMultiValue", "value", "uniqueTrimmed", "serializeMultiValue", "values", "multiValueTransform", "multiValuePropOptions", "uniqueTrimmed", "values", "item", "_initProto", "_initClass", "_init_value", "_init_extra_value", "_init_label", "_init_extra_label", "_init_disabled", "_init_extra_disabled", "_init_selectionMode", "_init_extra_selectionMode", "_init_embedded", "_init_extra_embedded", "_init_changeEvent", "_init_extra_changeEvent", "_init_removeEvent", "_init_extra_removeEvent", "_init_derivedItems", "_init_extra_derivedItems", "_applyDecs", "n", "r", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "t", "b", "e", "applyDec", "w", "D", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "_RuiTagGroup", "RuiTagGroup", "RadiantElement", "customElement", "prop", "multiValuePropOptions", "event", "state", "onUpdated", "onEvent", "args", "uniqueId", "values", "managed", "list", "tag", "index", "selected", "value", "isSelected", "removeButton", "tagValue", "items", "item", "remove", "createRuiIconX", "root", "event2", "target", "tags", "current", "navigateRovingTabindex", "jsx", "jsxs", "withDefaultAriaLabel", "aria", "fallback", "RuiTagList", "children", "className", "props", "jsx", "cx", "RuiTag", "value", "label", "disabled", "aria", "jsxs", "withDefaultAriaLabel", "RuiTagRemove", "RuiIconX", "TagGroupShell", "RuiTagGroup", "tags", "tag"]
|
|
7
7
|
}
|
|
@@ -14,15 +14,18 @@ export type RuiTagProps = JsxElementProps<HTMLSpanElement> & {
|
|
|
14
14
|
disabled?: boolean;
|
|
15
15
|
};
|
|
16
16
|
/**
|
|
17
|
-
* A single tag. Stamps `[data-tag]`, `data-value`, and `
|
|
17
|
+
* A single tag. Stamps `[data-tag]`, `data-value`, `data-label`, and `aria-label`
|
|
18
|
+
* (from `label`).
|
|
18
19
|
*
|
|
19
20
|
* @cssclass rui-tag - Tag chip; selected state via `[aria-selected='true']`.
|
|
20
21
|
*
|
|
21
|
-
* @remarks
|
|
22
|
+
* @remarks `listitem` has an author-only accessible name, so the chip needs
|
|
23
|
+
* `aria-label` for assistive tech and `getByRole('listitem', { name })`.
|
|
24
|
+
* Always appends `RuiTagRemove`. For a non-removable tag, stamp
|
|
22
25
|
* `[data-tag]` yourself without `[data-tag-remove]`. Tags built in
|
|
23
26
|
* `createManagedTag` always include a remove control — edit both together.
|
|
24
27
|
*/
|
|
25
|
-
export declare function RuiTag({ value, label, children, class: className, disabled, ...props }: RuiTagProps): JsxRenderable;
|
|
28
|
+
export declare function RuiTag({ value, label, children, class: className, disabled, aria, ...props }: RuiTagProps): JsxRenderable;
|
|
26
29
|
export type RuiTagRemoveProps = JsxElementProps<HTMLButtonElement>;
|
|
27
30
|
/**
|
|
28
31
|
* Remove control inside a tag. Stamps `[data-tag-remove]`.
|
|
@@ -43,6 +46,6 @@ export type RuiTagData = {
|
|
|
43
46
|
*
|
|
44
47
|
* @cssclass rui-tag-group - Root wrapper around the tag list (`data-ref="root"`).
|
|
45
48
|
*/
|
|
46
|
-
export declare function RuiTagGroup({ tags, children, ...props }: JsxCustomElementAttributes<RuiTagGroupElement, RuiTagGroupProps & {
|
|
49
|
+
export declare function RuiTagGroup({ tags, children, value, ...props }: JsxCustomElementAttributes<RuiTagGroupElement, RuiTagGroupProps & {
|
|
47
50
|
tags?: RuiTagData[];
|
|
48
51
|
}>): JsxRenderable;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { RadiantElement } from '@ecopages/radiant';
|
|
2
2
|
import type { EventEmitter } from '@ecopages/radiant/tools/event-emitter';
|
|
3
|
+
import { type ViewMultiValue } from '../shared/multi-value';
|
|
3
4
|
export type RuiTagGroupSelectionMode = 'single' | 'multiple';
|
|
4
5
|
export type RuiTagGroupItem = {
|
|
5
6
|
value: string;
|
|
6
7
|
label: string;
|
|
7
8
|
};
|
|
8
9
|
export type RuiTagGroupProps = {
|
|
9
|
-
value?:
|
|
10
|
+
value?: ViewMultiValue;
|
|
10
11
|
label?: string;
|
|
11
12
|
disabled?: boolean;
|
|
12
13
|
selectionMode?: RuiTagGroupSelectionMode;
|
|
@@ -14,7 +15,7 @@ export type RuiTagGroupProps = {
|
|
|
14
15
|
embedded?: boolean;
|
|
15
16
|
};
|
|
16
17
|
export type RuiTagGroupChangeDetail = {
|
|
17
|
-
value: string;
|
|
18
|
+
value: string[];
|
|
18
19
|
};
|
|
19
20
|
export type RuiTagGroupRemoveDetail = {
|
|
20
21
|
value: string;
|
|
@@ -54,12 +55,12 @@ export type RuiTagGroupRemoveDetail = {
|
|
|
54
55
|
*
|
|
55
56
|
* @see https://react-aria.adobe.com/TagGroup
|
|
56
57
|
* @element rui-tag-group
|
|
57
|
-
* @attr {string} value - Comma-separated selected values
|
|
58
|
+
* @attr {string} value - Comma-separated selected values in markup; the property is `string[]`. Default: `[]`.
|
|
58
59
|
* @attr {string} label - Accessible name for the tag list.
|
|
59
60
|
* @attr {boolean} disabled - Disable selection and removal. Default: `false`.
|
|
60
61
|
* @attr {('single'|'multiple')} selection-mode - Allow one or many selected tags. Default: `multiple`.
|
|
61
62
|
* @attr {boolean} embedded - Disables selection when the parent component owns the selected values. Default: `false`.
|
|
62
|
-
* @fires rui-change - Emitted when the selected `value` changes; `detail.value` is
|
|
63
|
+
* @fires rui-change - Emitted when the selected `value` changes; `detail.value` is `string[]`.
|
|
63
64
|
* @fires rui-remove - Emitted when a tag is removed; `detail.value` is the removed tag's value.
|
|
64
65
|
*
|
|
65
66
|
* @remarks
|
|
@@ -68,9 +69,10 @@ export type RuiTagGroupRemoveDetail = {
|
|
|
68
69
|
* authored list and paints chips into `[data-rui-managed-list]` (do not author that
|
|
69
70
|
* marker). `resync()` re-reads authored children after in-place mutations.
|
|
70
71
|
* BEM classes live on the view helpers; the host never queries them.
|
|
72
|
+
* Not form-associated: wrap in `rui-field` and read `RuiForm` `onSubmit`.
|
|
71
73
|
*/
|
|
72
74
|
export declare class RuiTagGroup extends RadiantElement {
|
|
73
|
-
value: string;
|
|
75
|
+
value: string[];
|
|
74
76
|
label: string;
|
|
75
77
|
disabled: boolean;
|
|
76
78
|
selectionMode: RuiTagGroupSelectionMode;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as x}from"@ecopages/jsx/jsx-runtime";function u(...e){return e.filter(Boolean).join(" ")}function o(e){return e?c(e.split(",")):[]}function g(e){return e.join(",")}var s={fromAttribute:e=>o(e),toAttribute:e=>e.length>0?g(e):null,fromProperty:e=>Array.isArray(e)?c(e.map(String)):typeof e=="string"?o(e):[]};function a(e){return e?e.split(",").map(t=>Number(t.trim())).filter(t=>Number.isFinite(t)):[]}function h(e){return e.join(",")}var l={fromAttribute:e=>a(e),toAttribute:e=>e.length>0?h(e):null,fromProperty:e=>Array.isArray(e)?e.map(Number).filter(t=>Number.isFinite(t)):typeof e=="number"&&Number.isFinite(e)?[e]:typeof e=="string"?a(e):[]};function c(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))]}var m="data-rui-control";var n={read:e=>{let t=Reflect.get(e,"value");return typeof t=="string"?t:e.getAttribute("value")??""},write:(e,t)=>{let r=t==null?"":String(t);e.setAttribute("value",r),"value"in e&&Reflect.set(e,"value",r)}},f={read:e=>{let t=Reflect.get(e,"value");if(typeof t=="number")return t;let r=e.getAttribute("value");return r==null||r===""?"":Number(r)},write:(e,t)=>{let r=t==null?"":String(t);e.setAttribute("value",r),"value"in e&&Reflect.set(e,"value",t)}},d={read:e=>e.querySelector('input[type="checkbox"]')?.checked??e.hasAttribute("checked"),write:(e,t)=>{t?e.setAttribute("checked",""):e.removeAttribute("checked")}};function p(e,t){let r=Reflect.get(e,"value");return r!==void 0&&t.fromProperty?t.fromProperty(r):t.fromAttribute?t.fromAttribute(e.getAttribute("value")):r}function A(e,t){Reflect.set(e,"value",t)}var i={read:e=>p(e,s),write:A},y={read:e=>p(e,l),write:A},N=new Map([["rui-checkbox",d],["rui-switch",d],["rui-combobox",{...i,submission:"none"}],["rui-date-field",n],["rui-date-input",{...n,submission:"host"}],["rui-date-range-picker",n],["rui-select",{...i,submission:"none"}],["rui-radio-group",n],["rui-checkbox-group",i],["rui-listbox",i],["rui-tag-group",i],["rui-slider",{...y,submission:"host"}],["rui-knob",{...f,submission:"host"}],["rui-number-field",{...f,submission:"host"}]]);function R(e){let{class:t,rows:r=3,...b}=e;return x("textarea",{...b,rows:r,[m]:"","data-rui-control-type":"text",class:u("rui-textarea",t)})}export{R as RuiTextarea};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/components/ui/textarea/textarea.tsx", "../../../../src/lib/cx.ts", "../../../../src/components/ui/form/control-protocol.ts"],
|
|
4
|
-
"sourcesContent": ["import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport { RUI_CONTROL_ATTR } from \"../form/control-protocol\";\nexport function RuiTextarea(props) {\n const {\n class: className,\n rows = 3,\n ...host\n } = props;\n return /* @__PURE__ */jsx(\"textarea\", {\n ...host,\n rows,\n ...{\n [RUI_CONTROL_ATTR]: \"\"\n },\n \"data-rui-control-type\": \"text\",\n class: cx(\"rui-textarea\", className)\n });\n}", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\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 FIELD_COLUMN_SELECTOR = '[data-ref=\"field\"]';\nconst HOST_CONTROL_TAGS = /* @__PURE__ */new Set([\"rui-combobox\", \"rui-date-field\", \"rui-date-range-picker\", \"rui-select\", \"rui-tag-group\", \"rui-checkbox\", \"rui-checkbox-group\", \"rui-switch\", \"rui-radio-group\", \"rui-slider\", \"rui-knob\", \"rui-number-field\", \"rui-listbox\"]);\nconst CONTROL_SELECTOR = `[${RUI_CONTROL_ATTR}], ${Array.from(HOST_CONTROL_TAGS).join(\", \")}`;\nconst ARIA_TARGET_SELECTORS = {\n \"rui-combobox\": \"[data-combobox-input]\",\n \"rui-date-field\": \"[data-date-field-input]\",\n \"rui-date-range-picker\": \"[data-range-start]\",\n \"rui-select\": \"[data-select-trigger]\",\n \"rui-tag-group\": \"[data-tag-list]\",\n \"rui-number-field\": \"[data-number-field-input], input\",\n \"rui-knob\": \"[data-knob-control]\",\n \"rui-checkbox\": \"input\",\n \"rui-checkbox-group\": \"[data-checkbox-group-root]\",\n \"rui-switch\": \"input\"\n};\nexport function isNativeTextControl(node) {\n return node.localName === \"input\" || node.localName === \"textarea\";\n}\nfunction isNativeInput(node) {\n return node.localName === \"input\";\n}\nfunction isNativeTextarea(node) {\n return node.localName === \"textarea\";\n}\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};\nfunction readNumberProperty(host, property, attribute) {\n const value = Reflect.get(host, property);\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n const raw = host.getAttribute(attribute);\n return raw == null || raw === \"\" ? \"\" : Number(raw);\n}\nfunction isRangeSlider(host) {\n const variant = Reflect.get(host, \"variant\");\n return variant === \"range\" || host.getAttribute(\"variant\") === \"range\";\n}\nconst sliderValueAdapter = {\n read: host => {\n if (isRangeSlider(host)) {\n return [readNumberProperty(host, \"rangeMin\", \"range-min\"), readNumberProperty(host, \"rangeMax\", \"range-max\")];\n }\n return numberValueAdapter.read(host);\n },\n write: (host, value) => {\n if (Array.isArray(value) && value.length >= 2) {\n host.setAttribute(\"variant\", \"range\");\n if (\"variant\" in host) {\n Reflect.set(host, \"variant\", \"range\");\n }\n host.setAttribute(\"range-min\", String(value[0]));\n host.setAttribute(\"range-max\", String(value[1]));\n if (\"rangeMin\" in host) {\n Reflect.set(host, \"rangeMin\", value[0]);\n }\n if (\"rangeMax\" in host) {\n Reflect.set(host, \"rangeMax\", value[1]);\n }\n return;\n }\n numberValueAdapter.write(host, value);\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-checkbox-group\", stringValueAdapter], [\"rui-listbox\", stringValueAdapter], [\"rui-tag-group\", stringValueAdapter], [\"rui-slider\", sliderValueAdapter], [\"rui-knob\", 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(FIELD_COLUMN_SELECTOR) ?? 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(FIELD_COLUMN_SELECTOR);\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(FIELD_COLUMN_SELECTOR) ?? 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}]`) || HOST_CONTROL_TAGS.has(node.localName)) {\n return node;\n }\n return node.querySelector(CONTROL_SELECTOR);\n}\nexport function readControlValue(control) {\n if (isNativeInput(control)) {\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 (isNativeTextarea(control)) {\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 (isNativeInput(control)) {\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 (isNativeTextarea(control)) {\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}]`);\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(FIELD_COLUMN_SELECTOR);\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 && isNativeTextControl(ariaTarget)) {\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}\nfunction isChecked(input) {\n const checked = Reflect.get(input, \"checked\");\n return typeof checked === \"boolean\" ? checked : input.hasAttribute(\"checked\");\n}\nexport function getAriaControlTarget(control) {\n if (isNativeTextControl(control)) {\n return control;\n }\n if (control.hasAttribute(RUI_CONTROL_ATTR)) {\n return control;\n }\n if (control.localName === \"rui-slider\") {\n return control.querySelector(\"[data-thumb]:not([hidden])\") ?? control;\n }\n const marked = control.querySelector(`[${RUI_CONTROL_ATTR}]`);\n if (marked) {\n return marked;\n }\n if (control.localName === \"rui-radio-group\") {\n return getSelectedRadio(control) ?? control;\n }\n const selector = ARIA_TARGET_SELECTORS[control.localName];\n return selector ? control.querySelector(selector) ?? control : control;\n}\nfunction getSelectedRadio(control) {\n const radios = control.querySelectorAll('input[type=\"radio\"]');\n return Array.from(radios).find(isChecked) ?? radios[0];\n}\nexport function getAriaControlTargets(control) {\n if (control.localName === \"rui-slider\") {\n const thumbs = Array.from(control.querySelectorAll(\"[data-thumb]:not([hidden])\"));\n return thumbs.length > 0 ? thumbs : [control];\n }\n return [getAriaControlTarget(control)];\n}"],
|
|
5
|
-
"mappings": "AAAA,OAAS,OAAAA,MAAW,4BCAb,SAASC,KAAMC,EAAO,CAC3B,OAAOA,EAAM,OAAO,OAAO,EAAE,KAAK,GAAG,CACvC,CCFO,IAAMC,EAAmB,
|
|
6
|
-
"names": ["jsx", "cx", "parts", "
|
|
3
|
+
"sources": ["../../../../src/components/ui/textarea/textarea.tsx", "../../../../src/lib/cx.ts", "../../../../src/components/ui/shared/multi-value.ts", "../../../../src/components/ui/form/control-protocol.ts"],
|
|
4
|
+
"sourcesContent": ["import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport { RUI_CONTROL_ATTR } from \"../form/control-protocol\";\nexport function RuiTextarea(props) {\n const {\n class: className,\n rows = 3,\n ...host\n } = props;\n return /* @__PURE__ */jsx(\"textarea\", {\n ...host,\n rows,\n ...{\n [RUI_CONTROL_ATTR]: \"\"\n },\n \"data-rui-control-type\": \"text\",\n class: cx(\"rui-textarea\", className)\n });\n}", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}", "export function parseMultiValue(value) {\n if (!value) {\n return [];\n }\n return uniqueTrimmed(value.split(\",\"));\n}\nexport function serializeMultiValue(values) {\n return values.join(\",\");\n}\nexport const multiValueTransform = {\n fromAttribute: value => parseMultiValue(value),\n toAttribute: values => values.length > 0 ? serializeMultiValue(values) : null,\n fromProperty: value => {\n if (Array.isArray(value)) {\n return uniqueTrimmed(value.map(String));\n }\n if (typeof value === \"string\") {\n return parseMultiValue(value);\n }\n return [];\n }\n};\nexport const multiValuePropOptions = {\n type: Array,\n reflect: true,\n transform: multiValueTransform\n};\nexport function parseViewValue(value) {\n return multiValueTransform.fromProperty?.(value) ?? [];\n}\nfunction parseNumberArray(value) {\n if (!value) {\n return [];\n }\n return value.split(\",\").map(item => Number(item.trim())).filter(item => Number.isFinite(item));\n}\nfunction serializeNumberArray(values) {\n return values.join(\",\");\n}\nexport const numberArrayTransform = {\n fromAttribute: value => parseNumberArray(value),\n toAttribute: values => values.length > 0 ? serializeNumberArray(values) : null,\n fromProperty: value => {\n if (Array.isArray(value)) {\n return value.map(Number).filter(item => Number.isFinite(item));\n }\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return [value];\n }\n if (typeof value === \"string\") {\n return parseNumberArray(value);\n }\n return [];\n }\n};\nfunction uniqueTrimmed(values) {\n return [...new Set(values.map(item => item.trim()).filter(Boolean))];\n}", "import { multiValueTransform, numberArrayTransform } from \"../shared/multi-value\";\nexport 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\";\nexport const RUI_ARIA_TARGET_ATTR = \"data-rui-aria-target\";\nexport const RUI_ARIA_TARGETS_ATTR = \"data-rui-aria-targets\";\nconst FIELD_COLUMN_SELECTOR = '[data-ref=\"field\"]';\nfunction fieldControlSelector() {\n return `[${RUI_CONTROL_ATTR}], ${hostControlSelector()}`;\n}\nfunction hostControlSelector() {\n return Array.from(CONTROL_VALUE_ADAPTERS.keys()).join(\", \");\n}\nfunction isEmbeddedListbox(node) {\n return node.localName === \"rui-listbox\" && (node.hasAttribute(\"embedded\") || Reflect.get(node, \"embedded\") === true);\n}\nconst ARIA_TARGET_SELECTORS = {\n \"rui-combobox\": \"[data-combobox-input]\",\n \"rui-select\": \"[data-select-trigger]\",\n \"rui-tag-group\": \"[data-tag-list]\",\n \"rui-number-field\": \"[data-number-field-input], input\",\n \"rui-knob\": \"[data-knob-control]\",\n \"rui-checkbox\": \"input\",\n \"rui-checkbox-group\": \"[data-checkbox-group-root]\",\n \"rui-switch\": \"input\"\n};\nexport function isNativeTextControl(node) {\n return node.localName === \"input\" || node.localName === \"textarea\";\n}\nfunction isNativeInput(node) {\n return node.localName === \"input\";\n}\nfunction isNativeTextarea(node) {\n return node.localName === \"textarea\";\n}\nexport function isFormAssociatedHost(host) {\n return Reflect.get(host.constructor, \"formAssociated\") === true;\n}\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};\nfunction readHostValue(host, transform) {\n const value = Reflect.get(host, \"value\");\n if (value !== void 0 && transform.fromProperty) {\n return transform.fromProperty(value);\n }\n if (transform.fromAttribute) {\n return transform.fromAttribute(host.getAttribute(\"value\"));\n }\n return value;\n}\nfunction writeHostValue(host, value) {\n Reflect.set(host, \"value\", value);\n}\nconst stringArrayValueAdapter = {\n read: host => readHostValue(host, multiValueTransform),\n write: writeHostValue\n};\nconst sliderValueAdapter = {\n read: host => readHostValue(host, numberArrayTransform),\n write: writeHostValue\n};\nconst CONTROL_VALUE_ADAPTERS = /* @__PURE__ */new Map([[\"rui-checkbox\", booleanValueAdapter], [\"rui-switch\", booleanValueAdapter], [\"rui-combobox\", {\n ...stringArrayValueAdapter,\n submission: \"none\"\n}], [\"rui-date-field\", stringValueAdapter], [\"rui-date-input\", {\n ...stringValueAdapter,\n submission: \"host\"\n}], [\"rui-date-range-picker\", stringValueAdapter], [\"rui-select\", {\n ...stringArrayValueAdapter,\n submission: \"none\"\n}], [\"rui-radio-group\", stringValueAdapter], [\"rui-checkbox-group\", stringArrayValueAdapter], [\"rui-listbox\", stringArrayValueAdapter], [\"rui-tag-group\", stringArrayValueAdapter], [\"rui-slider\", {\n ...sliderValueAdapter,\n submission: \"host\"\n}], [\"rui-knob\", {\n ...numberValueAdapter,\n submission: \"host\"\n}], [\"rui-number-field\", {\n ...numberValueAdapter,\n submission: \"host\"\n}]]);\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(FIELD_COLUMN_SELECTOR) ?? 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 const eligibleCandidates = candidates.filter(candidate => !isEmbeddedListbox(candidate));\n if (eligibleCandidates.length === 0) {\n return null;\n }\n return eligibleCandidates.find(candidate => !eligibleCandidates.some(ancestor => ancestor !== candidate && ancestor.contains(candidate))) ?? null;\n}\nfunction collectFieldControls(root) {\n const candidates = [];\n forEachFieldContentNode(root, node => {\n if (node instanceof HTMLElement && node.matches(fieldControlSelector())) {\n candidates.push(node);\n }\n });\n return candidates;\n}\nfunction listFieldControlsInRenderTree(root) {\n const renderRoot = root.querySelector(FIELD_COLUMN_SELECTOR);\n if (!(renderRoot instanceof HTMLElement)) {\n return [];\n }\n return Array.from(renderRoot.querySelectorAll(fieldControlSelector())).filter(el => root.contains(el));\n}\nexport function findFieldControl(root) {\n const fromRenderTree = pickPrimaryFieldControl(listFieldControlsInRenderTree(root));\n if (fromRenderTree) {\n return fromRenderTree;\n }\n return pickPrimaryFieldControl(collectFieldControls(root));\n}\nexport function registerFieldControl(tagName, adapter) {\n const tag = tagName.toLowerCase();\n CONTROL_VALUE_ADAPTERS.set(tag, adapter);\n}\nexport function isPrimaryFieldControlEvent(root, event) {\n const control = findFieldControl(root);\n if (!control || !(event.target instanceof Element)) {\n return false;\n }\n if (event.target !== control && !control.contains(event.target)) {\n return false;\n }\n const nestedHost = event.target.closest(hostControlSelector());\n return nestedHost === control || nestedHost == null;\n}\nexport function readControlValue(control) {\n if (isNativeInput(control)) {\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 (isNativeTextarea(control)) {\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 (isNativeInput(control)) {\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 (isNativeTextarea(control)) {\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(hostControlSelector());\n return host ?? control;\n }\n return control;\n}\nexport function findFieldLabel(root) {\n return queryFieldContent(root, `[${RUI_FIELD_LABEL_ATTR}]`);\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(FIELD_COLUMN_SELECTOR);\n if (renderRoot instanceof HTMLElement) {\n const inRender = Array.from(renderRoot.querySelectorAll(`[${RUI_FIELD_ERROR_ATTR}]`));\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 (ariaTarget && isNativeTextControl(ariaTarget)) {\n const submission = controlHost && CONTROL_VALUE_ADAPTERS.get(controlHost.localName)?.submission;\n const namesInner = controlHost == null || controlHost === ariaTarget || !isFormAssociatedHost(controlHost) && submission !== \"host\" && submission !== \"none\";\n if (namesInner && name) {\n ariaTarget.name = name;\n } else {\n ariaTarget.removeAttribute(\"name\");\n }\n }\n if (controlHost && CONTROL_VALUE_ADAPTERS.has(controlHost.localName)) {\n Reflect.set(controlHost, \"name\", name);\n if (name) controlHost.setAttribute(\"name\", name);else controlHost.removeAttribute(\"name\");\n }\n}\nfunction isChecked(input) {\n const checked = Reflect.get(input, \"checked\");\n return typeof checked === \"boolean\" ? checked : input.hasAttribute(\"checked\");\n}\nfunction resolveDeclaredAriaTarget(control) {\n const multi = control.getAttribute(RUI_ARIA_TARGETS_ATTR);\n if (multi) {\n const firstSelector = multi.split(\",\")[0]?.trim();\n if (firstSelector) {\n return control.querySelector(firstSelector);\n }\n }\n const single = control.getAttribute(RUI_ARIA_TARGET_ATTR);\n if (single) {\n return control.querySelector(single);\n }\n return null;\n}\nfunction resolveDeclaredAriaTargets(control) {\n const multi = control.getAttribute(RUI_ARIA_TARGETS_ATTR);\n if (multi) {\n return multi.split(\",\").map(selector => selector.trim()).filter(selector => selector !== \"\").map(selector => control.querySelector(selector)).filter(node => node != null);\n }\n const single = control.getAttribute(RUI_ARIA_TARGET_ATTR);\n if (single) {\n const target = control.querySelector(single);\n return target ? [target] : [];\n }\n return [];\n}\nexport function getAriaControlTarget(control) {\n if (isNativeTextControl(control)) {\n return control;\n }\n const declared = resolveDeclaredAriaTarget(control);\n if (declared) {\n return declared;\n }\n if (control.hasAttribute(RUI_CONTROL_ATTR)) {\n return control;\n }\n if (control.localName === \"rui-slider\") {\n const thumb = Array.from(control.querySelectorAll(\"[data-thumb]\")).find(node => !node.hasAttribute(\"hidden\"));\n return thumb ?? control;\n }\n const marked = control.querySelector(`[${RUI_CONTROL_ATTR}]`);\n if (marked) {\n return marked;\n }\n if (control.localName === \"rui-radio-group\") {\n return getSelectedRadio(control) ?? control;\n }\n const selector = ARIA_TARGET_SELECTORS[control.localName];\n return selector ? control.querySelector(selector) ?? control : control;\n}\nfunction getSelectedRadio(control) {\n const radios = control.querySelectorAll('input[type=\"radio\"]');\n return Array.from(radios).find(isChecked) ?? radios[0];\n}\nexport function getAriaControlTargets(control) {\n const declared = resolveDeclaredAriaTargets(control);\n if (declared.length > 0) {\n return declared;\n }\n if (control.localName === \"rui-slider\") {\n const thumbs = Array.from(control.querySelectorAll(\"[data-thumb]\")).filter(node => !node.hasAttribute(\"hidden\"));\n return thumbs.length > 0 ? thumbs : [control];\n }\n return [getAriaControlTarget(control)];\n}"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["jsx", "cx", "parts", "parseMultiValue", "value", "uniqueTrimmed", "serializeMultiValue", "values", "multiValueTransform", "parseNumberArray", "value", "item", "serializeNumberArray", "values", "numberArrayTransform", "uniqueTrimmed", "RUI_CONTROL_ATTR", "stringValueAdapter", "host", "value", "next", "numberValueAdapter", "raw", "booleanValueAdapter", "readHostValue", "transform", "writeHostValue", "stringArrayValueAdapter", "multiValueTransform", "sliderValueAdapter", "numberArrayTransform", "CONTROL_VALUE_ADAPTERS", "RuiTextarea", "props", "className", "rows", "host", "jsx", "RUI_CONTROL_ATTR", "cx"]
|
|
7
7
|
}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
border-radius: var(--radius-control);
|
|
15
15
|
padding-inline: var(--space-control-x);
|
|
16
16
|
padding-block: var(--space-control-y);
|
|
17
|
-
font-size: var(--text-control
|
|
17
|
+
font-size: var(--text-control-input);
|
|
18
18
|
min-height: calc(var(--space-control-y) * 2 + 1.25rem * 3);
|
|
19
19
|
transition-duration: var(--duration-normal);
|
|
20
20
|
}
|