@sectile/vue 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accordion.d.ts +12 -0
- package/dist/accordion.js +1 -1
- package/dist/accordion.js.map +1 -1
- package/dist/carousel.d.ts +13 -0
- package/dist/carousel.js +1 -1
- package/dist/carousel.js.map +1 -1
- package/dist/cascade-list.d.ts +11 -1
- package/dist/cascade-list.js +1 -1
- package/dist/cascade-list.js.map +1 -1
- package/dist/cascade-select.d.ts +11 -1
- package/dist/cascade-select.js +1 -1
- package/dist/cascade-select.js.map +1 -1
- package/dist/checkbox-group.d.ts +9 -0
- package/dist/checkbox.d.ts +11 -1
- package/dist/checkbox.js +1 -1
- package/dist/checkbox.js.map +1 -1
- package/dist/combobox.d.ts +12 -0
- package/dist/combobox.js +1 -1
- package/dist/combobox.js.map +1 -1
- package/dist/disclosure.d.ts +11 -1
- package/dist/disclosure.js +1 -1
- package/dist/disclosure.js.map +1 -1
- package/dist/form.d.ts +6 -48
- package/dist/form.js +1 -1
- package/dist/form.js.map +1 -1
- package/dist/internal/cascade-choice.d.ts +13 -0
- package/dist/internal/cascade-choice.js +1 -1
- package/dist/internal/cascade-choice.js.map +1 -1
- package/dist/internal/conditional-presence.d.ts +23 -0
- package/dist/internal/conditional-presence.js +2 -0
- package/dist/internal/conditional-presence.js.map +1 -0
- package/dist/internal/date-picker.js +1 -1
- package/dist/internal/date-picker.js.map +1 -1
- package/dist/internal/form-context.d.ts +22 -0
- package/dist/internal/form-context.js +2 -0
- package/dist/internal/form-context.js.map +1 -0
- package/dist/internal/form-presence-parts.d.ts +69 -0
- package/dist/internal/form-presence-parts.js +2 -0
- package/dist/internal/form-presence-parts.js.map +1 -0
- package/dist/internal/tabular-parts.js +1 -1
- package/dist/internal/tabular-parts.js.map +1 -1
- package/dist/listbox.d.ts +12 -0
- package/dist/listbox.js +1 -1
- package/dist/listbox.js.map +1 -1
- package/dist/navigation-menu.d.ts +15 -0
- package/dist/navigation-menu.js +1 -1
- package/dist/navigation-menu.js.map +1 -1
- package/dist/radio-group.d.ts +11 -1
- package/dist/radio-group.js +1 -1
- package/dist/radio-group.js.map +1 -1
- package/dist/rating.d.ts +9 -0
- package/dist/select.d.ts +12 -0
- package/dist/select.js +1 -1
- package/dist/select.js.map +1 -1
- package/dist/stepper.d.ts +9 -0
- package/dist/tabs.d.ts +11 -1
- package/dist/tabs.js +1 -1
- package/dist/tabs.js.map +1 -1
- package/dist/tree-grid.d.ts +14 -0
- package/dist/tree-grid.js +1 -1
- package/dist/tree-grid.js.map +1 -1
- package/dist/tree-view.d.ts +11 -1
- package/dist/tree-view.js +1 -1
- package/dist/tree-view.js.map +1 -1
- package/package.json +11 -11
package/dist/select.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Teleport,computed,defineComponent,h,inject,mergeProps,nextTick,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{stableIDElementToken}from"@sectile/dom/identity";import{createSelect}from"@sectile/dom/select";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./internal/native-input.js";import{hiddenSelectSubmissionCapabilities,useCompositeFormControl}from"./internal/form-control.js";import{useHostId,useHostPortalTarget}from"./host-provider.js";import{usePresence}from"./internal/presence.js";import{reconcileCollectionState}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const rootKey=Symbol("SectileSelectRoot");const itemKey=Symbol("SectileSelectItem");const partProps={as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}};const SelectRoot=defineComponent({name:"SectileSelectRoot",inheritAttrs:false,props:{items:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:false},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:void 0},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},textValue:{type:Function,default:void 0},typeaheadTimeoutMs:{type:Number,default:700},position:{type:Boolean,default:true},side:{type:String,default:"bottom"},align:{type:String,default:"start"},sideOffset:{type:Number,default:8},collisionPadding:{type:[Number,Object],default:8},collisionBoundary:{type:[String,Object],default:void 0},avoidCollisions:{type:Boolean,default:true},hideWhenDetached:{type:Boolean,default:false},strategy:{type:String,default:"absolute"},tracking:{type:String,default:"events"},unmountOnExit:{type:Boolean,default:false},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:open":_value=>true,highlight:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const root=shallowRef();const trigger=shallowRef();const popup=shallowRef();const submissionElement=shallowRef(null);const participation=useCompositeFormControl({root:()=>root.value??null,focusTarget:()=>trigger.value??root.value??null,submissions:[{element:submissionElement,capabilities:hiddenSelectSubmissionCapabilities}]});const connection=shallowRef();const id=useHostId();const contentID=`sectile-select-${id}-content`;const itemID=value=>`${contentID}-item-${stableIDElementToken(value)}`;const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localOpen=shallowRef(props.open??props.defaultOpen);const highlighted=shallowRef(localValue.value);const valueControlled=useControlledStateInvariant("SelectRoot","modelValue",()=>props.modelValue);const openControlled=useControlledStateInvariant("SelectRoot","open",()=>props.open);const unmountOnExit=computed(()=>props.unmountOnExit);const position=computed(()=>props.position);const strategy=computed(()=>props.strategy);const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,highlightedValue:highlighted.value,open:props.open??localOpen.value,disabled:props.disabled,readonly:props.readonly}));const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.choice.selection.selected[0]??null;highlighted.value=snapshot.choice.cursor.current;localOpen.value=snapshot.open;refreshItems()};const refreshItems=()=>{if(popup.value===void 0||connection.value===void 0)return;popup.value.querySelectorAll("[data-sectile-select-id]").forEach(element=>{const id2=element.dataset["sectileSelectId"];if(id2!==void 0)connection.value?.setItemAttributes(element,id2,props.disabledItems.includes(id2))})};const connect=()=>{connection.value?.disconnect();if(root.value===void 0||trigger.value===void 0||popup.value===void 0)return;const requestedValue=valueControlled?props.modelValue:localValue.value;const reconciled=reconcileCollectionState(props.items,requestedValue===null?[]:[requestedValue],highlighted.value,props.disabledItems,"single",{preserveNullCurrent:true});const value=reconciled.selected[0]??null;localValue.value=value;highlighted.value=reconciled.current;if(valueControlled&&requestedValue!==value)emit("update:modelValue",value);connection.value=createSelect({root:root.value,trigger:trigger.value,popup:popup.value,items:props.items,disabledItems:props.disabledItems,textValue:props.textValue??(value2=>value2),typeaheadTimeoutMs:props.typeaheadTimeoutMs,position:props.position,side:props.side,align:props.align,sideOffset:props.sideOffset,collisionPadding:props.collisionPadding,...props.collisionBoundary===void 0?{}:{collisionBoundary:props.collisionBoundary},avoidCollisions:props.avoidCollisions,hideWhenDetached:props.hideWhenDetached,strategy:props.strategy,tracking:props.tracking,manageVisibility:false,...props.policies===void 0?{}:{policies:props.policies},...valueControlled?{value}:{defaultValue:value},defaultHighlightedValue:reconciled.current,...openControlled?{open:props.open}:{defaultOpen:localOpen.value},disabled:props.disabled,readOnly:props.readonly,...props.label===void 0?{}:{label:props.label},onValueChange:next=>{localValue.value=next;emit("update:modelValue",next)},onHighlightedValueChange:next=>{highlighted.value=next;emit("highlight",next)},onOpenChange:next=>{localOpen.value=next;emit("update:open",next)},onUpdate:refresh});refreshItems();refresh()};let mounted=false;let connectScheduled=false;const scheduleConnect=()=>{if(!mounted||connectScheduled||props.unmountOnExit&&!state.value.open)return;connectScheduled=true;void nextTick(()=>{connectScheduled=false;if(mounted)connect()})};provide(rootKey,{state,unmountOnExit,position,strategy,label:computed(()=>props.label),textValue:computed(()=>props.textValue??(id2=>id2)),contentID,itemID,disabledItems:computed(()=>new Set(props.disabledItems)),registerTrigger:element=>{trigger.value=element;if(element===void 0){connection.value?.disconnect();connection.value=void 0}else scheduleConnect()},registerPopup:element=>{popup.value=element;if(element===void 0){connection.value?.disconnect();connection.value=void 0}else scheduleConnect()},registerItem:(element,id2,disabled)=>connection.value?.setItemAttributes(element,id2,disabled),activateTrigger:event=>{if(event?.defaultPrevented===true||connection.value!==void 0||props.disabled||state.value.open)return;if(!openControlled)localOpen.value=true;emit("update:open",true)},refresh:()=>connection.value?.refresh()});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;connection.value?.disconnect()});watch([()=>props.items,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.textValue,()=>props.typeaheadTimeoutMs,()=>props.position,()=>props.side,()=>props.align,()=>props.sideOffset,()=>props.collisionPadding,()=>props.collisionBoundary,()=>props.avoidCollisions,()=>props.hideWhenDetached,()=>props.strategy,()=>props.tracking,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.open],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...valueControlled?{value:props.modelValue}:{},...openControlled?{open:props.open}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>{const visual=h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{root.value=node instanceof HTMLElement?node:void 0;scheduleConnect()},"data-scope":"select","data-part":"root","data-state":state.value.open?"open":"closed"},participation.controlProps.value),{default:()=>slots["default"]?.(state.value)});if(!participation.participating&&props.name===void 0&&props.form===void 0&&!props.required)return visual;return[visual,h("select",{ref:submissionElement,name:props.name,form:props.form,required:props.required,disabled:props.disabled,value:state.value.value??"",tabindex:-1,"aria-hidden":"true",style:visuallyHiddenInputStyle},[h("option",{value:""}),...props.items.map(id2=>h("option",{value:id2,disabled:props.disabledItems.includes(id2)},props.textValue?.(id2)??id2))])]}}});const SelectTrigger=defineComponent({name:"SectileSelectTrigger",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("SelectTrigger");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>root.registerTrigger(node instanceof HTMLButtonElement?node:void 0),onClick:root.activateTrigger,type:props.as==="button"?"button":void 0,disabled:root.state.value.disabled,"aria-haspopup":"listbox","aria-expanded":String(root.state.value.open),"aria-controls":root.contentID,"aria-label":root.label.value,"data-scope":"select","data-part":"trigger","data-state":root.state.value.open?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}});const SelectValue=defineComponent({name:"SectileSelectValue",inheritAttrs:false,props:{placeholder:{type:String,default:""},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("SelectValue");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"select","data-part":"value","data-placeholder":root.state.value.value===null?"":void 0}),{default:()=>slots["default"]?.(root.state.value)??(root.state.value.value===null?props.placeholder:root.textValue.value(root.state.value.value))})}});const SelectContent=defineComponent({name:"SectileSelectContent",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("SelectContent");const element=shallowRef();const open=computed(()=>root.state.value.open);const present=usePresence(open,element);watch(present,async()=>{await nextTick();root.refresh()},{flush:"post"});return()=>{if(root.unmountOnExit.value&&!present.value)return null;const exiting=!root.state.value.open&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{const content=node instanceof HTMLElement?node:void 0;element.value=content;root.registerPopup(content)},id:root.contentID,role:"listbox",hidden:!present.value,"aria-label":root.label.value,...exiting?{inert:true,"aria-hidden":"true"}:{},style:root.position.value?{position:root.strategy.value,visibility:element.value===void 0?"hidden":void 0}:void 0,"aria-activedescendant":root.state.value.highlightedValue===null?void 0:root.itemID(root.state.value.highlightedValue),"data-scope":"select","data-part":"content","data-state":root.state.value.open?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const SelectItem=defineComponent({name:"SectileSelectItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("SelectItem");const state=computed(()=>({value:props.value,selected:root.state.value.value===props.value,highlighted:root.state.value.highlightedValue===props.value,disabled:root.state.value.disabled||props.disabled||root.disabledItems.value.has(props.value)}));provide(itemKey,{state});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerItem(node,props.value,state.value.disabled)},id:root.itemID(props.value),role:"option","aria-selected":String(state.value.selected),"aria-disabled":state.value.disabled?"true":void 0,"data-sectile-select-id":props.value,"data-scope":"select","data-part":"item","data-selected":state.value.selected?"":void 0,"data-highlighted":state.value.highlighted?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const SelectItemIndicator=defineComponent({name:"SectileSelectItemIndicator",inheritAttrs:false,props:partProps,slots:Object,setup(props,{attrs,slots}){const item=useItem("SelectItemIndicator");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,hidden:!item.state.value.selected,"aria-hidden":"true","data-scope":"select","data-part":"item-indicator"}),{default:()=>slots["default"]?.(item.state.value)})}});const SelectViewport=defineComponent({name:"SectileSelectViewport",inheritAttrs:false,props:{...partProps,as:{...partProps.as,default:"div"}},setup(props,{attrs,slots}){useRoot("SelectViewport");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"select","data-part":"viewport"}),slots)}});const SelectItemText=defineComponent({name:"SectileSelectItemText",inheritAttrs:false,props:partProps,setup(props,{attrs,slots}){useItem("SelectItemText");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"select","data-part":"item-text"}),slots)}});const SelectPortal=defineComponent({name:"SectileSelectPortal",inheritAttrs:false,props:{to:{type:[String,Object],default:void 0},disabled:{type:Boolean,default:false},defer:{type:Boolean,default:false}},setup(props,{slots}){useRoot("SelectPortal");const portalTarget=useHostPortalTarget();return()=>h(Teleport,{to:props.to??portalTarget.value??"body",disabled:props.disabled,defer:props.defer},slots["default"]?.())}});function useRoot(part){const root=inject(rootKey);if(root===void 0)throw new TypeError(`${part} must be used inside SelectRoot.`);return root}function useItem(part){const item=inject(itemKey);if(item===void 0)throw new TypeError(`${part} must be used inside SelectItem.`);return item}export{SelectContent,SelectItem,SelectItemIndicator,SelectItemText,SelectPortal,SelectRoot,SelectTrigger,SelectValue,SelectViewport};
|
|
1
|
+
import{Teleport,computed,defineComponent,h,inject,mergeProps,nextTick,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{stableIDElementToken}from"@sectile/dom/identity";import{createSelect}from"@sectile/dom/select";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./internal/native-input.js";import{hiddenSelectSubmissionCapabilities,useCompositeFormControl}from"./internal/form-control.js";import{useHostId,useHostPortalTarget}from"./host-provider.js";import{usePresence}from"./internal/presence.js";import{conditionalPresenceProps,useConditionalPresenceRegistry}from"./internal/conditional-presence.js";import{reconcileCollectionState}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const rootKey=Symbol("SectileSelectRoot");const itemKey=Symbol("SectileSelectItem");const partProps={as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}};const SelectRoot=defineComponent({name:"SectileSelectRoot",inheritAttrs:false,props:{items:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:false},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:void 0},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},textValue:{type:Function,default:void 0},typeaheadTimeoutMs:{type:Number,default:700},position:{type:Boolean,default:true},side:{type:String,default:"bottom"},align:{type:String,default:"start"},sideOffset:{type:Number,default:8},collisionPadding:{type:[Number,Object],default:8},collisionBoundary:{type:[String,Object],default:void 0},avoidCollisions:{type:Boolean,default:true},hideWhenDetached:{type:Boolean,default:false},strategy:{type:String,default:"absolute"},tracking:{type:String,default:"events"},unmountOnExit:{type:Boolean,default:false},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:open":_value=>true,highlight:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const root=shallowRef();const trigger=shallowRef();const popup=shallowRef();const submissionElement=shallowRef(null);const participation=useCompositeFormControl({root:()=>root.value??null,focusTarget:()=>trigger.value??root.value??null,submissions:[{element:submissionElement,capabilities:hiddenSelectSubmissionCapabilities}]});const connection=shallowRef();const id=useHostId();const contentID=`sectile-select-${id}-content`;const itemID=value=>`${contentID}-item-${stableIDElementToken(value)}`;const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localOpen=shallowRef(props.open??props.defaultOpen);const highlighted=shallowRef(localValue.value);const valueControlled=useControlledStateInvariant("SelectRoot","modelValue",()=>props.modelValue);const openControlled=useControlledStateInvariant("SelectRoot","open",()=>props.open);const unmountOnExit=computed(()=>props.unmountOnExit);const position=computed(()=>props.position);const strategy=computed(()=>props.strategy);const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,highlightedValue:highlighted.value,open:props.open??localOpen.value,disabled:props.disabled,readonly:props.readonly}));const selectedIDSet=computed(()=>{const value=props.modelValue!==void 0?props.modelValue:localValue.value;return value===null?new Set:new Set([value])});const indicatorPresence=useConditionalPresenceRegistry(selectedIDSet);const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.choice.selection.selected[0]??null;highlighted.value=snapshot.choice.cursor.current;localOpen.value=snapshot.open;refreshItems()};const refreshItems=()=>{if(popup.value===void 0||connection.value===void 0)return;popup.value.querySelectorAll("[data-sectile-select-id]").forEach(element=>{const id2=element.dataset["sectileSelectId"];if(id2!==void 0)connection.value?.setItemAttributes(element,id2,props.disabledItems.includes(id2))})};const connect=()=>{connection.value?.disconnect();if(root.value===void 0||trigger.value===void 0||popup.value===void 0)return;const requestedValue=valueControlled?props.modelValue:localValue.value;const reconciled=reconcileCollectionState(props.items,requestedValue===null?[]:[requestedValue],highlighted.value,props.disabledItems,"single",{preserveNullCurrent:true});const value=reconciled.selected[0]??null;localValue.value=value;highlighted.value=reconciled.current;if(valueControlled&&requestedValue!==value)emit("update:modelValue",value);connection.value=createSelect({root:root.value,trigger:trigger.value,popup:popup.value,items:props.items,disabledItems:props.disabledItems,textValue:props.textValue??(value2=>value2),typeaheadTimeoutMs:props.typeaheadTimeoutMs,position:props.position,side:props.side,align:props.align,sideOffset:props.sideOffset,collisionPadding:props.collisionPadding,...props.collisionBoundary===void 0?{}:{collisionBoundary:props.collisionBoundary},avoidCollisions:props.avoidCollisions,hideWhenDetached:props.hideWhenDetached,strategy:props.strategy,tracking:props.tracking,manageVisibility:false,...props.policies===void 0?{}:{policies:props.policies},...valueControlled?{value}:{defaultValue:value},defaultHighlightedValue:reconciled.current,...openControlled?{open:props.open}:{defaultOpen:localOpen.value},disabled:props.disabled,readOnly:props.readonly,...props.label===void 0?{}:{label:props.label},onValueChange:next=>{localValue.value=next;emit("update:modelValue",next)},onHighlightedValueChange:next=>{highlighted.value=next;emit("highlight",next)},onOpenChange:next=>{localOpen.value=next;emit("update:open",next)},onUpdate:refresh});refreshItems();refresh()};let mounted=false;let connectScheduled=false;const scheduleConnect=()=>{if(!mounted||connectScheduled||props.unmountOnExit&&!state.value.open)return;connectScheduled=true;void nextTick(()=>{connectScheduled=false;if(mounted)connect()})};provide(rootKey,{state,unmountOnExit,position,strategy,label:computed(()=>props.label),textValue:computed(()=>props.textValue??(id2=>id2)),contentID,itemID,disabledItems:computed(()=>new Set(props.disabledItems)),indicatorPresence,registerTrigger:element=>{trigger.value=element;if(element===void 0){connection.value?.disconnect();connection.value=void 0}else scheduleConnect()},registerPopup:element=>{popup.value=element;if(element===void 0){connection.value?.disconnect();connection.value=void 0}else scheduleConnect()},registerItem:(element,id2,disabled)=>connection.value?.setItemAttributes(element,id2,disabled),activateTrigger:event=>{if(event?.defaultPrevented===true||connection.value!==void 0||props.disabled||state.value.open)return;if(!openControlled)localOpen.value=true;emit("update:open",true)},refresh:()=>connection.value?.refresh()});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;connection.value?.disconnect()});watch([()=>props.items,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.textValue,()=>props.typeaheadTimeoutMs,()=>props.position,()=>props.side,()=>props.align,()=>props.sideOffset,()=>props.collisionPadding,()=>props.collisionBoundary,()=>props.avoidCollisions,()=>props.hideWhenDetached,()=>props.strategy,()=>props.tracking,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.open],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...valueControlled?{value:props.modelValue}:{},...openControlled?{open:props.open}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>{const visual=h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{root.value=node instanceof HTMLElement?node:void 0;scheduleConnect()},"data-scope":"select","data-part":"root","data-state":state.value.open?"open":"closed"},participation.controlProps.value),{default:()=>slots["default"]?.(state.value)});if(!participation.participating&&props.name===void 0&&props.form===void 0&&!props.required)return visual;return[visual,h("select",{ref:submissionElement,name:props.name,form:props.form,required:props.required,disabled:props.disabled,value:state.value.value??"",tabindex:-1,"aria-hidden":"true",style:visuallyHiddenInputStyle},[h("option",{value:""}),...props.items.map(id2=>h("option",{value:id2,disabled:props.disabledItems.includes(id2)},props.textValue?.(id2)??id2))])]}}});const SelectTrigger=defineComponent({name:"SectileSelectTrigger",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("SelectTrigger");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>root.registerTrigger(node instanceof HTMLButtonElement?node:void 0),onClick:root.activateTrigger,type:props.as==="button"?"button":void 0,disabled:root.state.value.disabled,"aria-haspopup":"listbox","aria-expanded":String(root.state.value.open),"aria-controls":root.contentID,"aria-label":root.label.value,"data-scope":"select","data-part":"trigger","data-state":root.state.value.open?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}});const SelectValue=defineComponent({name:"SectileSelectValue",inheritAttrs:false,props:{placeholder:{type:String,default:""},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("SelectValue");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"select","data-part":"value","data-placeholder":root.state.value.value===null?"":void 0}),{default:()=>slots["default"]?.(root.state.value)??(root.state.value.value===null?props.placeholder:root.textValue.value(root.state.value.value))})}});const SelectContent=defineComponent({name:"SectileSelectContent",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("SelectContent");const element=shallowRef();const open=computed(()=>root.state.value.open);const present=usePresence(open,element);watch(present,async()=>{await nextTick();root.refresh()},{flush:"post"});return()=>{if(root.unmountOnExit.value&&!present.value)return null;const exiting=!root.state.value.open&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{const content=node instanceof HTMLElement?node:void 0;element.value=content;root.registerPopup(content)},id:root.contentID,role:"listbox",hidden:!present.value,"aria-label":root.label.value,...exiting?{inert:true,"aria-hidden":"true"}:{},style:root.position.value?{position:root.strategy.value,visibility:element.value===void 0?"hidden":void 0}:void 0,"aria-activedescendant":root.state.value.highlightedValue===null?void 0:root.itemID(root.state.value.highlightedValue),"data-scope":"select","data-part":"content","data-state":root.state.value.open?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const SelectItem=defineComponent({name:"SectileSelectItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("SelectItem");const state=computed(()=>({value:props.value,selected:root.state.value.value===props.value,highlighted:root.state.value.highlightedValue===props.value,disabled:root.state.value.disabled||props.disabled||root.disabledItems.value.has(props.value)}));provide(itemKey,{state});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerItem(node,props.value,state.value.disabled)},id:root.itemID(props.value),role:"option","aria-selected":String(state.value.selected),"aria-disabled":state.value.disabled?"true":void 0,"data-sectile-select-id":props.value,"data-scope":"select","data-part":"item","data-selected":state.value.selected?"":void 0,"data-highlighted":state.value.highlighted?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const SelectItemIndicator=defineComponent({name:"SectileSelectItemIndicator",inheritAttrs:false,props:{...partProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("SelectItemIndicator");const item=useItem("SelectItemIndicator");return()=>{const state=item.state.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>root.indicatorPresence.register(state.value,element),hidden:!root.indicatorPresence.isPresent(state.value,state.selected,props.forcePresent),"aria-hidden":"true","data-scope":"select","data-part":"item-indicator","data-state":state.selected?"checked":"unchecked"}),{default:()=>slots["default"]?.(state)})}}});const SelectViewport=defineComponent({name:"SectileSelectViewport",inheritAttrs:false,props:{...partProps,as:{...partProps.as,default:"div"}},setup(props,{attrs,slots}){useRoot("SelectViewport");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"select","data-part":"viewport"}),slots)}});const SelectItemText=defineComponent({name:"SectileSelectItemText",inheritAttrs:false,props:partProps,setup(props,{attrs,slots}){useItem("SelectItemText");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"select","data-part":"item-text"}),slots)}});const SelectPortal=defineComponent({name:"SectileSelectPortal",inheritAttrs:false,props:{to:{type:[String,Object],default:void 0},disabled:{type:Boolean,default:false},defer:{type:Boolean,default:false}},setup(props,{slots}){useRoot("SelectPortal");const portalTarget=useHostPortalTarget();return()=>h(Teleport,{to:props.to??portalTarget.value??"body",disabled:props.disabled,defer:props.defer},slots["default"]?.())}});function useRoot(part){const root=inject(rootKey);if(root===void 0)throw new TypeError(`${part} must be used inside SelectRoot.`);return root}function useItem(part){const item=inject(itemKey);if(item===void 0)throw new TypeError(`${part} must be used inside SelectItem.`);return item}export{SelectContent,SelectItem,SelectItemIndicator,SelectItemText,SelectPortal,SelectRoot,SelectTrigger,SelectValue,SelectViewport};
|
|
2
2
|
//# sourceMappingURL=select.js.map
|
package/dist/select.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/select.ts"],"mappings":"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","names":["id","value"],"file":"select.js"}
|
|
1
|
+
{"version":3,"sources":["../src/select.ts"],"mappings":"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","names":["id","value"],"file":"select.js"}
|
package/dist/stepper.d.ts
CHANGED
|
@@ -184,6 +184,10 @@ export declare const StepperStep: import("vue").DefineComponent<import("vue").Ex
|
|
|
184
184
|
default: (props: import("./tabs.js").TabsTriggerSlotProps) => VNodeChild;
|
|
185
185
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
186
186
|
export declare const StepperContent: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
187
|
+
forcePresent: {
|
|
188
|
+
readonly type: BooleanConstructor;
|
|
189
|
+
readonly default: false;
|
|
190
|
+
};
|
|
187
191
|
value: {
|
|
188
192
|
type: StringConstructor;
|
|
189
193
|
required: true;
|
|
@@ -197,6 +201,10 @@ export declare const StepperContent: import("vue").DefineComponent<import("vue")
|
|
|
197
201
|
default: boolean;
|
|
198
202
|
};
|
|
199
203
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
204
|
+
forcePresent: {
|
|
205
|
+
readonly type: BooleanConstructor;
|
|
206
|
+
readonly default: false;
|
|
207
|
+
};
|
|
200
208
|
value: {
|
|
201
209
|
type: StringConstructor;
|
|
202
210
|
required: true;
|
|
@@ -210,6 +218,7 @@ export declare const StepperContent: import("vue").DefineComponent<import("vue")
|
|
|
210
218
|
default: boolean;
|
|
211
219
|
};
|
|
212
220
|
}>> & Readonly<{}>, {
|
|
221
|
+
forcePresent: boolean;
|
|
213
222
|
as: PrimitiveAs;
|
|
214
223
|
asChild: boolean;
|
|
215
224
|
}, SlotsType<{
|
package/dist/tabs.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
2
2
|
import { type PrimitiveAs } from './primitive.js';
|
|
3
|
+
import { type ConditionalPresenceProps } from './internal/conditional-presence.js';
|
|
3
4
|
export type TabsActivationMode = 'automatic' | 'manual';
|
|
4
5
|
export interface TabsRootProps {
|
|
5
6
|
readonly items: readonly string[];
|
|
@@ -36,7 +37,7 @@ export interface TabsTriggerSlotProps {
|
|
|
36
37
|
readonly highlighted: boolean;
|
|
37
38
|
readonly disabled: boolean;
|
|
38
39
|
}
|
|
39
|
-
export interface TabsContentProps {
|
|
40
|
+
export interface TabsContentProps extends ConditionalPresenceProps {
|
|
40
41
|
readonly value: string;
|
|
41
42
|
readonly as?: PrimitiveAs;
|
|
42
43
|
readonly asChild?: boolean;
|
|
@@ -230,6 +231,10 @@ export declare const TabsTrigger: import("vue").DefineComponent<import("vue").Ex
|
|
|
230
231
|
default: (props: TabsTriggerSlotProps) => VNodeChild;
|
|
231
232
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
232
233
|
export declare const TabsContent: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
234
|
+
forcePresent: {
|
|
235
|
+
readonly type: BooleanConstructor;
|
|
236
|
+
readonly default: false;
|
|
237
|
+
};
|
|
233
238
|
value: {
|
|
234
239
|
type: StringConstructor;
|
|
235
240
|
required: true;
|
|
@@ -243,6 +248,10 @@ export declare const TabsContent: import("vue").DefineComponent<import("vue").Ex
|
|
|
243
248
|
default: boolean;
|
|
244
249
|
};
|
|
245
250
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
251
|
+
forcePresent: {
|
|
252
|
+
readonly type: BooleanConstructor;
|
|
253
|
+
readonly default: false;
|
|
254
|
+
};
|
|
246
255
|
value: {
|
|
247
256
|
type: StringConstructor;
|
|
248
257
|
required: true;
|
|
@@ -256,6 +265,7 @@ export declare const TabsContent: import("vue").DefineComponent<import("vue").Ex
|
|
|
256
265
|
default: boolean;
|
|
257
266
|
};
|
|
258
267
|
}>> & Readonly<{}>, {
|
|
268
|
+
forcePresent: boolean;
|
|
259
269
|
as: PrimitiveAs;
|
|
260
270
|
asChild: boolean;
|
|
261
271
|
}, SlotsType<{
|
package/dist/tabs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,mergeProps,nextTick,provide,shallowRef,watch}from"vue";import{getTabsContentAttributes,getTabsListAttributes,getTabsRootAttributes,getTabsTriggerAttributes}from"@sectile/dom/tabs";import{stableIDElementToken}from"@sectile/dom/identity";import{createListboxControllerFromItems}from"@sectile/dom/listbox";import{Primitive}from"./primitive.js";import{usePartContract}from"./internal/part-contract.js";import{tabsRootContextKey,useTabsRootContext}from"./internal/tabs-context.js";import{useHostDirection,useHostId}from"./host-provider.js";import{reconcileCollectionState}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const TabsRoot=defineComponent({name:"SectileTabsRoot",inheritAttrs:false,props:{items:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:""},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},orientation:{type:String,default:"horizontal"},activationMode:{type:String,default:"automatic"},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,highlight:_value=>true,activate:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const controlled=useControlledStateInvariant("TabsRoot","modelValue",()=>props.modelValue);const instanceID=useHostId();const direction=useHostDirection();const rootElement=shallowRef(null);const idMap=new Map;const ids=value2=>{const found=idMap.get(value2);if(found!==void 0)return found;const safe=stableIDElementToken(value2);const created=Object.freeze({trigger:`sectile-tabs-${instanceID}-${safe}-trigger`,content:`sectile-tabs-${instanceID}-${safe}-content`});idMap.set(value2,created);return created};const makeController=(value2,highlightedValue=value2||null)=>{const selected=value2===""?[]:[value2];const result=createListboxControllerFromItems({items:props.items,selectionMode:"single",disabledItems:props.disabledItems,disabled:props.disabled,readOnly:props.readonly,orientation:props.orientation,direction:direction.value,policies:{selectionFollowsFocus:props.activationMode==="automatic"},...controlled?{value:selected}:{defaultValue:selected},defaultHighlightedValue:highlightedValue??props.items.find(id=>!props.disabledItems.includes(id))??null,onValueChange:({value:next})=>emit("update:modelValue",next[0]??""),onHighlightedValueChange:({value:next})=>emit("highlight",next)});if(!result.ok)throw new TypeError(result.error.message);return result.value};const initial=controlled?props.modelValue:props.defaultValue||props.items.find(id=>!props.disabledItems.includes(id))||"";const controller=shallowRef(makeController(initial));const snapshot=shallowRef(controller.value.getSnapshot());const rebuild=()=>{const requested=controlled?props.modelValue:snapshot.value.state.selection.selected[0]??"";const reconciled=reconcileCollectionState(props.items,requested===""?[]:[requested],snapshot.value.state.cursor.current,props.disabledItems,"single");const current=reconciled.selected[0]??reconciled.current??"";controller.value=makeController(current,reconciled.current);snapshot.value=controller.value.getSnapshot();if(controlled&¤t!==requested)emit("update:modelValue",current)};watch(()=>props.modelValue,next=>{if(!controlled||next===void 0)return;const result=controller.value.syncControlledValues({value:next===""?[]:[next]});if(!result.ok)throw new TypeError(result.error.message);snapshot.value=result.value});watch([()=>props.items,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.orientation,()=>props.activationMode,direction],rebuild);const value=computed(()=>snapshot.value.state.selection.selected[0]??"");const highlighted=computed(()=>snapshot.value.state.cursor.current);const disabled=computed(()=>props.disabled);const readonly=computed(()=>props.readonly);const orientation=computed(()=>props.orientation);const disabledItems=computed(()=>new Set(props.disabledItems));const apply=(result,root)=>{if(!result.ok)return false;snapshot.value=result.snapshot;applyEffects(result.commands,emit);if(root!==void 0)void nextTick(()=>focusTrigger(root,result.snapshot.state.cursor.current));return true};const activateTarget=target=>{if(!apply(controller.value.handleEvent({type:"focus",id:target})))return false;if(!apply(controller.value.handleEvent({type:"activate",id:target})))return false;void nextTick(()=>{if(rootElement.value!==null)focusTrigger(rootElement.value,target)});return true};const part=usePartContract("tabs","root");provide(tabsRootContextKey,{value,highlighted,disabled,readonly,orientation,direction,disabledItems,items:computed(()=>props.items),partContract:part,ids,select:(id,target)=>apply(controller.value.handleEvent({type:"activate",id}),target.closest('[role="tablist"]')),keydown:event=>{if(!apply(controller.value.handleKeyboardInput(event),event.currentTarget))return;event.preventDefault()},activateTarget});const slotProps=computed(()=>({value:value.value,highlightedValue:highlighted.value,disabled:props.disabled,readonly:props.readonly}));return()=>h(Primitive,mergeProps(attrs,getTabsRootAttributes(),{as:props.as,asChild:props.asChild,elementRef:element=>{rootElement.value=element},"data-scope":part.scope}),{default:()=>slots["default"]?.(slotProps.value)})}});const TabsList=defineComponent({name:"SectileTabsList",inheritAttrs:false,props:{label:{type:String,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useTabsRootContext("TabsList");const part={scope:root.partContract.scope,part:root.partContract.parts["list"]??"list"};const attributes=computed(()=>getTabsListAttributes({orientation:root.orientation.value,direction:root.direction.value,...props.label===void 0?{}:{label:props.label},disabled:root.disabled.value,readOnly:root.readonly.value}));return()=>h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,"data-scope":part.scope,onKeydown:root.keydown}),slots)}});const TabsTrigger=defineComponent({name:"SectileTabsTrigger",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useTabsRootContext("TabsTrigger");const part={scope:root.partContract.scope,part:root.partContract.parts["trigger"]??"trigger"};const state=computed(()=>({value:props.value,selected:root.value.value===props.value,highlighted:root.highlighted.value===props.value,disabled:root.disabled.value||props.disabled||root.disabledItems.value.has(props.value)}));const attributes=computed(()=>{const ids=root.ids(props.value);return getTabsTriggerAttributes({id:props.value,selected:state.value.selected,highlighted:state.value.highlighted,disabled:state.value.disabled,triggerID:ids.trigger,panelID:ids.content})});return()=>h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,"data-scope":part.scope,"data-part":part.part,onClick:event=>{if(!event.defaultPrevented&&!state.value.disabled)root.select(props.value,event.currentTarget)}}),{default:()=>slots["default"]?.(state.value)})}});const TabsContent=defineComponent({name:"SectileTabsContent",inheritAttrs:false,props:{value:{type:String,required:true},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useTabsRootContext("TabsContent");const part={scope:root.partContract.scope,part:root.partContract.parts["content"]??"content"};const selected=computed(()=>root.value.value===props.value);const attributes=computed(()=>{const ids=root.ids(props.value);return getTabsContentAttributes({selected:selected.value,contentID:ids.content,triggerID:ids.trigger})});return()=>h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,"data-scope":part.scope}),{default:()=>slots["default"]?.({value:props.value,selected:selected.value})})}});const TabsIndicator=defineComponent({name:"SectileTabsIndicator",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useTabsRootContext("TabsIndicator");const part={scope:root.partContract.scope,part:root.partContract.parts["indicator"]??"indicator"};return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"aria-hidden":"true","data-scope":part.scope,"data-part":part.part,"data-value":root.value.value}),{default:()=>slots["default"]?.({value:root.value.value})})}});function applyEffects(effects,emit){for(const effect of effects)if(effect.type==="dispatch-activation")emit("activate",effect.id)}function focusTrigger(root,id){if(id===null)return;const token=getTabsTriggerAttributes({id,selected:false,highlighted:false})["data-tabs-id"];for(const item of root.querySelectorAll("[data-tabs-id]")){if(item.dataset["tabsId"]===token)item.focus()}}export{TabsContent,TabsIndicator,TabsList,TabsRoot,TabsTrigger};
|
|
1
|
+
import{computed,defineComponent,h,mergeProps,nextTick,provide,shallowRef,watch}from"vue";import{getTabsContentAttributes,getTabsListAttributes,getTabsRootAttributes,getTabsTriggerAttributes}from"@sectile/dom/tabs";import{stableIDElementToken}from"@sectile/dom/identity";import{createListboxControllerFromItems}from"@sectile/dom/listbox";import{Primitive}from"./primitive.js";import{usePartContract}from"./internal/part-contract.js";import{tabsRootContextKey,useTabsRootContext}from"./internal/tabs-context.js";import{useHostDirection,useHostId}from"./host-provider.js";import{reconcileCollectionState}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./internal/conditional-presence.js";const TabsRoot=defineComponent({name:"SectileTabsRoot",inheritAttrs:false,props:{items:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:""},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},orientation:{type:String,default:"horizontal"},activationMode:{type:String,default:"automatic"},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,highlight:_value=>true,activate:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const controlled=useControlledStateInvariant("TabsRoot","modelValue",()=>props.modelValue);const instanceID=useHostId();const direction=useHostDirection();const rootElement=shallowRef(null);const idMap=new Map;const ids=value2=>{const found=idMap.get(value2);if(found!==void 0)return found;const safe=stableIDElementToken(value2);const created=Object.freeze({trigger:`sectile-tabs-${instanceID}-${safe}-trigger`,content:`sectile-tabs-${instanceID}-${safe}-content`});idMap.set(value2,created);return created};const makeController=(value2,highlightedValue=value2||null)=>{const selected=value2===""?[]:[value2];const result=createListboxControllerFromItems({items:props.items,selectionMode:"single",disabledItems:props.disabledItems,disabled:props.disabled,readOnly:props.readonly,orientation:props.orientation,direction:direction.value,policies:{selectionFollowsFocus:props.activationMode==="automatic"},...controlled?{value:selected}:{defaultValue:selected},defaultHighlightedValue:highlightedValue??props.items.find(id=>!props.disabledItems.includes(id))??null,onValueChange:({value:next})=>emit("update:modelValue",next[0]??""),onHighlightedValueChange:({value:next})=>emit("highlight",next)});if(!result.ok)throw new TypeError(result.error.message);return result.value};const initial=controlled?props.modelValue:props.defaultValue||props.items.find(id=>!props.disabledItems.includes(id))||"";const controller=shallowRef(makeController(initial));const snapshot=shallowRef(controller.value.getSnapshot());const rebuild=()=>{const requested=controlled?props.modelValue:snapshot.value.state.selection.selected[0]??"";const reconciled=reconcileCollectionState(props.items,requested===""?[]:[requested],snapshot.value.state.cursor.current,props.disabledItems,"single");const current=reconciled.selected[0]??reconciled.current??"";controller.value=makeController(current,reconciled.current);snapshot.value=controller.value.getSnapshot();if(controlled&¤t!==requested)emit("update:modelValue",current)};watch(()=>props.modelValue,next=>{if(!controlled||next===void 0)return;const result=controller.value.syncControlledValues({value:next===""?[]:[next]});if(!result.ok)throw new TypeError(result.error.message);snapshot.value=result.value});watch([()=>props.items,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.orientation,()=>props.activationMode,direction],rebuild);const value=computed(()=>snapshot.value.state.selection.selected[0]??"");const highlighted=computed(()=>snapshot.value.state.cursor.current);const disabled=computed(()=>props.disabled);const readonly=computed(()=>props.readonly);const orientation=computed(()=>props.orientation);const disabledItems=computed(()=>new Set(props.disabledItems));const apply=(result,root)=>{if(!result.ok)return false;snapshot.value=result.snapshot;applyEffects(result.commands,emit);if(root!==void 0)void nextTick(()=>focusTrigger(root,result.snapshot.state.cursor.current));return true};const activateTarget=target=>{if(!apply(controller.value.handleEvent({type:"focus",id:target})))return false;if(!apply(controller.value.handleEvent({type:"activate",id:target})))return false;void nextTick(()=>{if(rootElement.value!==null)focusTrigger(rootElement.value,target)});return true};const part=usePartContract("tabs","root");provide(tabsRootContextKey,{value,highlighted,disabled,readonly,orientation,direction,disabledItems,items:computed(()=>props.items),partContract:part,ids,select:(id,target)=>apply(controller.value.handleEvent({type:"activate",id}),target.closest('[role="tablist"]')),keydown:event=>{if(!apply(controller.value.handleKeyboardInput(event),event.currentTarget))return;event.preventDefault()},activateTarget});const slotProps=computed(()=>({value:value.value,highlightedValue:highlighted.value,disabled:props.disabled,readonly:props.readonly}));return()=>h(Primitive,mergeProps(attrs,getTabsRootAttributes(),{as:props.as,asChild:props.asChild,elementRef:element=>{rootElement.value=element},"data-scope":part.scope}),{default:()=>slots["default"]?.(slotProps.value)})}});const TabsList=defineComponent({name:"SectileTabsList",inheritAttrs:false,props:{label:{type:String,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useTabsRootContext("TabsList");const part={scope:root.partContract.scope,part:root.partContract.parts["list"]??"list"};const attributes=computed(()=>getTabsListAttributes({orientation:root.orientation.value,direction:root.direction.value,...props.label===void 0?{}:{label:props.label},disabled:root.disabled.value,readOnly:root.readonly.value}));return()=>h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,"data-scope":part.scope,onKeydown:root.keydown}),slots)}});const TabsTrigger=defineComponent({name:"SectileTabsTrigger",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useTabsRootContext("TabsTrigger");const part={scope:root.partContract.scope,part:root.partContract.parts["trigger"]??"trigger"};const state=computed(()=>({value:props.value,selected:root.value.value===props.value,highlighted:root.highlighted.value===props.value,disabled:root.disabled.value||props.disabled||root.disabledItems.value.has(props.value)}));const attributes=computed(()=>{const ids=root.ids(props.value);return getTabsTriggerAttributes({id:props.value,selected:state.value.selected,highlighted:state.value.highlighted,disabled:state.value.disabled,triggerID:ids.trigger,panelID:ids.content})});return()=>h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,"data-scope":part.scope,"data-part":part.part,onClick:event=>{if(!event.defaultPrevented&&!state.value.disabled)root.select(props.value,event.currentTarget)}}),{default:()=>slots["default"]?.(state.value)})}});const TabsContent=defineComponent({name:"SectileTabsContent",inheritAttrs:false,props:{value:{type:String,required:true},...conditionalPresenceProps,as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useTabsRootContext("TabsContent");const part={scope:root.partContract.scope,part:root.partContract.parts["content"]??"content"};const selected=computed(()=>root.value.value===props.value);const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(selected,forcePresent);const attributes=computed(()=>{const ids=root.ids(props.value);return getTabsContentAttributes({selected:selected.value,contentID:ids.content,triggerID:ids.trigger})});return()=>{const inactivePresent=!selected.value&&presence.present.value;return h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,elementRef:presence.register,hidden:presence.hidden.value,...inactivePresent?{inert:true,"aria-hidden":"true"}:{},"data-scope":part.scope}),{default:()=>slots["default"]?.({value:props.value,selected:selected.value})})}}});const TabsIndicator=defineComponent({name:"SectileTabsIndicator",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useTabsRootContext("TabsIndicator");const part={scope:root.partContract.scope,part:root.partContract.parts["indicator"]??"indicator"};return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"aria-hidden":"true","data-scope":part.scope,"data-part":part.part,"data-value":root.value.value}),{default:()=>slots["default"]?.({value:root.value.value})})}});function applyEffects(effects,emit){for(const effect of effects)if(effect.type==="dispatch-activation")emit("activate",effect.id)}function focusTrigger(root,id){if(id===null)return;const token=getTabsTriggerAttributes({id,selected:false,highlighted:false})["data-tabs-id"];for(const item of root.querySelectorAll("[data-tabs-id]")){if(item.dataset["tabsId"]===token)item.focus()}}export{TabsContent,TabsIndicator,TabsList,TabsRoot,TabsTrigger};
|
|
2
2
|
//# sourceMappingURL=tabs.js.map
|
package/dist/tabs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tabs.ts"],"mappings":"AAAA,OACE,SAAU,gBAAiB,EAAG,WAAY,SAAU,QAAS,WAAY,UAEpE,MACP,OACE,yBACA,sBACA,sBACA,6BACK,oBACP,OAAS,yBAA4B,wBACrC,OAAS,qCAAoF,uBAC7F,OAAS,cAAmC,iBAC5C,OAAS,oBAAuB,8BAChC,OACE,mBACA,uBAGK,6BACP,OAAS,iBAAkB,cAAiB,qBAC5C,OAAS,6BAAgC,2BACzC,OAAS,gCAAmC,
|
|
1
|
+
{"version":3,"sources":["../src/tabs.ts"],"mappings":"AAAA,OACE,SAAU,gBAAiB,EAAG,WAAY,SAAU,QAAS,WAAY,UAEpE,MACP,OACE,yBACA,sBACA,sBACA,6BACK,oBACP,OAAS,yBAA4B,wBACrC,OAAS,qCAAoF,uBAC7F,OAAS,cAAmC,iBAC5C,OAAS,oBAAuB,8BAChC,OACE,mBACA,uBAGK,6BACP,OAAS,iBAAkB,cAAiB,qBAC5C,OAAS,6BAAgC,2BACzC,OAAS,gCAAmC,iCAC5C,OACE,yBACA,2BAEK,qCAuBA,MAAM,SAAW,gBAAgB,CACtC,KAAM,kBACN,aAAc,MACd,MAAO,CACL,MAAO,CAAE,KAAM,MAAsC,SAAU,IAAI,EACnE,WAAY,CAAE,KAAM,OAAQ,QAAS,MAAS,EAC9C,aAAc,CAAE,KAAM,OAAQ,QAAS,EAAE,EACzC,cAAe,CAAE,KAAM,MAAsC,QAAS,IAAM,CAAA,CAAE,EAC9E,SAAU,CAAE,KAAM,QAAS,QAAS,KAAK,EACzC,SAAU,CAAE,KAAM,QAAS,QAAS,KAAK,EACzC,YAAa,CAAE,KAAM,OAA+C,QAAS,YAAY,EACzF,eAAgB,CAAE,KAAM,OAAwC,QAAS,WAAW,EACpF,GAAI,CAAE,KAAM,CAAC,OAAQ,OAAQ,QAAQ,EAA4B,QAAS,KAAK,EAC/E,QAAS,CAAE,KAAM,QAAS,QAAS,KAAK,GAE1C,MAAO,CACL,oBAAsB,QAA4B,KAClD,UAAY,QAAmC,KAC/C,SAAW,QAA4B,MAEzC,MAAO,OACP,MAAM,MAAO,CAAE,MAAO,KAAM,KAAK,EAAE,CACjC,MAAM,WAAa,4BAA4B,WAAY,aAAc,IAAM,MAAM,UAAU,EAC/F,MAAM,WAAa,UAAS,EAC5B,MAAM,UAAY,iBAAgB,EAClC,MAAM,YAAc,WAA+B,IAAI,EACvD,MAAM,MAAQ,IAAI,IAClB,MAAM,IAAOA,QAA0B,CACrC,MAAM,MAAQ,MAAM,IAAIA,MAAK,EAC7B,GAAI,QAAU,OAAW,OAAO,MAChC,MAAM,KAAO,qBAAqBA,MAAK,EACvC,MAAM,QAAU,OAAO,OAAO,CAAE,QAAS,gBAAgB,UAAU,IAAI,IAAI,WAAY,QAAS,gBAAgB,UAAU,IAAI,IAAI,UAAU,CAAE,EAC9I,MAAM,IAAIA,OAAO,OAAO,EACxB,OAAO,OACT,EACA,MAAM,eAAiB,CAACA,OAAe,iBAAmBA,QAAS,OAAmC,CACpG,MAAM,SAAWA,SAAU,GAAK,CAAA,EAAK,CAACA,MAAK,EAC3C,MAAM,OAAS,iCAAiC,CAC9C,MAAO,MAAM,MACb,cAAe,SACf,cAAe,MAAM,cACrB,SAAU,MAAM,SAChB,SAAU,MAAM,SAChB,YAAa,MAAM,YACnB,UAAW,UAAU,MACrB,SAAU,CAAE,sBAAuB,MAAM,iBAAmB,WAAW,EACvE,GAAI,WAAa,CAAE,MAAO,QAAQ,EAAK,CAAE,aAAc,QAAQ,EAC/D,wBAAyB,kBAAoB,MAAM,MAAM,KAAM,IAAO,CAAC,MAAM,cAAc,SAAS,EAAE,CAAC,GAAK,KAC5G,cAAe,CAAC,CAAE,MAAO,IAAI,IAAO,KAAK,oBAAqB,KAAK,CAAC,GAAK,EAAE,EAC3E,yBAA0B,CAAC,CAAE,MAAO,IAAI,IAAO,KAAK,YAAa,IAAI,EACtE,EACD,GAAI,CAAC,OAAO,GAAI,MAAM,IAAI,UAAU,OAAO,MAAM,OAAO,EACxD,OAAO,OAAO,KAChB,EACA,MAAM,QAAU,WAAa,MAAM,WAAuB,MAAM,cAAgB,MAAM,MAAM,KAAM,IAAO,CAAC,MAAM,cAAc,SAAS,EAAE,CAAC,GAAK,GAC/I,MAAM,WAAa,WAAW,eAAe,OAAO,CAAC,EACrD,MAAM,SAAW,WAAW,WAAW,MAAM,YAAW,CAAE,EAC1D,MAAM,QAAU,IAAW,CACzB,MAAM,UAAY,WAAa,MAAM,WAAuB,SAAS,MAAM,MAAM,UAAU,SAAS,CAAC,GAAK,GAC1G,MAAM,WAAa,yBACjB,MAAM,MACN,YAAc,GAAK,CAAA,EAAK,CAAC,SAAS,EAClC,SAAS,MAAM,MAAM,OAAO,QAC5B,MAAM,cACN,QAAQ,EAEV,MAAM,QAAU,WAAW,SAAS,CAAC,GAAK,WAAW,SAAW,GAChE,WAAW,MAAQ,eAAe,QAAS,WAAW,OAAO,EAC7D,SAAS,MAAQ,WAAW,MAAM,YAAW,EAC7C,GAAI,YAAc,UAAY,UAAW,KAAK,oBAAqB,OAAO,CAC5E,EACA,MAAM,IAAM,MAAM,WAAa,MAAQ,CACrC,GAAI,CAAC,YAAc,OAAS,OAAW,OACvC,MAAM,OAAS,WAAW,MAAM,qBAAqB,CAAE,MAAO,OAAS,GAAK,CAAA,EAAK,CAAC,IAAI,CAAC,CAAE,EACzF,GAAI,CAAC,OAAO,GAAI,MAAM,IAAI,UAAU,OAAO,MAAM,OAAO,EACxD,SAAS,MAAQ,OAAO,KAC1B,CAAC,EACD,MAAM,CAAC,IAAM,MAAM,MAAO,IAAM,MAAM,cAAe,IAAM,MAAM,SAAU,IAAM,MAAM,SAAU,IAAM,MAAM,YAAa,IAAM,MAAM,eAAgB,SAAS,EAAG,OAAO,EACzK,MAAM,MAAQ,SAAS,IAAM,SAAS,MAAM,MAAM,UAAU,SAAS,CAAC,GAAK,EAAE,EAC7E,MAAM,YAAc,SAAS,IAAM,SAAS,MAAM,MAAM,OAAO,OAAO,EACtE,MAAM,SAAW,SAAS,IAAM,MAAM,QAAQ,EAC9C,MAAM,SAAW,SAAS,IAAM,MAAM,QAAQ,EAC9C,MAAM,YAAc,SAAS,IAAM,MAAM,WAAW,EACpD,MAAM,cAAgB,SAA8B,IAAM,IAAI,IAAI,MAAM,aAAa,CAAC,EACtF,MAAM,MAAQ,CAAC,OAA8D,OAA+B,CAC1G,GAAI,CAAC,OAAO,GAAI,MAAO,OACvB,SAAS,MAAQ,OAAO,SACxB,aAAa,OAAO,SAAU,IAAI,EAClC,GAAI,OAAS,OAAW,KAAK,SAAS,IAAM,aAAa,KAAM,OAAO,SAAS,MAAM,OAAO,OAAO,CAAC,EACpG,MAAO,KACT,EACA,MAAM,eAAkB,QAA2B,CACjD,GAAI,CAAC,MAAM,WAAW,MAAM,YAAY,CAAE,KAAM,QAAS,GAAI,MAAM,CAAE,CAAC,EAAG,MAAO,OAChF,GAAI,CAAC,MAAM,WAAW,MAAM,YAAY,CAAE,KAAM,WAAY,GAAI,MAAM,CAAE,CAAC,EAAG,MAAO,OACnF,KAAK,SAAS,IAAK,CACjB,GAAI,YAAY,QAAU,KAAM,aAAa,YAAY,MAAO,MAAM,CACxE,CAAC,EACD,MAAO,KACT,EACA,MAAM,KAAO,gBAAgB,OAAQ,MAAM,EAC3C,QAAyB,mBAAoB,CAC3C,MAAO,YAAa,SAAU,SAAU,YAAa,UAAW,cAChE,MAAO,SAAS,IAAM,MAAM,KAAK,EAAG,aAAc,KAAM,IACxD,OAAQ,CAAC,GAAI,SAAW,MAAM,WAAW,MAAM,YAAY,CAAE,KAAM,WAAY,EAAE,CAAE,EAAG,OAAO,QAAQ,kBAAkB,CAA4B,EACnJ,QAAU,OAAS,CACjB,GAAI,CAAC,MAAM,WAAW,MAAM,oBAAoB,KAAK,EAAG,MAAM,aAA4B,EAAG,OAC7F,MAAM,eAAc,CACtB,EACA,eACD,EACD,MAAM,UAAY,SAA4B,KAAO,CAAE,MAAO,MAAM,MAAO,iBAAkB,YAAY,MAAO,SAAU,MAAM,SAAU,SAAU,MAAM,QAAQ,EAAG,EACrK,MAAO,IAAkB,EAAE,UAAW,WAAW,MAAO,sBAAqB,EAAI,CAC/E,GAAI,MAAM,GACV,QAAS,MAAM,QACf,WAAa,SAAoB,CAAG,YAAY,MAAQ,OAA+B,EACvF,aAAc,KAAK,MACpB,EAAG,CACF,QAAS,IAAM,MAAM,SAAS,IAAI,UAAU,KAAK,EAClD,CACH,EACD,EAMM,MAAM,SAAW,gBAAgB,CACtC,KAAM,kBACN,aAAc,MACd,MAAO,CACL,MAAO,CAAE,KAAM,OAAQ,QAAS,MAAS,EACzC,GAAI,CAAE,KAAM,CAAC,OAAQ,OAAQ,QAAQ,EAA4B,QAAS,KAAK,EAC/E,QAAS,CAAE,KAAM,QAAS,QAAS,KAAK,GAE1C,MAAO,OACP,MAAM,MAAO,CAAE,MAAO,KAAK,EAAE,CAC3B,MAAM,KAAO,mBAAmB,UAAU,EAC1C,MAAM,KAAO,CAAE,MAAO,KAAK,aAAa,MAAO,KAAM,KAAK,aAAa,MAAM,MAAM,GAAK,MAAM,EAC9F,MAAM,WAAa,SAAS,IAAM,sBAAsB,CACtD,YAAa,KAAK,YAAY,MAC9B,UAAW,KAAK,UAAU,MAC1B,GAAI,MAAM,QAAU,OAAY,CAAA,EAAK,CAAE,MAAO,MAAM,KAAK,EACzD,SAAU,KAAK,SAAS,MACxB,SAAU,KAAK,SAAS,MACzB,CAAC,EACF,MAAO,IAAkB,EAAE,UAAW,WAAW,MAAO,WAAW,MAAkC,CAAE,GAAI,MAAM,GAAI,QAAS,MAAM,QAAS,aAAc,KAAK,MAAO,UAAW,KAAK,OAAO,CAAE,EAAG,KAAK,CAC1M,EACD,EAEM,MAAM,YAAc,gBAAgB,CACzC,KAAM,qBACN,aAAc,MACd,MAAO,CACL,MAAO,CAAE,KAAM,OAAQ,SAAU,IAAI,EACrC,SAAU,CAAE,KAAM,QAAS,QAAS,KAAK,EACzC,GAAI,CAAE,KAAM,CAAC,OAAQ,OAAQ,QAAQ,EAA4B,QAAS,QAAQ,EAClF,QAAS,CAAE,KAAM,QAAS,QAAS,KAAK,GAE1C,MAAO,OACP,MAAM,MAAO,CAAE,MAAO,KAAK,EAAE,CAC3B,MAAM,KAAO,mBAAmB,aAAa,EAC7C,MAAM,KAAO,CAAE,MAAO,KAAK,aAAa,MAAO,KAAM,KAAK,aAAa,MAAM,SAAS,GAAK,SAAS,EACpG,MAAM,MAAQ,SAA+B,KAAO,CAClD,MAAO,MAAM,MACb,SAAU,KAAK,MAAM,QAAU,MAAM,MACrC,YAAa,KAAK,YAAY,QAAU,MAAM,MAC9C,SAAU,KAAK,SAAS,OAAS,MAAM,UAAY,KAAK,cAAc,MAAM,IAAI,MAAM,KAAK,GAC3F,EACF,MAAM,WAAa,SAAS,IAAK,CAC/B,MAAM,IAAM,KAAK,IAAI,MAAM,KAAK,EAChC,OAAO,yBAAyB,CAAE,GAAI,MAAM,MAAO,SAAU,MAAM,MAAM,SAAU,YAAa,MAAM,MAAM,YAAa,SAAU,MAAM,MAAM,SAAU,UAAW,IAAI,QAAS,QAAS,IAAI,OAAO,CAAE,CACzM,CAAC,EACD,MAAO,IAAkB,EAAE,UAAW,WAAW,MAAO,WAAW,MAAkC,CACnG,GAAI,MAAM,GAAI,QAAS,MAAM,QAC7B,aAAc,KAAK,MACnB,YAAa,KAAK,KAClB,QAAU,OAAqB,CAC7B,GAAI,CAAC,MAAM,kBAAoB,CAAC,MAAM,MAAM,SAAU,KAAK,OAAO,MAAM,MAAO,MAAM,aAA4B,CACnH,EACD,EAAG,CAAE,QAAS,IAAM,MAAM,SAAS,IAAI,MAAM,KAAK,CAAC,CAAE,CACxD,EACD,EAEM,MAAM,YAAc,gBAAgB,CACzC,KAAM,qBACN,aAAc,MACd,MAAO,CACL,MAAO,CAAE,KAAM,OAAQ,SAAU,IAAI,EACrC,GAAG,yBACH,GAAI,CAAE,KAAM,CAAC,OAAQ,OAAQ,QAAQ,EAA4B,QAAS,KAAK,EAC/E,QAAS,CAAE,KAAM,QAAS,QAAS,KAAK,GAE1C,MAAO,OACP,MAAM,MAAO,CAAE,MAAO,KAAK,EAAE,CAC3B,MAAM,KAAO,mBAAmB,aAAa,EAC7C,MAAM,KAAO,CAAE,MAAO,KAAK,aAAa,MAAO,KAAM,KAAK,aAAa,MAAM,SAAS,GAAK,SAAS,EACpG,MAAM,SAAW,SAAS,IAAM,KAAK,MAAM,QAAU,MAAM,KAAK,EAChE,MAAM,aAAe,SAAS,IAAM,MAAM,YAAY,EACtD,MAAM,SAAW,uBAAuB,SAAU,YAAY,EAC9D,MAAM,WAAa,SAAS,IAAK,CAC/B,MAAM,IAAM,KAAK,IAAI,MAAM,KAAK,EAChC,OAAO,yBAAyB,CAAE,SAAU,SAAS,MAAO,UAAW,IAAI,QAAS,UAAW,IAAI,OAAO,CAAE,CAC9G,CAAC,EACD,MAAO,IAAiB,CACtB,MAAM,gBAAkB,CAAC,SAAS,OAAS,SAAS,QAAQ,MAC5D,OAAO,EAAE,UAAW,WAAW,MAAO,WAAW,MAAkC,CACjF,GAAI,MAAM,GACV,QAAS,MAAM,QACf,WAAY,SAAS,SACrB,OAAQ,SAAS,OAAO,MACxB,GAAI,gBAAkB,CAAE,MAAO,KAAM,cAAe,MAAM,EAAK,CAAA,EAC/D,aAAc,KAAK,MACpB,EAAG,CACF,QAAS,IAAM,MAAM,SAAS,IAAI,CAAE,MAAO,MAAM,MAAO,SAAU,SAAS,KAAK,CAAE,EACnF,CACH,CACF,EACD,EAEM,MAAM,cAAgB,gBAAgB,CAC3C,KAAM,uBACN,aAAc,MACd,MAAO,CACL,GAAI,CAAE,KAAM,CAAC,OAAQ,OAAQ,QAAQ,EAA4B,QAAS,MAAM,EAChF,QAAS,CAAE,KAAM,QAAS,QAAS,KAAK,GAE1C,MAAO,OACP,MAAM,MAAO,CAAE,MAAO,KAAK,EAAE,CAC3B,MAAM,KAAO,mBAAmB,eAAe,EAC/C,MAAM,KAAO,CAAE,MAAO,KAAK,aAAa,MAAO,KAAM,KAAK,aAAa,MAAM,WAAW,GAAK,WAAW,EACxG,MAAO,IAAkB,EAAE,UAAW,WAAW,MAAO,CACtD,GAAI,MAAM,GAAI,QAAS,MAAM,QAC7B,cAAe,OACf,aAAc,KAAK,MACnB,YAAa,KAAK,KAClB,aAAc,KAAK,MAAM,MAC1B,EAAG,CAAE,QAAS,IAAM,MAAM,SAAS,IAAI,CAAE,MAAO,KAAK,MAAM,KAAK,CAAE,CAAC,CAAE,CACxE,EACD,EAED,SAAS,aAAa,QAA2C,KAAgD,CAC/G,UAAW,UAAU,QAAS,GAAI,OAAO,OAAS,sBAAuB,KAAK,WAAY,OAAO,EAAE,CACrG,CACA,SAAS,aAAa,KAAmB,GAAiB,CACxD,GAAI,KAAO,KAAM,OACjB,MAAM,MAAQ,yBAAyB,CACrC,GACA,SAAU,MACV,YAAa,MACd,EAAE,cAAc,EACjB,UAAW,QAAQ,KAAK,iBAA8B,gBAAgB,EAAG,CACvE,GAAI,KAAK,QAAQ,QAAQ,IAAM,MAAO,KAAK,MAAK,CAClD,CACF","names":["value"],"file":"tabs.js"}
|
package/dist/tree-grid.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
2
2
|
import { type TreeGridEditMode, type TreeGridPolicies, type TreeGridRowInput } from '@sectile/dom/tree-grid';
|
|
3
3
|
import { type PrimitiveAs } from './primitive.js';
|
|
4
|
+
import { type ConditionalPresenceProps } from './internal/conditional-presence.js';
|
|
4
5
|
export interface TreeGridRootProps {
|
|
5
6
|
readonly rows: readonly TreeGridRowInput<string, string>[];
|
|
6
7
|
readonly getCellValue: (id: string) => string;
|
|
@@ -43,6 +44,10 @@ export interface TreeGridPartProps {
|
|
|
43
44
|
readonly as?: PrimitiveAs;
|
|
44
45
|
readonly asChild?: boolean;
|
|
45
46
|
}
|
|
47
|
+
export interface TreeGridEditorProps extends ConditionalPresenceProps {
|
|
48
|
+
readonly for: string;
|
|
49
|
+
readonly label?: string;
|
|
50
|
+
}
|
|
46
51
|
export declare const TreeGridRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
47
52
|
rows: {
|
|
48
53
|
type: PropType<readonly TreeGridRowInput<string, string>[]>;
|
|
@@ -335,6 +340,10 @@ export declare const TreeGridDisclosure: import("vue").DefineComponent<import("v
|
|
|
335
340
|
default: (props: TreeGridRowSlotProps) => VNodeChild;
|
|
336
341
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
337
342
|
export declare const TreeGridEditor: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
343
|
+
forcePresent: {
|
|
344
|
+
readonly type: BooleanConstructor;
|
|
345
|
+
readonly default: false;
|
|
346
|
+
};
|
|
338
347
|
for: {
|
|
339
348
|
type: StringConstructor;
|
|
340
349
|
required: true;
|
|
@@ -344,6 +353,10 @@ export declare const TreeGridEditor: import("vue").DefineComponent<import("vue")
|
|
|
344
353
|
default: undefined;
|
|
345
354
|
};
|
|
346
355
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
356
|
+
forcePresent: {
|
|
357
|
+
readonly type: BooleanConstructor;
|
|
358
|
+
readonly default: false;
|
|
359
|
+
};
|
|
347
360
|
for: {
|
|
348
361
|
type: StringConstructor;
|
|
349
362
|
required: true;
|
|
@@ -353,6 +366,7 @@ export declare const TreeGridEditor: import("vue").DefineComponent<import("vue")
|
|
|
353
366
|
default: undefined;
|
|
354
367
|
};
|
|
355
368
|
}>> & Readonly<{}>, {
|
|
369
|
+
forcePresent: boolean;
|
|
356
370
|
label: string;
|
|
357
371
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
358
372
|
export type { TreeGridEditMode, TreeGridPolicies, TreeGridRowInput };
|
package/dist/tree-grid.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createTreeGrid}from"@sectile/dom/tree-grid";import{Primitive}from"./primitive.js";import{collectionBranchIDs,reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const key=Symbol("SectileTreeGridRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const TreeGridRoot=defineComponent({name:"SectileTreeGridRoot",inheritAttrs:false,props:{rows:{type:Array,required:true},getCellValue:{type:Function,required:true},setCellValue:{type:Function,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},expandedValue:{type:Array,default:void 0},defaultExpandedValue:{type:Array,default:()=>[]},highlightedValue:{type:String,default:void 0},defaultHighlightedValue:{type:String,default:null},editMode:{type:String,default:void 0},defaultEditMode:{type:String,default:"navigation"},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:expandedValue":_value=>true,"update:highlightedValue":_value=>true,"update:editMode":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const element=shallowRef();const connection=shallowRef();let connectionOwner;const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localExpanded=shallowRef(props.expandedValue!==void 0?props.expandedValue:props.defaultExpandedValue);const localHighlight=shallowRef(props.highlightedValue!==void 0?props.highlightedValue:props.defaultHighlightedValue);const localEditMode=shallowRef(props.editMode??props.defaultEditMode);const controlled={value:useControlledStateInvariant("TreeGridRoot","modelValue",()=>props.modelValue),expanded:useControlledStateInvariant("TreeGridRoot","expandedValue",()=>props.expandedValue),highlighted:useControlledStateInvariant("TreeGridRoot","highlightedValue",()=>props.highlightedValue),editMode:useControlledStateInvariant("TreeGridRoot","editMode",()=>props.editMode)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,expandedValue:props.expandedValue!==void 0?props.expandedValue:localExpanded.value,highlightedValue:props.highlightedValue!==void 0?props.highlightedValue:localHighlight.value,editMode:props.editMode??localEditMode.value,disabled:props.disabled,readonly:props.readonly}));const expandedRows=computed(()=>new Set(state.value.expandedValue));const refreshParts=()=>{if(element.value===void 0||connection.value===void 0)return;connection.value.setGridAttributes(props.rows.length,maxTreeGridColumnCount(props.rows));element.value.querySelectorAll("[data-sectile-tree-grid-row]").forEach(node=>connection.value?.setRowAttributes(node,{rowIndex:numberData(node.dataset["rowIndex"],1),level:numberData(node.dataset["level"],1),...node.dataset["expandable"]===void 0?{}:{expanded:node.dataset["expanded"]!==void 0}}));element.value.querySelectorAll("[data-sectile-tree-grid-cell]").forEach(node=>{const id=node.dataset["sectileTreeGridCell"];if(id!==void 0)connection.value?.setCellAttributes(node,{id,columnIndex:numberData(node.dataset["columnIndex"],1)})});element.value.querySelectorAll("[data-sectile-tree-grid-disclosure]").forEach(node=>{const id=node.dataset["sectileTreeGridDisclosure"];if(id!==void 0)connection.value?.setDisclosureAttributes(node,id)});element.value.querySelectorAll("[data-sectile-tree-grid-editor]").forEach(node=>{const id=node.dataset["sectileTreeGridEditor"];if(id!==void 0)connection.value?.bindEditor(node,{id,...node.getAttribute("aria-label")===null?{}:{label:node.getAttribute("aria-label")}})})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.selection.selected[0]??null;localExpanded.value=snapshot.expansion.ids;localHighlight.value=snapshot.cursor.current;localEditMode.value=snapshot.editMode;refreshParts()};const connect=()=>{const nextOwner=snapshotTreeGridConnectionOwner(props);if(connection.value!==void 0&&connectionOwner!==void 0&&sameTreeGridConnectionOwner(connectionOwner,nextOwner))return;connection.value?.disconnect();if(element.value===void 0)return;const cells=nextOwner.rows.flatMap(row=>row.cells.filter(id=>id!==null));const branches=collectionBranchIDs(nextOwner.rows);const requestedValue=controlled.value?props.modelValue:localValue.value;const requestedExpanded=controlled.expanded?props.expandedValue:localExpanded.value;const requestedHighlight=controlled.highlighted?props.highlightedValue:localHighlight.value;const reconciled=reconcileCollectionState(cells,requestedValue===null?[]:[requestedValue],requestedHighlight,[],"single",{preserveNullCurrent:true});const expanded=reconcileCollectionState(branches,requestedExpanded,null,[],"multiple",{preserveNullCurrent:true}).selected;const value=reconciled.selected[0]??null;const requestedEditMode=controlled.editMode?props.editMode:localEditMode.value;const editMode=reconciled.current===null&&requestedEditMode==="editing"?"navigation":requestedEditMode;localValue.value=value;localExpanded.value=expanded;localHighlight.value=reconciled.current;localEditMode.value=editMode;if(controlled.value&&requestedValue!==value)emit("update:modelValue",value);if(controlled.expanded&&!sameIDs(requestedExpanded,expanded))emit("update:expandedValue",expanded);if(controlled.highlighted&&requestedHighlight!==reconciled.current)emit("update:highlightedValue",reconciled.current);if(controlled.editMode&&props.editMode!==editMode)emit("update:editMode",editMode);connection.value=createTreeGrid({root:element.value,rows:nextOwner.rows,getCellValue:nextOwner.getCellValue,setCellValue:nextOwner.setCellValue,...controlled.value?{value}:{defaultValue:value},...controlled.expanded?{expandedValue:expanded}:{defaultExpandedValue:expanded},...controlled.highlighted?{highlightedValue:reconciled.current}:{defaultHighlightedValue:reconciled.current},...controlled.editMode?{editMode}:{defaultEditMode:editMode},disabled:nextOwner.disabled,readOnly:nextOwner.readonly,...props.policies===void 0?{}:{policies:props.policies},onValueChange:({value:value2})=>{localValue.value=value2;emit("update:modelValue",value2)},onExpandedValueChange:({value:value2})=>{localExpanded.value=value2;emit("update:expandedValue",value2)},onHighlightedValueChange:({value:value2})=>{localHighlight.value=value2;emit("update:highlightedValue",value2)},onEditModeChange:({value:value2})=>{localEditMode.value=value2;emit("update:editMode",value2)},onUpdate:refresh});connectionOwner=nextOwner;refreshParts();refresh()};provide(key,{state,expandedRows,registerRow:(node,rowIndex,level,expanded)=>connection.value?.setRowAttributes(node,{rowIndex,level,...expanded===void 0?{}:{expanded}}),registerCell:(node,id,columnIndex)=>connection.value?.setCellAttributes(node,{id,columnIndex}),registerDisclosure:(node,id)=>connection.value?.setDisclosureAttributes(node,id),registerEditor:(node,id,label)=>connection.value?.bindEditor(node,{id,...label===void 0?{}:{label}})});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.rows,()=>props.getCellValue,()=>props.setCellValue,()=>props.disabled,()=>props.readonly,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.expandedValue,()=>props.highlightedValue,()=>props.editMode],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.expanded?{expandedValue:props.expandedValue}:{},...controlled.highlighted?{highlightedValue:props.highlightedValue}:{},...controlled.editMode?{editMode:props.editMode}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=node instanceof HTMLElement?node:void 0},"data-scope":"tree-grid","data-part":"root","data-edit-mode":state.value.editMode}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridRow=defineComponent({name:"SectileTreeGridRow",inheritAttrs:false,props:{value:{type:String,required:true},rowIndex:{type:Number,required:true},level:{type:Number,default:1},expandable:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridRow");const state=computed(()=>({...root.state.value,value:props.value,expanded:root.expandedRows.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerRow(node,props.rowIndex,props.level,props.expandable?state.value.expanded:void 0)},"data-sectile-tree-grid-row":props.value,"data-row-index":props.rowIndex,"data-level":props.level,"data-expandable":props.expandable?"":void 0,"data-expanded":props.expandable&&state.value.expanded?"":void 0,"data-scope":"tree-grid","data-part":"row"}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridCell=defineComponent({name:"SectileTreeGridCell",inheritAttrs:false,props:{value:{type:String,required:true},columnIndex:{type:Number,required:true},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridCell");const state=computed(()=>({...root.state.value,value:props.value,selected:root.state.value.value===props.value,highlighted:root.state.value.highlightedValue===props.value,editing:root.state.value.highlightedValue===props.value&&root.state.value.editMode==="editing"}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerCell(node,props.value,props.columnIndex)},"data-sectile-tree-grid-cell":props.value,"data-column-index":props.columnIndex,"data-scope":"tree-grid","data-part":"cell","data-selected":state.value.selected?"":void 0,"data-highlighted":state.value.highlighted?"":void 0,"data-editing":state.value.editing?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridDisclosure=defineComponent({name:"SectileTreeGridDisclosure",inheritAttrs:false,props:{for:{type:String,required:true},as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridDisclosure");const state=computed(()=>({...root.state.value,value:props.for,expanded:root.expandedRows.value.has(props.for)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==="button"?"button":void 0,disabled:props.as==="button"?root.state.value.disabled:void 0,elementRef:node=>{if(node instanceof HTMLElement)root.registerDisclosure(node,props.for)},"data-sectile-tree-grid-disclosure":props.for,"data-scope":"tree-grid","data-part":"disclosure","data-state":state.value.expanded?"open":"closed"}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridEditor=defineComponent({name:"SectileTreeGridEditor",inheritAttrs:false,props:{for:{type:String,required:true},label:{type:String,default:void 0}},setup(props,{attrs}){const root=useRoot("TreeGridEditor");const editing=computed(()=>root.state.value.highlightedValue===props.for&&root.state.value.editMode==="editing");return()=>h("input",mergeProps(attrs,{ref:node=>{if(node instanceof HTMLInputElement)root.registerEditor(node,props.for,props.label)},hidden:!editing.value,disabled:root.state.value.disabled,readonly:root.state.value.readonly,"aria-label":props.label,"data-sectile-tree-grid-editor":props.for,"data-scope":"tree-grid","data-part":"editor"}))}});function numberData(value,fallback){const parsed=Number(value);return Number.isFinite(parsed)?parsed:fallback}function maxTreeGridColumnCount(rows){let maximum=0;for(const row of rows)maximum=Math.max(maximum,row.cells.length);return maximum}function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside TreeGridRoot.`);return root}function snapshotTreeGridConnectionOwner(props){return Object.freeze({rows:Object.freeze(props.rows.map(row=>Object.freeze({id:row.id,parentID:row.parentID,cells:Object.freeze([...row.cells])}))),getCellValue:props.getCellValue,setCellValue:props.setCellValue,disabled:props.disabled,readonly:props.readonly,eligible:props.policies?.eligible,boundary:props.policies?.boundary,maxScan:props.policies?.maxScan})}function sameTreeGridConnectionOwner(left,right){if(left.rows.length!==right.rows.length||left.getCellValue!==right.getCellValue||left.setCellValue!==right.setCellValue||left.disabled!==right.disabled||left.readonly!==right.readonly||left.eligible!==right.eligible||left.boundary!==right.boundary||left.maxScan!==right.maxScan)return false;for(let rowIndex=0;rowIndex<left.rows.length;rowIndex+=1){const leftRow=left.rows[rowIndex];const rightRow=right.rows[rowIndex];if(leftRow.id!==rightRow.id||leftRow.parentID!==rightRow.parentID||leftRow.cells.length!==rightRow.cells.length)return false;for(let column=0;column<leftRow.cells.length;column+=1){if(leftRow.cells[column]!==rightRow.cells[column])return false}}return true}export{TreeGridCell,TreeGridDisclosure,TreeGridEditor,TreeGridRoot,TreeGridRow};
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createTreeGrid}from"@sectile/dom/tree-grid";import{Primitive}from"./primitive.js";import{collectionBranchIDs,reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./internal/conditional-presence.js";const key=Symbol("SectileTreeGridRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const TreeGridRoot=defineComponent({name:"SectileTreeGridRoot",inheritAttrs:false,props:{rows:{type:Array,required:true},getCellValue:{type:Function,required:true},setCellValue:{type:Function,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},expandedValue:{type:Array,default:void 0},defaultExpandedValue:{type:Array,default:()=>[]},highlightedValue:{type:String,default:void 0},defaultHighlightedValue:{type:String,default:null},editMode:{type:String,default:void 0},defaultEditMode:{type:String,default:"navigation"},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:expandedValue":_value=>true,"update:highlightedValue":_value=>true,"update:editMode":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const element=shallowRef();const connection=shallowRef();let connectionOwner;const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localExpanded=shallowRef(props.expandedValue!==void 0?props.expandedValue:props.defaultExpandedValue);const localHighlight=shallowRef(props.highlightedValue!==void 0?props.highlightedValue:props.defaultHighlightedValue);const localEditMode=shallowRef(props.editMode??props.defaultEditMode);const controlled={value:useControlledStateInvariant("TreeGridRoot","modelValue",()=>props.modelValue),expanded:useControlledStateInvariant("TreeGridRoot","expandedValue",()=>props.expandedValue),highlighted:useControlledStateInvariant("TreeGridRoot","highlightedValue",()=>props.highlightedValue),editMode:useControlledStateInvariant("TreeGridRoot","editMode",()=>props.editMode)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,expandedValue:props.expandedValue!==void 0?props.expandedValue:localExpanded.value,highlightedValue:props.highlightedValue!==void 0?props.highlightedValue:localHighlight.value,editMode:props.editMode??localEditMode.value,disabled:props.disabled,readonly:props.readonly}));const expandedRows=computed(()=>new Set(state.value.expandedValue));const refreshParts=()=>{if(element.value===void 0||connection.value===void 0)return;connection.value.setGridAttributes(props.rows.length,maxTreeGridColumnCount(props.rows));element.value.querySelectorAll("[data-sectile-tree-grid-row]").forEach(node=>connection.value?.setRowAttributes(node,{rowIndex:numberData(node.dataset["rowIndex"],1),level:numberData(node.dataset["level"],1),...node.dataset["expandable"]===void 0?{}:{expanded:node.dataset["expanded"]!==void 0}}));element.value.querySelectorAll("[data-sectile-tree-grid-cell]").forEach(node=>{const id=node.dataset["sectileTreeGridCell"];if(id!==void 0)connection.value?.setCellAttributes(node,{id,columnIndex:numberData(node.dataset["columnIndex"],1)})});element.value.querySelectorAll("[data-sectile-tree-grid-disclosure]").forEach(node=>{const id=node.dataset["sectileTreeGridDisclosure"];if(id!==void 0)connection.value?.setDisclosureAttributes(node,id)});element.value.querySelectorAll("[data-sectile-tree-grid-editor]").forEach(node=>{const id=node.dataset["sectileTreeGridEditor"];if(id!==void 0)connection.value?.bindEditor(node,{id,...node.getAttribute("aria-label")===null?{}:{label:node.getAttribute("aria-label")}})})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.selection.selected[0]??null;localExpanded.value=snapshot.expansion.ids;localHighlight.value=snapshot.cursor.current;localEditMode.value=snapshot.editMode;refreshParts()};const connect=()=>{const nextOwner=snapshotTreeGridConnectionOwner(props);if(connection.value!==void 0&&connectionOwner!==void 0&&sameTreeGridConnectionOwner(connectionOwner,nextOwner))return;connection.value?.disconnect();if(element.value===void 0)return;const cells=nextOwner.rows.flatMap(row=>row.cells.filter(id=>id!==null));const branches=collectionBranchIDs(nextOwner.rows);const requestedValue=controlled.value?props.modelValue:localValue.value;const requestedExpanded=controlled.expanded?props.expandedValue:localExpanded.value;const requestedHighlight=controlled.highlighted?props.highlightedValue:localHighlight.value;const reconciled=reconcileCollectionState(cells,requestedValue===null?[]:[requestedValue],requestedHighlight,[],"single",{preserveNullCurrent:true});const expanded=reconcileCollectionState(branches,requestedExpanded,null,[],"multiple",{preserveNullCurrent:true}).selected;const value=reconciled.selected[0]??null;const requestedEditMode=controlled.editMode?props.editMode:localEditMode.value;const editMode=reconciled.current===null&&requestedEditMode==="editing"?"navigation":requestedEditMode;localValue.value=value;localExpanded.value=expanded;localHighlight.value=reconciled.current;localEditMode.value=editMode;if(controlled.value&&requestedValue!==value)emit("update:modelValue",value);if(controlled.expanded&&!sameIDs(requestedExpanded,expanded))emit("update:expandedValue",expanded);if(controlled.highlighted&&requestedHighlight!==reconciled.current)emit("update:highlightedValue",reconciled.current);if(controlled.editMode&&props.editMode!==editMode)emit("update:editMode",editMode);connection.value=createTreeGrid({root:element.value,rows:nextOwner.rows,getCellValue:nextOwner.getCellValue,setCellValue:nextOwner.setCellValue,...controlled.value?{value}:{defaultValue:value},...controlled.expanded?{expandedValue:expanded}:{defaultExpandedValue:expanded},...controlled.highlighted?{highlightedValue:reconciled.current}:{defaultHighlightedValue:reconciled.current},...controlled.editMode?{editMode}:{defaultEditMode:editMode},disabled:nextOwner.disabled,readOnly:nextOwner.readonly,...props.policies===void 0?{}:{policies:props.policies},onValueChange:({value:value2})=>{localValue.value=value2;emit("update:modelValue",value2)},onExpandedValueChange:({value:value2})=>{localExpanded.value=value2;emit("update:expandedValue",value2)},onHighlightedValueChange:({value:value2})=>{localHighlight.value=value2;emit("update:highlightedValue",value2)},onEditModeChange:({value:value2})=>{localEditMode.value=value2;emit("update:editMode",value2)},onUpdate:refresh});connectionOwner=nextOwner;refreshParts();refresh()};provide(key,{state,expandedRows,registerRow:(node,rowIndex,level,expanded)=>connection.value?.setRowAttributes(node,{rowIndex,level,...expanded===void 0?{}:{expanded}}),registerCell:(node,id,columnIndex)=>connection.value?.setCellAttributes(node,{id,columnIndex}),registerDisclosure:(node,id)=>connection.value?.setDisclosureAttributes(node,id),registerEditor:(node,id,label)=>connection.value?.bindEditor(node,{id,...label===void 0?{}:{label}}),handleEditorKeydown:event=>{if(connection.value?.handleKeyboardEvent(event)!==true)return;event.preventDefault();event.stopPropagation()}});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.rows,()=>props.getCellValue,()=>props.setCellValue,()=>props.disabled,()=>props.readonly,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.expandedValue,()=>props.highlightedValue,()=>props.editMode],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.expanded?{expandedValue:props.expandedValue}:{},...controlled.highlighted?{highlightedValue:props.highlightedValue}:{},...controlled.editMode?{editMode:props.editMode}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=node instanceof HTMLElement?node:void 0},"data-scope":"tree-grid","data-part":"root","data-edit-mode":state.value.editMode}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridRow=defineComponent({name:"SectileTreeGridRow",inheritAttrs:false,props:{value:{type:String,required:true},rowIndex:{type:Number,required:true},level:{type:Number,default:1},expandable:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridRow");const state=computed(()=>({...root.state.value,value:props.value,expanded:root.expandedRows.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerRow(node,props.rowIndex,props.level,props.expandable?state.value.expanded:void 0)},"data-sectile-tree-grid-row":props.value,"data-row-index":props.rowIndex,"data-level":props.level,"data-expandable":props.expandable?"":void 0,"data-expanded":props.expandable&&state.value.expanded?"":void 0,"data-scope":"tree-grid","data-part":"row"}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridCell=defineComponent({name:"SectileTreeGridCell",inheritAttrs:false,props:{value:{type:String,required:true},columnIndex:{type:Number,required:true},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridCell");const state=computed(()=>({...root.state.value,value:props.value,selected:root.state.value.value===props.value,highlighted:root.state.value.highlightedValue===props.value,editing:root.state.value.highlightedValue===props.value&&root.state.value.editMode==="editing"}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerCell(node,props.value,props.columnIndex)},"data-sectile-tree-grid-cell":props.value,"data-column-index":props.columnIndex,"data-scope":"tree-grid","data-part":"cell","data-selected":state.value.selected?"":void 0,"data-highlighted":state.value.highlighted?"":void 0,"data-editing":state.value.editing?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridDisclosure=defineComponent({name:"SectileTreeGridDisclosure",inheritAttrs:false,props:{for:{type:String,required:true},as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeGridDisclosure");const state=computed(()=>({...root.state.value,value:props.for,expanded:root.expandedRows.value.has(props.for)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==="button"?"button":void 0,disabled:props.as==="button"?root.state.value.disabled:void 0,elementRef:node=>{if(node instanceof HTMLElement)root.registerDisclosure(node,props.for)},"data-sectile-tree-grid-disclosure":props.for,"data-scope":"tree-grid","data-part":"disclosure","data-state":state.value.expanded?"open":"closed"}),{default:()=>slots["default"]?.(state.value)})}});const TreeGridEditor=defineComponent({name:"SectileTreeGridEditor",inheritAttrs:false,props:{for:{type:String,required:true},label:{type:String,default:void 0},...conditionalPresenceProps},setup(props,{attrs}){const root=useRoot("TreeGridEditor");const editing=computed(()=>root.state.value.highlightedValue===props.for&&root.state.value.editMode==="editing");const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(editing,forcePresent);return()=>{const inactivePresent=!editing.value&&presence.present.value;return h("input",mergeProps(attrs,{ref:node=>{const element=presence.register(node);if(element?.tagName==="INPUT")root.registerEditor(element,props.for,props.label)},hidden:presence.hidden.value,tabindex:inactivePresent?-1:void 0,onKeydown:root.handleEditorKeydown,...inactivePresent?{inert:true,"aria-hidden":"true"}:{},disabled:root.state.value.disabled,readonly:root.state.value.readonly,"aria-label":props.label,"data-sectile-tree-grid-editor":props.for,"data-scope":"tree-grid","data-part":"editor","data-state":editing.value?"editing":"idle"}))}}});function numberData(value,fallback){const parsed=Number(value);return Number.isFinite(parsed)?parsed:fallback}function maxTreeGridColumnCount(rows){let maximum=0;for(const row of rows)maximum=Math.max(maximum,row.cells.length);return maximum}function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside TreeGridRoot.`);return root}function snapshotTreeGridConnectionOwner(props){return Object.freeze({rows:Object.freeze(props.rows.map(row=>Object.freeze({id:row.id,parentID:row.parentID,cells:Object.freeze([...row.cells])}))),getCellValue:props.getCellValue,setCellValue:props.setCellValue,disabled:props.disabled,readonly:props.readonly,eligible:props.policies?.eligible,boundary:props.policies?.boundary,maxScan:props.policies?.maxScan})}function sameTreeGridConnectionOwner(left,right){if(left.rows.length!==right.rows.length||left.getCellValue!==right.getCellValue||left.setCellValue!==right.setCellValue||left.disabled!==right.disabled||left.readonly!==right.readonly||left.eligible!==right.eligible||left.boundary!==right.boundary||left.maxScan!==right.maxScan)return false;for(let rowIndex=0;rowIndex<left.rows.length;rowIndex+=1){const leftRow=left.rows[rowIndex];const rightRow=right.rows[rowIndex];if(leftRow.id!==rightRow.id||leftRow.parentID!==rightRow.parentID||leftRow.cells.length!==rightRow.cells.length)return false;for(let column=0;column<leftRow.cells.length;column+=1){if(leftRow.cells[column]!==rightRow.cells[column])return false}}return true}export{TreeGridCell,TreeGridDisclosure,TreeGridEditor,TreeGridRoot,TreeGridRow};
|
|
2
2
|
//# sourceMappingURL=tree-grid.js.map
|
package/dist/tree-grid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tree-grid.ts"],"mappings":"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","names":["value"],"file":"tree-grid.js"}
|
|
1
|
+
{"version":3,"sources":["../src/tree-grid.ts"],"mappings":"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","names":["value"],"file":"tree-grid.js"}
|
package/dist/tree-view.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
2
2
|
import { type TreeNodeInput, type TreeViewSelectionMode } from '@sectile/dom/tree-view';
|
|
3
3
|
import { type PrimitiveAs } from './primitive.js';
|
|
4
|
+
import { type ConditionalPresenceProps } from './internal/conditional-presence.js';
|
|
4
5
|
export interface TreeViewRootProps {
|
|
5
6
|
readonly nodes: readonly TreeNodeInput<string>[];
|
|
6
7
|
readonly selectionMode?: TreeViewSelectionMode;
|
|
@@ -41,7 +42,7 @@ export interface TreeViewPartProps {
|
|
|
41
42
|
readonly as?: PrimitiveAs;
|
|
42
43
|
readonly asChild?: boolean;
|
|
43
44
|
}
|
|
44
|
-
export interface TreeViewGroupProps extends TreeViewPartProps {
|
|
45
|
+
export interface TreeViewGroupProps extends TreeViewPartProps, ConditionalPresenceProps {
|
|
45
46
|
readonly for: string;
|
|
46
47
|
}
|
|
47
48
|
export declare const TreeViewRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
@@ -196,6 +197,10 @@ export type TreeViewValueChangeHandler = (value: readonly string[]) => void;
|
|
|
196
197
|
export type TreeViewExpandedValuesChangeHandler = (value: readonly string[]) => void;
|
|
197
198
|
export type TreeViewHighlightedValueChangeHandler = (value: string | null) => void;
|
|
198
199
|
export declare const TreeViewGroup: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
200
|
+
forcePresent: {
|
|
201
|
+
readonly type: BooleanConstructor;
|
|
202
|
+
readonly default: false;
|
|
203
|
+
};
|
|
199
204
|
as: {
|
|
200
205
|
type: PropType<PrimitiveAs>;
|
|
201
206
|
default: string;
|
|
@@ -209,6 +214,10 @@ export declare const TreeViewGroup: import("vue").DefineComponent<import("vue").
|
|
|
209
214
|
required: true;
|
|
210
215
|
};
|
|
211
216
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
217
|
+
forcePresent: {
|
|
218
|
+
readonly type: BooleanConstructor;
|
|
219
|
+
readonly default: false;
|
|
220
|
+
};
|
|
212
221
|
as: {
|
|
213
222
|
type: PropType<PrimitiveAs>;
|
|
214
223
|
default: string;
|
|
@@ -222,6 +231,7 @@ export declare const TreeViewGroup: import("vue").DefineComponent<import("vue").
|
|
|
222
231
|
required: true;
|
|
223
232
|
};
|
|
224
233
|
}>> & Readonly<{}>, {
|
|
234
|
+
forcePresent: boolean;
|
|
225
235
|
as: PrimitiveAs;
|
|
226
236
|
asChild: boolean;
|
|
227
237
|
}, SlotsType<{
|
package/dist/tree-view.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createTreeView}from"@sectile/dom/tree-view";import{Primitive}from"./primitive.js";import{collectionBranchIDs,reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const key=Symbol("SectileTreeViewRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const TreeViewRoot=defineComponent({name:"SectileTreeViewRoot",inheritAttrs:false,props:{nodes:{type:Array,required:true},selectionMode:{type:String,default:"single"},modelValue:{type:Array,default:void 0},defaultValue:{type:Array,default:()=>[]},expandedValues:{type:Array,default:void 0},defaultExpandedValues:{type:Array,default:()=>[]},highlightedValue:{type:String,default:void 0},defaultHighlightedValue:{type:String,default:null},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:void 0},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:expandedValues":_value=>true,"update:highlightedValue":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const element=shallowRef();const connection=shallowRef();let connectionOwner;const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localExpanded=shallowRef(props.expandedValues!==void 0?props.expandedValues:props.defaultExpandedValues);const localHighlight=shallowRef(props.highlightedValue!==void 0?props.highlightedValue:props.defaultHighlightedValue);const controlled={value:useControlledStateInvariant("TreeViewRoot","modelValue",()=>props.modelValue),expanded:useControlledStateInvariant("TreeViewRoot","expandedValues",()=>props.expandedValues),highlighted:useControlledStateInvariant("TreeViewRoot","highlightedValue",()=>props.highlightedValue)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,expandedValues:props.expandedValues!==void 0?props.expandedValues:localExpanded.value,highlightedValue:props.highlightedValue!==void 0?props.highlightedValue:localHighlight.value,disabled:props.disabled,readonly:props.readonly}));const refreshParts=()=>{if(element.value===void 0||connection.value===void 0)return;element.value.querySelectorAll("[data-sectile-tree-view-item]").forEach(node=>{const id=node.dataset["sectileTreeViewItem"];if(id!==void 0)connection.value?.setItemAttributes(node,{id,disabled:node.dataset["disabled"]!==void 0})});element.value.querySelectorAll("[data-sectile-tree-view-disclosure]").forEach(node=>{const id=node.dataset["sectileTreeViewDisclosure"];if(id!==void 0)connection.value?.setDisclosureAttributes(node,id)})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.selection.selected;localExpanded.value=snapshot.expansion.ids;localHighlight.value=snapshot.cursor.current;refreshParts()};const connect=()=>{const nextOwner=snapshotTreeViewConnectionOwner(props);if(connection.value!==void 0&&connectionOwner!==void 0&&sameTreeViewConnectionOwner(connectionOwner,nextOwner))return;connection.value?.disconnect();if(element.value===void 0)return;const items=nextOwner.nodes.map(node=>node.id);const branches=collectionBranchIDs(nextOwner.nodes);const requestedValue=controlled.value?props.modelValue:localValue.value;const requestedExpanded=controlled.expanded?props.expandedValues:localExpanded.value;const requestedHighlight=controlled.highlighted?props.highlightedValue:localHighlight.value;const reconciled=reconcileCollectionState(items,requestedValue,requestedHighlight,nextOwner.disabledItems,nextOwner.selectionMode,{preserveNullCurrent:true});const expanded=reconcileCollectionState(branches,requestedExpanded,null,[],"multiple",{preserveNullCurrent:true}).selected;localValue.value=reconciled.selected;localExpanded.value=expanded;localHighlight.value=reconciled.current;if(controlled.value&&!sameIDs(requestedValue,reconciled.selected))emit("update:modelValue",reconciled.selected);if(controlled.expanded&&!sameIDs(requestedExpanded,expanded))emit("update:expandedValues",expanded);if(controlled.highlighted&&requestedHighlight!==reconciled.current)emit("update:highlightedValue",reconciled.current);connection.value=createTreeView({root:element.value,nodes:nextOwner.nodes,selectionMode:nextOwner.selectionMode,...controlled.value?{value:reconciled.selected}:{defaultValue:reconciled.selected},...controlled.expanded?{expandedValues:expanded}:{defaultExpandedValues:expanded},...controlled.highlighted?{highlightedValue:reconciled.current}:{defaultHighlightedValue:reconciled.current},disabledItems:nextOwner.disabledItems,disabled:nextOwner.disabled,readOnly:nextOwner.readonly,...props.policies===void 0?{}:{policies:props.policies},onValueChange:({value})=>{localValue.value=value;emit("update:modelValue",value)},onExpandedValuesChange:({value})=>{localExpanded.value=value;emit("update:expandedValues",value)},onHighlightedValueChange:({value})=>{localHighlight.value=value;emit("update:highlightedValue",value)},onUpdate:refresh});connectionOwner=nextOwner;connection.value.setTreeAttributes(nextOwner.label);refreshParts();refresh()};const disabledItems=computed(()=>new Set(props.disabledItems));const selectedItems=computed(()=>new Set(state.value.value));const expandedItems=computed(()=>new Set(state.value.expandedValues));provide(key,{state,selectedItems,expandedItems,disabledItems,registerItem:(node,id,disabled)=>connection.value?.setItemAttributes(node,{id,disabled}),registerDisclosure:(node,id)=>connection.value?.setDisclosureAttributes(node,id)});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.nodes,()=>props.selectionMode,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.expandedValues,()=>props.highlightedValue],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.expanded?{expandedValues:props.expandedValues}:{},...controlled.highlighted?{highlightedValue:props.highlightedValue}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=node instanceof HTMLElement?node:void 0},"data-scope":"tree-view","data-part":"root"}),{default:()=>slots["default"]?.(state.value)})}});const TreeViewGroup=defineComponent({name:"SectileTreeViewGroup",inheritAttrs:false,props:{for:{type:String,required:true},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeViewGroup");const expanded=computed(()=>root.expandedItems.value.has(props.for));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,role:"group",hidden:!expanded.value,"data-scope":"tree-view","data-part":"group","data-state":expanded.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}});const TreeViewItem=defineComponent({name:"SectileTreeViewItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeViewItem");const state=computed(()=>({expandedValues:root.state.value.expandedValues,highlightedValue:root.state.value.highlightedValue,readonly:root.state.value.readonly,value:props.value,selectedValues:root.state.value.value,selected:root.selectedItems.value.has(props.value),expanded:root.expandedItems.value.has(props.value),highlighted:root.state.value.highlightedValue===props.value,disabled:root.state.value.disabled||props.disabled||root.disabledItems.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerItem(node,props.value,props.disabled)},"data-sectile-tree-view-item":props.value,"data-scope":"tree-view","data-part":"item","data-selected":state.value.selected?"":void 0,"data-expanded":state.value.expanded?"":void 0,"data-highlighted":state.value.highlighted?"":void 0,"data-disabled":state.value.disabled?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const TreeViewDisclosure=defineComponent({name:"SectileTreeViewDisclosure",inheritAttrs:false,props:{for:{type:String,required:true},as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeViewDisclosure");const state=computed(()=>({expandedValues:root.state.value.expandedValues,highlightedValue:root.state.value.highlightedValue,readonly:root.state.value.readonly,value:props.for,selectedValues:root.state.value.value,selected:root.selectedItems.value.has(props.for),expanded:root.expandedItems.value.has(props.for),highlighted:root.state.value.highlightedValue===props.for,disabled:root.state.value.disabled||root.disabledItems.value.has(props.for)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==="button"?"button":void 0,disabled:props.as==="button"?state.value.disabled:void 0,elementRef:node=>{if(node instanceof HTMLElement)root.registerDisclosure(node,props.for)},"data-sectile-tree-view-disclosure":props.for,"data-scope":"tree-view","data-part":"disclosure","data-state":state.value.expanded?"open":"closed"}),{default:()=>slots["default"]?.(state.value)})}});function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside TreeViewRoot.`);return root}function snapshotTreeViewConnectionOwner(props){return Object.freeze({nodes:Object.freeze(props.nodes.map(node=>Object.freeze({id:node.id,parentID:node.parentID}))),selectionMode:props.selectionMode,disabledItems:Object.freeze([...props.disabledItems]),disabled:props.disabled,readonly:props.readonly,label:props.label,eligible:props.policies?.eligible})}function sameTreeViewConnectionOwner(left,right){if(left.nodes.length!==right.nodes.length||!sameIDs(left.disabledItems,right.disabledItems)||left.selectionMode!==right.selectionMode||left.disabled!==right.disabled||left.readonly!==right.readonly||left.label!==right.label||left.eligible!==right.eligible)return false;for(let index=0;index<left.nodes.length;index+=1){const leftNode=left.nodes[index];const rightNode=right.nodes[index];if(leftNode.id!==rightNode.id||leftNode.parentID!==rightNode.parentID){return false}}return true}export{TreeViewDisclosure,TreeViewGroup,TreeViewItem,TreeViewRoot};
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createTreeView}from"@sectile/dom/tree-view";import{Primitive}from"./primitive.js";import{collectionBranchIDs,reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./internal/conditional-presence.js";const key=Symbol("SectileTreeViewRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const TreeViewRoot=defineComponent({name:"SectileTreeViewRoot",inheritAttrs:false,props:{nodes:{type:Array,required:true},selectionMode:{type:String,default:"single"},modelValue:{type:Array,default:void 0},defaultValue:{type:Array,default:()=>[]},expandedValues:{type:Array,default:void 0},defaultExpandedValues:{type:Array,default:()=>[]},highlightedValue:{type:String,default:void 0},defaultHighlightedValue:{type:String,default:null},disabledItems:{type:Array,default:()=>[]},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:void 0},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:expandedValues":_value=>true,"update:highlightedValue":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const element=shallowRef();const connection=shallowRef();let connectionOwner;const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localExpanded=shallowRef(props.expandedValues!==void 0?props.expandedValues:props.defaultExpandedValues);const localHighlight=shallowRef(props.highlightedValue!==void 0?props.highlightedValue:props.defaultHighlightedValue);const controlled={value:useControlledStateInvariant("TreeViewRoot","modelValue",()=>props.modelValue),expanded:useControlledStateInvariant("TreeViewRoot","expandedValues",()=>props.expandedValues),highlighted:useControlledStateInvariant("TreeViewRoot","highlightedValue",()=>props.highlightedValue)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,expandedValues:props.expandedValues!==void 0?props.expandedValues:localExpanded.value,highlightedValue:props.highlightedValue!==void 0?props.highlightedValue:localHighlight.value,disabled:props.disabled,readonly:props.readonly}));const refreshParts=()=>{if(element.value===void 0||connection.value===void 0)return;element.value.querySelectorAll("[data-sectile-tree-view-item]").forEach(node=>{const id=node.dataset["sectileTreeViewItem"];if(id!==void 0)connection.value?.setItemAttributes(node,{id,disabled:node.dataset["disabled"]!==void 0})});element.value.querySelectorAll("[data-sectile-tree-view-disclosure]").forEach(node=>{const id=node.dataset["sectileTreeViewDisclosure"];if(id!==void 0)connection.value?.setDisclosureAttributes(node,id)})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.selection.selected;localExpanded.value=snapshot.expansion.ids;localHighlight.value=snapshot.cursor.current;refreshParts()};const connect=()=>{const nextOwner=snapshotTreeViewConnectionOwner(props);if(connection.value!==void 0&&connectionOwner!==void 0&&sameTreeViewConnectionOwner(connectionOwner,nextOwner))return;connection.value?.disconnect();if(element.value===void 0)return;const items=nextOwner.nodes.map(node=>node.id);const branches=collectionBranchIDs(nextOwner.nodes);const requestedValue=controlled.value?props.modelValue:localValue.value;const requestedExpanded=controlled.expanded?props.expandedValues:localExpanded.value;const requestedHighlight=controlled.highlighted?props.highlightedValue:localHighlight.value;const reconciled=reconcileCollectionState(items,requestedValue,requestedHighlight,nextOwner.disabledItems,nextOwner.selectionMode,{preserveNullCurrent:true});const expanded=reconcileCollectionState(branches,requestedExpanded,null,[],"multiple",{preserveNullCurrent:true}).selected;localValue.value=reconciled.selected;localExpanded.value=expanded;localHighlight.value=reconciled.current;if(controlled.value&&!sameIDs(requestedValue,reconciled.selected))emit("update:modelValue",reconciled.selected);if(controlled.expanded&&!sameIDs(requestedExpanded,expanded))emit("update:expandedValues",expanded);if(controlled.highlighted&&requestedHighlight!==reconciled.current)emit("update:highlightedValue",reconciled.current);connection.value=createTreeView({root:element.value,nodes:nextOwner.nodes,selectionMode:nextOwner.selectionMode,...controlled.value?{value:reconciled.selected}:{defaultValue:reconciled.selected},...controlled.expanded?{expandedValues:expanded}:{defaultExpandedValues:expanded},...controlled.highlighted?{highlightedValue:reconciled.current}:{defaultHighlightedValue:reconciled.current},disabledItems:nextOwner.disabledItems,disabled:nextOwner.disabled,readOnly:nextOwner.readonly,...props.policies===void 0?{}:{policies:props.policies},onValueChange:({value})=>{localValue.value=value;emit("update:modelValue",value)},onExpandedValuesChange:({value})=>{localExpanded.value=value;emit("update:expandedValues",value)},onHighlightedValueChange:({value})=>{localHighlight.value=value;emit("update:highlightedValue",value)},onUpdate:refresh});connectionOwner=nextOwner;connection.value.setTreeAttributes(nextOwner.label);refreshParts();refresh()};const disabledItems=computed(()=>new Set(props.disabledItems));const selectedItems=computed(()=>new Set(state.value.value));const expandedItems=computed(()=>new Set(state.value.expandedValues));provide(key,{state,selectedItems,expandedItems,disabledItems,registerItem:(node,id,disabled)=>connection.value?.setItemAttributes(node,{id,disabled}),registerDisclosure:(node,id)=>connection.value?.setDisclosureAttributes(node,id)});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.nodes,()=>props.selectionMode,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.expandedValues,()=>props.highlightedValue],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.expanded?{expandedValues:props.expandedValues}:{},...controlled.highlighted?{highlightedValue:props.highlightedValue}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{element.value=node instanceof HTMLElement?node:void 0},"data-scope":"tree-view","data-part":"root"}),{default:()=>slots["default"]?.(state.value)})}});const TreeViewGroup=defineComponent({name:"SectileTreeViewGroup",inheritAttrs:false,props:{for:{type:String,required:true},...partProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeViewGroup");const expanded=computed(()=>root.expandedItems.value.has(props.for));const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(expanded,forcePresent);return()=>{const inactivePresent=!expanded.value&&presence.present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:presence.register,role:"group",hidden:presence.hidden.value,...inactivePresent?{inert:true,"aria-hidden":"true"}:{},"data-scope":"tree-view","data-part":"group","data-state":expanded.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const TreeViewItem=defineComponent({name:"SectileTreeViewItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeViewItem");const state=computed(()=>({expandedValues:root.state.value.expandedValues,highlightedValue:root.state.value.highlightedValue,readonly:root.state.value.readonly,value:props.value,selectedValues:root.state.value.value,selected:root.selectedItems.value.has(props.value),expanded:root.expandedItems.value.has(props.value),highlighted:root.state.value.highlightedValue===props.value,disabled:root.state.value.disabled||props.disabled||root.disabledItems.value.has(props.value)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerItem(node,props.value,props.disabled)},"data-sectile-tree-view-item":props.value,"data-scope":"tree-view","data-part":"item","data-selected":state.value.selected?"":void 0,"data-expanded":state.value.expanded?"":void 0,"data-highlighted":state.value.highlighted?"":void 0,"data-disabled":state.value.disabled?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const TreeViewDisclosure=defineComponent({name:"SectileTreeViewDisclosure",inheritAttrs:false,props:{for:{type:String,required:true},as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("TreeViewDisclosure");const state=computed(()=>({expandedValues:root.state.value.expandedValues,highlightedValue:root.state.value.highlightedValue,readonly:root.state.value.readonly,value:props.for,selectedValues:root.state.value.value,selected:root.selectedItems.value.has(props.for),expanded:root.expandedItems.value.has(props.for),highlighted:root.state.value.highlightedValue===props.for,disabled:root.state.value.disabled||root.disabledItems.value.has(props.for)}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==="button"?"button":void 0,disabled:props.as==="button"?state.value.disabled:void 0,elementRef:node=>{if(node instanceof HTMLElement)root.registerDisclosure(node,props.for)},"data-sectile-tree-view-disclosure":props.for,"data-scope":"tree-view","data-part":"disclosure","data-state":state.value.expanded?"open":"closed"}),{default:()=>slots["default"]?.(state.value)})}});function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside TreeViewRoot.`);return root}function snapshotTreeViewConnectionOwner(props){return Object.freeze({nodes:Object.freeze(props.nodes.map(node=>Object.freeze({id:node.id,parentID:node.parentID}))),selectionMode:props.selectionMode,disabledItems:Object.freeze([...props.disabledItems]),disabled:props.disabled,readonly:props.readonly,label:props.label,eligible:props.policies?.eligible})}function sameTreeViewConnectionOwner(left,right){if(left.nodes.length!==right.nodes.length||!sameIDs(left.disabledItems,right.disabledItems)||left.selectionMode!==right.selectionMode||left.disabled!==right.disabled||left.readonly!==right.readonly||left.label!==right.label||left.eligible!==right.eligible)return false;for(let index=0;index<left.nodes.length;index+=1){const leftNode=left.nodes[index];const rightNode=right.nodes[index];if(leftNode.id!==rightNode.id||leftNode.parentID!==rightNode.parentID){return false}}return true}export{TreeViewDisclosure,TreeViewGroup,TreeViewItem,TreeViewRoot};
|
|
2
2
|
//# sourceMappingURL=tree-view.js.map
|