@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/accordion.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 AccordionType = 'single' | 'multiple';
|
|
4
5
|
export type AccordionValue = string | readonly string[];
|
|
5
6
|
export interface AccordionRootProps {
|
|
@@ -34,6 +35,8 @@ export interface AccordionPartProps {
|
|
|
34
35
|
readonly as?: PrimitiveAs;
|
|
35
36
|
readonly asChild?: boolean;
|
|
36
37
|
}
|
|
38
|
+
export interface AccordionContentProps extends AccordionPartProps, ConditionalPresenceProps {
|
|
39
|
+
}
|
|
37
40
|
export declare const AccordionRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
38
41
|
items: {
|
|
39
42
|
type: PropType<readonly string[]>;
|
|
@@ -224,6 +227,10 @@ export declare const AccordionTrigger: import("vue").DefineComponent<import("vue
|
|
|
224
227
|
default: (props: AccordionItemSlotProps) => VNodeChild;
|
|
225
228
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
226
229
|
export declare const AccordionContent: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
230
|
+
forcePresent: {
|
|
231
|
+
readonly type: BooleanConstructor;
|
|
232
|
+
readonly default: false;
|
|
233
|
+
};
|
|
227
234
|
as: {
|
|
228
235
|
type: PropType<PrimitiveAs>;
|
|
229
236
|
default: PrimitiveAs;
|
|
@@ -233,6 +240,10 @@ export declare const AccordionContent: import("vue").DefineComponent<import("vue
|
|
|
233
240
|
default: boolean;
|
|
234
241
|
};
|
|
235
242
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
243
|
+
forcePresent: {
|
|
244
|
+
readonly type: BooleanConstructor;
|
|
245
|
+
readonly default: false;
|
|
246
|
+
};
|
|
236
247
|
as: {
|
|
237
248
|
type: PropType<PrimitiveAs>;
|
|
238
249
|
default: PrimitiveAs;
|
|
@@ -242,6 +253,7 @@ export declare const AccordionContent: import("vue").DefineComponent<import("vue
|
|
|
242
253
|
default: boolean;
|
|
243
254
|
};
|
|
244
255
|
}>> & Readonly<{}>, {
|
|
256
|
+
forcePresent: boolean;
|
|
245
257
|
as: PrimitiveAs;
|
|
246
258
|
asChild: boolean;
|
|
247
259
|
}, SlotsType<{
|
package/dist/accordion.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,provide,shallowRef,watch}from"vue";import{createAccordionController,getAccordionPanelAttributes,getAccordionRootAttributes,getAccordionTriggerAttributes,toAccordionEvent}from"@sectile/dom/accordion";import{Primitive}from"./primitive.js";import{useHostId}from"./host-provider.js";import{reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const accordionRootContextKey=Symbol("SectileAccordionRoot");const accordionItemContextKey=Symbol("SectileAccordionItem");const accordionHeaderProps=accordionPartProps("h3");const accordionTriggerProps=accordionPartProps("button");const accordionContentProps=accordionPartProps("div");const AccordionRoot=defineComponent({name:"SectileAccordionRoot",inheritAttrs:false,props:{items:{type:Array,required:true},type:{type:String,default:"single"},modelValue:{type:[String,Array],default:void 0},defaultValue:{type:[String,Array],default:void 0},collapsible:{type:Boolean,default:true},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},disabledItems:{type:Array,default:()=>[]},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const controlled=useControlledStateInvariant("AccordionRoot","modelValue",()=>props.modelValue);const controller=shallowRef(createController(controlled,toIDs(controlled?props.modelValue:props.defaultValue,props.type),props,emit));const snapshot=shallowRef(controller.value.getSnapshot());const refresh=()=>{snapshot.value=controller.value.getSnapshot()};const rebuild=()=>{const requested=controlled?toIDs(props.modelValue,props.type):snapshot.value.state.openIDs;const reconciled=reconcileCollectionState(props.items,requested,snapshot.value.state.cursor.current,props.disabledItems,props.type);controller.value=createController(controlled,reconciled.selected,props,emit);refresh();if(controlled&&!sameIDs(requested,reconciled.selected)){emit("update:modelValue",fromIDs(reconciled.selected,props.type))}};watch(()=>props.modelValue,value=>{if(!controlled||value===void 0)return;const result=controller.value.syncControlledValues({value:toIDs(value,props.type)});if(!result.ok)throw new TypeError(result.error.message);snapshot.value=result.value});watch([()=>props.items,()=>props.type,()=>props.collapsible,()=>props.disabled,()=>props.readonly,()=>props.disabledItems],rebuild);const openIDs=computed(()=>snapshot.value.state.openIDs);const disabled=computed(()=>props.disabled);const readonly=computed(()=>props.readonly);const disabledItems=computed(()=>new Set(props.disabledItems));const slotProps=computed(()=>Object.freeze({value:fromIDs(openIDs.value,props.type),disabled:disabled.value,readonly:readonly.value}));const toggle=id=>{const result=controller.value.handleEvent({type:"toggle",id});if(result.ok)snapshot.value=result.snapshot};const handleKeydown=event=>{const semantic=toAccordionEvent(event);if(semantic===null||semantic==="toggle")return;event.preventDefault();const result=controller.value.handleEvent(semantic);if(!result.ok)return;snapshot.value=result.snapshot;queueMicrotask(()=>focusAccordionTrigger(event.currentTarget,result.snapshot.state.cursor.current))};provide(accordionRootContextKey,{openIDs,disabled,readonly,disabledItems,toggle,handleKeydown});const attributes=computed(()=>getAccordionRootAttributes({disabled:props.disabled,readOnly:props.readonly}));return()=>h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,onKeydown:handleKeydown}),{default:()=>slots["default"]?.(slotProps.value)})}});const AccordionItem=defineComponent({name:"SectileAccordionItem",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=useAccordionRootContext("AccordionItem");const generatedID=useHostId();const triggerID=`sectile-accordion-trigger-${generatedID}`;const panelID=`sectile-accordion-panel-${generatedID}`;const slotProps=computed(()=>Object.freeze({value:props.value,open:root.openIDs.value.includes(props.value),disabled:root.disabled.value||props.disabled||root.disabledItems.value.has(props.value)}));provide(accordionItemContextKey,{value:props.value,triggerID,panelID,slotProps});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"accordion","data-part":"item","data-state":slotProps.value.open?"open":"closed","data-disabled":slotProps.value.disabled?"":void 0}),{default:()=>slots["default"]?.(slotProps.value)})}});const AccordionHeader=defineComponent({name:"SectileAccordionHeader",inheritAttrs:false,props:accordionHeaderProps,slots:Object,setup(props,{attrs,slots}){const item=useAccordionItemContext("AccordionHeader");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"accordion","data-part":"header","data-state":item.slotProps.value.open?"open":"closed"}),{default:()=>slots["default"]?.(item.slotProps.value)})}});const AccordionTrigger=defineComponent({name:"SectileAccordionTrigger",inheritAttrs:false,props:accordionTriggerProps,slots:Object,setup(props,{attrs,slots}){const root=useAccordionRootContext("AccordionTrigger");const item=useAccordionItemContext("AccordionTrigger");const attributes=computed(()=>getAccordionTriggerAttributes({has:id=>root.openIDs.value.includes(id)},{id:item.value,triggerID:item.triggerID,panelID:item.panelID,disabled:item.slotProps.value.disabled},{disabled:root.disabled.value,readOnly:root.readonly.value,native:props.as==="button"&&!props.asChild}));const handleClick=event=>{if(!event.defaultPrevented)root.toggle(item.value)};return()=>h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,onClick:handleClick}),{default:()=>slots["default"]?.(item.slotProps.value)})}});const AccordionContent=defineComponent({name:"SectileAccordionContent",inheritAttrs:false,props:accordionContentProps,slots:Object,setup(props,{attrs,slots}){const item=useAccordionItemContext("AccordionContent");const attributes=computed(()=>getAccordionPanelAttributes({has:id=>id===item.value&&item.slotProps.value.open},item.value,{panelID:item.panelID,triggerID:item.triggerID}));return()=>h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild}),{default:()=>slots["default"]?.(item.slotProps.value)})}});function accordionPartProps(defaultAs){return{as:{type:[String,Object,Function],default:defaultAs},asChild:{type:Boolean,default:false}}}function useAccordionRootContext(part){const context=inject(accordionRootContextKey);if(context===void 0)throw new TypeError(`${part} must be used inside AccordionRoot.`);return context}function useAccordionItemContext(part){const context=inject(accordionItemContextKey);if(context===void 0)throw new TypeError(`${part} must be used inside AccordionItem.`);return context}function createController(controlled,value,props,emit){const result=createAccordionController({items:props.items,expansion:props.type??"single",collapsible:props.collapsible??true,disabledItems:props.disabledItems??[],disabled:props.disabled??false,readOnly:props.readonly??false,...controlled?{value}:{defaultValue:value},onValueChange:change=>emit("update:modelValue",fromIDs(change.value,props.type??"single"))});if(!result.ok)throw new TypeError(result.error.message);return result.value}function toIDs(value,type){if(value===void 0||value==="")return[];if(Array.isArray(value))return type==="single"?value.slice(0,1):value;return[value]}function fromIDs(value,type){return type==="single"?value[0]??"":value}function focusAccordionTrigger(root,id){if(id===null)return;for(const trigger of root.querySelectorAll("[data-accordion-id]")){if(trigger.dataset["accordionId"]===id)trigger.focus()}}export{AccordionContent,AccordionHeader,AccordionItem,AccordionRoot,AccordionTrigger};
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,provide,shallowRef,watch}from"vue";import{createAccordionController,getAccordionPanelAttributes,getAccordionRootAttributes,getAccordionTriggerAttributes,toAccordionEvent}from"@sectile/dom/accordion";import{Primitive}from"./primitive.js";import{useHostId}from"./host-provider.js";import{reconcileCollectionState,sameIDs}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./internal/conditional-presence.js";const accordionRootContextKey=Symbol("SectileAccordionRoot");const accordionItemContextKey=Symbol("SectileAccordionItem");const accordionHeaderProps=accordionPartProps("h3");const accordionTriggerProps=accordionPartProps("button");const accordionContentProps={...accordionPartProps("div"),...conditionalPresenceProps};const AccordionRoot=defineComponent({name:"SectileAccordionRoot",inheritAttrs:false,props:{items:{type:Array,required:true},type:{type:String,default:"single"},modelValue:{type:[String,Array],default:void 0},defaultValue:{type:[String,Array],default:void 0},collapsible:{type:Boolean,default:true},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},disabledItems:{type:Array,default:()=>[]},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const controlled=useControlledStateInvariant("AccordionRoot","modelValue",()=>props.modelValue);const controller=shallowRef(createController(controlled,toIDs(controlled?props.modelValue:props.defaultValue,props.type),props,emit));const snapshot=shallowRef(controller.value.getSnapshot());const refresh=()=>{snapshot.value=controller.value.getSnapshot()};const rebuild=()=>{const requested=controlled?toIDs(props.modelValue,props.type):snapshot.value.state.openIDs;const reconciled=reconcileCollectionState(props.items,requested,snapshot.value.state.cursor.current,props.disabledItems,props.type);controller.value=createController(controlled,reconciled.selected,props,emit);refresh();if(controlled&&!sameIDs(requested,reconciled.selected)){emit("update:modelValue",fromIDs(reconciled.selected,props.type))}};watch(()=>props.modelValue,value=>{if(!controlled||value===void 0)return;const result=controller.value.syncControlledValues({value:toIDs(value,props.type)});if(!result.ok)throw new TypeError(result.error.message);snapshot.value=result.value});watch([()=>props.items,()=>props.type,()=>props.collapsible,()=>props.disabled,()=>props.readonly,()=>props.disabledItems],rebuild);const openIDs=computed(()=>snapshot.value.state.openIDs);const disabled=computed(()=>props.disabled);const readonly=computed(()=>props.readonly);const disabledItems=computed(()=>new Set(props.disabledItems));const slotProps=computed(()=>Object.freeze({value:fromIDs(openIDs.value,props.type),disabled:disabled.value,readonly:readonly.value}));const toggle=id=>{const result=controller.value.handleEvent({type:"toggle",id});if(result.ok)snapshot.value=result.snapshot};const handleKeydown=event=>{const semantic=toAccordionEvent(event);if(semantic===null||semantic==="toggle")return;event.preventDefault();const result=controller.value.handleEvent(semantic);if(!result.ok)return;snapshot.value=result.snapshot;queueMicrotask(()=>focusAccordionTrigger(event.currentTarget,result.snapshot.state.cursor.current))};provide(accordionRootContextKey,{openIDs,disabled,readonly,disabledItems,toggle,handleKeydown});const attributes=computed(()=>getAccordionRootAttributes({disabled:props.disabled,readOnly:props.readonly}));return()=>h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,onKeydown:handleKeydown}),{default:()=>slots["default"]?.(slotProps.value)})}});const AccordionItem=defineComponent({name:"SectileAccordionItem",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=useAccordionRootContext("AccordionItem");const generatedID=useHostId();const triggerID=`sectile-accordion-trigger-${generatedID}`;const panelID=`sectile-accordion-panel-${generatedID}`;const slotProps=computed(()=>Object.freeze({value:props.value,open:root.openIDs.value.includes(props.value),disabled:root.disabled.value||props.disabled||root.disabledItems.value.has(props.value)}));provide(accordionItemContextKey,{value:props.value,triggerID,panelID,slotProps});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"accordion","data-part":"item","data-state":slotProps.value.open?"open":"closed","data-disabled":slotProps.value.disabled?"":void 0}),{default:()=>slots["default"]?.(slotProps.value)})}});const AccordionHeader=defineComponent({name:"SectileAccordionHeader",inheritAttrs:false,props:accordionHeaderProps,slots:Object,setup(props,{attrs,slots}){const item=useAccordionItemContext("AccordionHeader");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"accordion","data-part":"header","data-state":item.slotProps.value.open?"open":"closed"}),{default:()=>slots["default"]?.(item.slotProps.value)})}});const AccordionTrigger=defineComponent({name:"SectileAccordionTrigger",inheritAttrs:false,props:accordionTriggerProps,slots:Object,setup(props,{attrs,slots}){const root=useAccordionRootContext("AccordionTrigger");const item=useAccordionItemContext("AccordionTrigger");const attributes=computed(()=>getAccordionTriggerAttributes({has:id=>root.openIDs.value.includes(id)},{id:item.value,triggerID:item.triggerID,panelID:item.panelID,disabled:item.slotProps.value.disabled},{disabled:root.disabled.value,readOnly:root.readonly.value,native:props.as==="button"&&!props.asChild}));const handleClick=event=>{if(!event.defaultPrevented)root.toggle(item.value)};return()=>h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,onClick:handleClick}),{default:()=>slots["default"]?.(item.slotProps.value)})}});const AccordionContent=defineComponent({name:"SectileAccordionContent",inheritAttrs:false,props:accordionContentProps,slots:Object,setup(props,{attrs,slots}){const item=useAccordionItemContext("AccordionContent");const active=computed(()=>item.slotProps.value.open);const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(active,forcePresent);const attributes=computed(()=>getAccordionPanelAttributes({has:id=>id===item.value&&item.slotProps.value.open},item.value,{panelID:item.panelID,triggerID:item.triggerID}));return()=>{const inactivePresent=!active.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"}:{}}),{default:()=>slots["default"]?.(item.slotProps.value)})}}});function accordionPartProps(defaultAs){return{as:{type:[String,Object,Function],default:defaultAs},asChild:{type:Boolean,default:false}}}function useAccordionRootContext(part){const context=inject(accordionRootContextKey);if(context===void 0)throw new TypeError(`${part} must be used inside AccordionRoot.`);return context}function useAccordionItemContext(part){const context=inject(accordionItemContextKey);if(context===void 0)throw new TypeError(`${part} must be used inside AccordionItem.`);return context}function createController(controlled,value,props,emit){const result=createAccordionController({items:props.items,expansion:props.type??"single",collapsible:props.collapsible??true,disabledItems:props.disabledItems??[],disabled:props.disabled??false,readOnly:props.readonly??false,...controlled?{value}:{defaultValue:value},onValueChange:change=>emit("update:modelValue",fromIDs(change.value,props.type??"single"))});if(!result.ok)throw new TypeError(result.error.message);return result.value}function toIDs(value,type){if(value===void 0||value==="")return[];if(Array.isArray(value))return type==="single"?value.slice(0,1):value;return[value]}function fromIDs(value,type){return type==="single"?value[0]??"":value}function focusAccordionTrigger(root,id){if(id===null)return;for(const trigger of root.querySelectorAll("[data-accordion-id]")){if(trigger.dataset["accordionId"]===id)trigger.focus()}}export{AccordionContent,AccordionHeader,AccordionItem,AccordionRoot,AccordionTrigger};
|
|
2
2
|
//# sourceMappingURL=accordion.js.map
|
package/dist/accordion.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/accordion.ts"],"mappings":"AAAA,OACE,SACA,gBACA,EACA,OACA,WACA,QACA,WACA,UAKK,MACP,OACE,0BACA,4BACA,2BACA,8BACA,qBAEK,yBACP,OAAS,cAAmC,iBAC5C,OAAS,cAAiB,qBAC1B,OAAS,yBAA0B,YAAe,2BAClD,OAAS,gCAAmC,
|
|
1
|
+
{"version":3,"sources":["../src/accordion.ts"],"mappings":"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","names":[],"file":"accordion.js"}
|
package/dist/carousel.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
2
2
|
import { type CarouselAutoplayOptions, type CarouselPolicies } from '@sectile/dom/carousel';
|
|
3
3
|
import { type PrimitiveAs } from './primitive.js';
|
|
4
|
+
import { type ConditionalPresenceProps } from './internal/conditional-presence.js';
|
|
4
5
|
export interface CarouselRootProps {
|
|
5
6
|
readonly slides: readonly string[];
|
|
6
7
|
readonly modelValue?: string | null;
|
|
@@ -34,6 +35,9 @@ export interface CarouselPartProps {
|
|
|
34
35
|
readonly as?: PrimitiveAs;
|
|
35
36
|
readonly asChild?: boolean;
|
|
36
37
|
}
|
|
38
|
+
export interface CarouselSlideProps extends CarouselPartProps, ConditionalPresenceProps {
|
|
39
|
+
readonly value: string;
|
|
40
|
+
}
|
|
37
41
|
export declare const CarouselRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
38
42
|
slides: {
|
|
39
43
|
type: PropType<readonly string[]>;
|
|
@@ -321,6 +325,10 @@ export declare const CarouselPause: import("vue").DefineComponent<import("vue").
|
|
|
321
325
|
default: (props: CarouselRootSlotProps) => VNodeChild;
|
|
322
326
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
323
327
|
export declare const CarouselSlide: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
328
|
+
forcePresent: {
|
|
329
|
+
readonly type: BooleanConstructor;
|
|
330
|
+
readonly default: false;
|
|
331
|
+
};
|
|
324
332
|
as: {
|
|
325
333
|
type: PropType<PrimitiveAs>;
|
|
326
334
|
default: string;
|
|
@@ -334,6 +342,10 @@ export declare const CarouselSlide: import("vue").DefineComponent<import("vue").
|
|
|
334
342
|
required: true;
|
|
335
343
|
};
|
|
336
344
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
345
|
+
forcePresent: {
|
|
346
|
+
readonly type: BooleanConstructor;
|
|
347
|
+
readonly default: false;
|
|
348
|
+
};
|
|
337
349
|
as: {
|
|
338
350
|
type: PropType<PrimitiveAs>;
|
|
339
351
|
default: string;
|
|
@@ -347,6 +359,7 @@ export declare const CarouselSlide: import("vue").DefineComponent<import("vue").
|
|
|
347
359
|
required: true;
|
|
348
360
|
};
|
|
349
361
|
}>> & Readonly<{}>, {
|
|
362
|
+
forcePresent: boolean;
|
|
350
363
|
as: PrimitiveAs;
|
|
351
364
|
asChild: boolean;
|
|
352
365
|
}, SlotsType<{
|
package/dist/carousel.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createCarousel}from"@sectile/dom/carousel";import{Primitive}from"./primitive.js";import{useHostDirection,useHostId}from"./host-provider.js";import{reconcileCollectionState}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";const key=Symbol("SectileCarouselRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const CarouselRoot=defineComponent({name:"SectileCarouselRoot",inheritAttrs:false,props:{slides:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:void 0},paused:{type:Boolean,default:void 0},defaultPaused:{type:Boolean,default:false},disabled:{type:Boolean,default:false},orientation:{type:String,default:"horizontal"},autoplay:{type:[Boolean,Object],default:false},policies:{type:Object,default:void 0},label:{type:String,default:void 0},getSlideLabel:{type:Function,default:void 0},getIndicatorLabel:{type:Function,default:void 0},as:{type:[String,Object,Function],default:"section"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:paused":_value=>true,announce:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const generatedID=`sectile-carousel-${useHostId()}`;const direction=useHostDirection();const elements=new Map;const connection=shallowRef();const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue??props.slides[0]??null);const localPaused=shallowRef(props.paused??props.defaultPaused);const controlled={value:useControlledStateInvariant("CarouselRoot","modelValue",()=>props.modelValue),paused:useControlledStateInvariant("CarouselRoot","paused",()=>props.paused)};const state=computed(()=>{const value=props.modelValue!==void 0?props.modelValue:localValue.value;const foundIndex=value===null?-1:props.slides.indexOf(value);return Object.freeze({value,index:foundIndex<0?null:foundIndex,count:props.slides.length,paused:props.paused??localPaused.value,disabled:props.disabled})});const refreshParts=()=>{const root=elements.get("root");if(root===void 0||connection.value===void 0)return;root.querySelectorAll("[data-sectile-carousel-slide]").forEach(element=>{const id=element.dataset["sectileCarouselSlide"];if(id!==void 0)connection.value?.setSlideAttributes(element,id)});root.querySelectorAll("[data-sectile-carousel-indicator]").forEach(element=>{const id=element.dataset["sectileCarouselIndicator"];if(id!==void 0)connection.value?.setIndicatorAttributes(element,id)})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.cursor.current;localPaused.value=snapshot.paused;refreshParts()};const connect=()=>{connection.value?.disconnect();const root=elements.get("root");if(root===void 0)return;const requestedValue=controlled.value?props.modelValue:localValue.value;const reconciled=reconcileCollectionState(props.slides,requestedValue===null?[]:[requestedValue],requestedValue,[],"single",{preserveNullCurrent:true});const value=reconciled.current;localValue.value=value;if(controlled.value&&requestedValue!==value)emit("update:modelValue",value);connection.value=createCarousel({root,slides:props.slides,...controlled.value?{value}:{defaultValue:value},...controlled.paused?{paused:props.paused}:{defaultPaused:localPaused.value},disabled:props.disabled,orientation:props.orientation,direction:direction.value,autoplay:props.autoplay,...props.policies===void 0?{}:{policies:props.policies},...props.label===void 0?{}:{label:props.label},...props.getSlideLabel===void 0?{}:{getSlideLabel:props.getSlideLabel},...props.getIndicatorLabel===void 0?{}:{getIndicatorLabel:props.getIndicatorLabel},...elements.get("previous")===void 0?{}:{previousButton:elements.get("previous")},...elements.get("next")===void 0?{}:{nextButton:elements.get("next")},...elements.get("pause")===void 0?{}:{pauseButton:elements.get("pause")},...elements.get("indicators")===void 0?{}:{indicatorGroup:elements.get("indicators")},onValueChange:value2=>{localValue.value=value2;emit("update:modelValue",value2)},onPausedChange:value2=>{localPaused.value=value2;emit("update:paused",value2)},onAnnounce:value2=>emit("announce",value2),onUpdate:refresh});refreshParts();refresh()};provide(key,{state,register:(part2,element)=>{if(element===void 0)elements.delete(part2);else elements.set(part2,element)},registerSlide:(element,id)=>connection.value?.setSlideAttributes(element,id),registerIndicator:(element,id)=>connection.value?.setIndicatorAttributes(element,id)});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.slides,()=>props.disabled,()=>props.orientation,()=>props.autoplay,()=>props.policies,()=>props.label,()=>props.getSlideLabel,()=>props.getIndicatorLabel,direction],connect);watch([()=>props.modelValue,()=>props.paused],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.paused?{paused:props.paused}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)elements.set("root",node)},id:typeof attrs["id"]==="string"?attrs["id"]:generatedID,dir:direction.value,"data-scope":"carousel","data-part":"root","data-orientation":props.orientation}),{default:()=>slots["default"]?.(state.value)})}});const CarouselViewport=part("SectileCarouselViewport","viewport","div");const CarouselTrack=part("SectileCarouselTrack","track","div");const CarouselIndicatorGroup=registeredPart("SectileCarouselIndicatorGroup","indicators","indicator-group","div");const CarouselPrevious=registeredPart("SectileCarouselPrevious","previous","previous","button");const CarouselNext=registeredPart("SectileCarouselNext","next","next","button");const CarouselPause=registeredPart("SectileCarouselPause","pause","pause","button");const CarouselSlide=defineComponent({name:"SectileCarouselSlide",inheritAttrs:false,props:{value:{type:String,required:true},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CarouselSlide");const state=computed(()=>({...root.state.value,value:props.value,active:root.state.value.value===props.value}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createCarousel}from"@sectile/dom/carousel";import{Primitive}from"./primitive.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 key=Symbol("SectileCarouselRoot");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const CarouselRoot=defineComponent({name:"SectileCarouselRoot",inheritAttrs:false,props:{slides:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:void 0},paused:{type:Boolean,default:void 0},defaultPaused:{type:Boolean,default:false},disabled:{type:Boolean,default:false},orientation:{type:String,default:"horizontal"},autoplay:{type:[Boolean,Object],default:false},policies:{type:Object,default:void 0},label:{type:String,default:void 0},getSlideLabel:{type:Function,default:void 0},getIndicatorLabel:{type:Function,default:void 0},as:{type:[String,Object,Function],default:"section"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:paused":_value=>true,announce:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const generatedID=`sectile-carousel-${useHostId()}`;const direction=useHostDirection();const elements=new Map;const connection=shallowRef();const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue??props.slides[0]??null);const localPaused=shallowRef(props.paused??props.defaultPaused);const controlled={value:useControlledStateInvariant("CarouselRoot","modelValue",()=>props.modelValue),paused:useControlledStateInvariant("CarouselRoot","paused",()=>props.paused)};const state=computed(()=>{const value=props.modelValue!==void 0?props.modelValue:localValue.value;const foundIndex=value===null?-1:props.slides.indexOf(value);return Object.freeze({value,index:foundIndex<0?null:foundIndex,count:props.slides.length,paused:props.paused??localPaused.value,disabled:props.disabled})});const refreshParts=()=>{const root=elements.get("root");if(root===void 0||connection.value===void 0)return;root.querySelectorAll("[data-sectile-carousel-slide]").forEach(element=>{const id=element.dataset["sectileCarouselSlide"];if(id!==void 0)connection.value?.setSlideAttributes(element,id)});root.querySelectorAll("[data-sectile-carousel-indicator]").forEach(element=>{const id=element.dataset["sectileCarouselIndicator"];if(id!==void 0)connection.value?.setIndicatorAttributes(element,id)})};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.cursor.current;localPaused.value=snapshot.paused;refreshParts()};const connect=()=>{connection.value?.disconnect();const root=elements.get("root");if(root===void 0)return;const requestedValue=controlled.value?props.modelValue:localValue.value;const reconciled=reconcileCollectionState(props.slides,requestedValue===null?[]:[requestedValue],requestedValue,[],"single",{preserveNullCurrent:true});const value=reconciled.current;localValue.value=value;if(controlled.value&&requestedValue!==value)emit("update:modelValue",value);connection.value=createCarousel({root,slides:props.slides,manageVisibility:false,...controlled.value?{value}:{defaultValue:value},...controlled.paused?{paused:props.paused}:{defaultPaused:localPaused.value},disabled:props.disabled,orientation:props.orientation,direction:direction.value,autoplay:props.autoplay,...props.policies===void 0?{}:{policies:props.policies},...props.label===void 0?{}:{label:props.label},...props.getSlideLabel===void 0?{}:{getSlideLabel:props.getSlideLabel},...props.getIndicatorLabel===void 0?{}:{getIndicatorLabel:props.getIndicatorLabel},...elements.get("previous")===void 0?{}:{previousButton:elements.get("previous")},...elements.get("next")===void 0?{}:{nextButton:elements.get("next")},...elements.get("pause")===void 0?{}:{pauseButton:elements.get("pause")},...elements.get("indicators")===void 0?{}:{indicatorGroup:elements.get("indicators")},onValueChange:value2=>{localValue.value=value2;emit("update:modelValue",value2)},onPausedChange:value2=>{localPaused.value=value2;emit("update:paused",value2)},onAnnounce:value2=>emit("announce",value2),onUpdate:refresh});refreshParts();refresh()};provide(key,{state,register:(part2,element)=>{if(element===void 0)elements.delete(part2);else elements.set(part2,element)},registerSlide:(element,id)=>connection.value?.setSlideAttributes(element,id),registerIndicator:(element,id)=>connection.value?.setIndicatorAttributes(element,id)});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.slides,()=>props.disabled,()=>props.orientation,()=>props.autoplay,()=>props.policies,()=>props.label,()=>props.getSlideLabel,()=>props.getIndicatorLabel,direction],connect);watch([()=>props.modelValue,()=>props.paused],()=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.paused?{paused:props.paused}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)elements.set("root",node)},id:typeof attrs["id"]==="string"?attrs["id"]:generatedID,dir:direction.value,"data-scope":"carousel","data-part":"root","data-orientation":props.orientation}),{default:()=>slots["default"]?.(state.value)})}});const CarouselViewport=part("SectileCarouselViewport","viewport","div");const CarouselTrack=part("SectileCarouselTrack","track","div");const CarouselIndicatorGroup=registeredPart("SectileCarouselIndicatorGroup","indicators","indicator-group","div");const CarouselPrevious=registeredPart("SectileCarouselPrevious","previous","previous","button");const CarouselNext=registeredPart("SectileCarouselNext","next","next","button");const CarouselPause=registeredPart("SectileCarouselPause","pause","pause","button");const CarouselSlide=defineComponent({name:"SectileCarouselSlide",inheritAttrs:false,props:{value:{type:String,required:true},...partProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CarouselSlide");const state=computed(()=>({...root.state.value,value:props.value,active:root.state.value.value===props.value}));const active=computed(()=>state.value.active);const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(active,forcePresent);return()=>{const inactivePresent=!active.value&&presence.present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{const element=presence.register(node);if(element!==void 0)root.registerSlide(element,props.value)},hidden:presence.hidden.value,...inactivePresent?{inert:true,"aria-hidden":"true"}:{},"data-sectile-carousel-slide":props.value,"data-scope":"carousel","data-part":"slide","data-state":active.value?"active":"inactive"}),{default:()=>slots["default"]?.(state.value)})}}});const CarouselIndicator=defineComponent({name:"SectileCarouselIndicator",inheritAttrs:false,props:{value:{type:String,required:true},as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CarouselIndicator");const state=computed(()=>({...root.state.value,value:props.value,active:root.state.value.value===props.value}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,type:props.as==="button"?"button":void 0,elementRef:node=>{if(node instanceof HTMLElement)root.registerIndicator(node,props.value)},"data-sectile-carousel-indicator":props.value,"data-scope":"carousel","data-part":"indicator","data-state":state.value.active?"active":"inactive"}),{default:()=>slots["default"]?.(state.value)})}});function part(name,dataPart,defaultAs){return defineComponent({name,inheritAttrs:false,props:{...partProps,as:{...partProps.as,default:defaultAs}},slots:Object,setup(props,{attrs,slots}){const root=useRoot(name);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"carousel","data-part":dataPart}),{default:()=>slots["default"]?.(root.state.value)})}})}function registeredPart(name,registration,dataPart,defaultAs){return defineComponent({name,inheritAttrs:false,props:{...partProps,as:{...partProps.as,default:defaultAs}},slots:Object,setup(props,{attrs,slots}){const root=useRoot(name);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=>root.register(registration,node instanceof HTMLElement?node:void 0),"data-scope":"carousel","data-part":dataPart}),{default:()=>slots["default"]?.(root.state.value)})}})}function useRoot(partName){const root=inject(key);if(root===void 0)throw new TypeError(`${partName} must be used inside CarouselRoot.`);return root}export{CarouselIndicator,CarouselIndicatorGroup,CarouselNext,CarouselPause,CarouselPrevious,CarouselRoot,CarouselSlide,CarouselTrack,CarouselViewport};
|
|
2
2
|
//# sourceMappingURL=carousel.js.map
|
package/dist/carousel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/carousel.ts"],"mappings":"AAAA,OACE,SAAU,gBAAiB,EAAG,OAAQ,WAAY,gBAAiB,UAAW,QAC9E,WAAY,UACP,MACP,OACE,mBAIK,wBACP,OAAS,cAAmC,iBAC5C,OAAS,iBAAkB,cAAiB,qBAC5C,OAAS,6BAAgC,2BACzC,OAAS,gCAAmC,
|
|
1
|
+
{"version":3,"sources":["../src/carousel.ts"],"mappings":"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","names":["value","part"],"file":"carousel.js"}
|
package/dist/cascade-list.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
2
2
|
import { type CascadeListItemDefinition, type CascadeListPolicies } from '@sectile/dom/cascade-list';
|
|
3
3
|
import { type PrimitiveAs } from './primitive.js';
|
|
4
|
-
import { type CascadeChoiceColumnProps, type CascadeChoiceColumnSlotProps, type CascadeChoiceItemProps, type CascadeChoiceItemSlotProps, type CascadeChoicePartProps, type CascadeChoiceRootState } from './internal/cascade-choice.js';
|
|
4
|
+
import { type CascadeChoiceColumnProps, type CascadeChoiceColumnSlotProps, type CascadeChoiceItemIndicatorProps, type CascadeChoiceItemProps, type CascadeChoiceItemSlotProps, type CascadeChoicePartProps, type CascadeChoiceRootState } from './internal/cascade-choice.js';
|
|
5
5
|
export interface CascadeListRootProps {
|
|
6
6
|
readonly nodes: readonly CascadeListItemDefinition<string>[];
|
|
7
7
|
readonly modelValue?: string | null;
|
|
@@ -25,6 +25,7 @@ export type CascadeListColumnProps = CascadeChoiceColumnProps;
|
|
|
25
25
|
export type CascadeListColumnSlotProps = CascadeChoiceColumnSlotProps;
|
|
26
26
|
export type CascadeListItemProps = CascadeChoiceItemProps;
|
|
27
27
|
export type CascadeListItemSlotProps = CascadeChoiceItemSlotProps;
|
|
28
|
+
export type CascadeListItemIndicatorProps = CascadeChoiceItemIndicatorProps;
|
|
28
29
|
export type CascadeListPartProps = CascadeChoicePartProps;
|
|
29
30
|
export declare const CascadeListRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
30
31
|
nodes: {
|
|
@@ -290,6 +291,10 @@ export declare const CascadeListItem: import("vue").DefineComponent<import("vue"
|
|
|
290
291
|
default: (props: CascadeChoiceItemSlotProps) => VNodeChild;
|
|
291
292
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
292
293
|
export declare const CascadeListItemIndicator: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
294
|
+
forcePresent: {
|
|
295
|
+
readonly type: BooleanConstructor;
|
|
296
|
+
readonly default: false;
|
|
297
|
+
};
|
|
293
298
|
as: {
|
|
294
299
|
type: PropType<PrimitiveAs>;
|
|
295
300
|
default: string;
|
|
@@ -299,6 +304,10 @@ export declare const CascadeListItemIndicator: import("vue").DefineComponent<imp
|
|
|
299
304
|
default: boolean;
|
|
300
305
|
};
|
|
301
306
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
307
|
+
forcePresent: {
|
|
308
|
+
readonly type: BooleanConstructor;
|
|
309
|
+
readonly default: false;
|
|
310
|
+
};
|
|
302
311
|
as: {
|
|
303
312
|
type: PropType<PrimitiveAs>;
|
|
304
313
|
default: string;
|
|
@@ -308,6 +317,7 @@ export declare const CascadeListItemIndicator: import("vue").DefineComponent<imp
|
|
|
308
317
|
default: boolean;
|
|
309
318
|
};
|
|
310
319
|
}>> & Readonly<{}>, {
|
|
320
|
+
forcePresent: boolean;
|
|
311
321
|
as: PrimitiveAs;
|
|
312
322
|
asChild: boolean;
|
|
313
323
|
}, SlotsType<{
|
package/dist/cascade-list.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createCascadeList}from"@sectile/dom/cascade-list";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./internal/native-input.js";import{provideFormControlOwner}from"./internal/form-control.js";import{hiddenSelectSubmissionCapabilities,useCompositeFormControl}from"./internal/form-control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{cascadeBranchItems,cascadeChoicePartProps,cascadeItemPath,createCascadeChoiceParts,initialCascadeColumns}from"./internal/cascade-choice.js";const rootKey=Symbol("SectileCascadeListRoot");const itemKey=Symbol("SectileCascadeListItem");const partProps=cascadeChoicePartProps;const CascadeListRoot=defineComponent({name:"SectileCascadeListRoot",inheritAttrs:false,props:{nodes:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},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},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,highlight:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const root=shallowRef(null);const submission=shallowRef(null);const connection=shallowRef();const participation=useCompositeFormControl({root,focusTarget:root,submissions:[{element:submission,capabilities:hiddenSelectSubmissionCapabilities}]});provideFormControlOwner();const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const initialValuePath=cascadeItemPath(props.nodes,localValue.value);const initialBranchPath=initialValuePath.slice(0,-1);const highlighted=shallowRef(localValue.value??firstAvailableRoot(props.nodes,props.disabledItems));const path=shallowRef(initialBranchPath);const columns=shallowRef(initialCascadeColumns(props.nodes,initialBranchPath));const valuePath=shallowRef(initialValuePath);const valueControlled=useControlledStateInvariant("CascadeListRoot","modelValue",()=>props.modelValue);const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,valuePath:valuePath.value,highlightedValue:highlighted.value,path:path.value,columns:columns.value,disabled:props.disabled,readonly:props.readonly}));const refreshItems=()=>{if(root.value===null||connection.value===void 0)return;root.value.querySelectorAll("[data-sectile-cascade-list-id]").forEach(element=>{const id=element.dataset["sectileCascadeListId"];if(id!==void 0)connection.value?.setItemAttributes(element,id,props.disabledItems.includes(id))})};const refresh=()=>{const current=connection.value?.getSnapshot().state;if(current===void 0)return;localValue.value=current.value;highlighted.value=current.highlighted;path.value=current.path;columns.value=connection.value?.getColumns()??[];valuePath.value=connection.value?.getValuePath()??[];refreshItems()};const connect=()=>{connection.value?.disconnect();if(root.value===null)return;const branches2=cascadeBranchItems(props.nodes);const leaves=new Set(props.nodes.filter(node=>!branches2.has(node.id)).map(node=>node.id));const requestedValue=valueControlled?props.modelValue:localValue.value;const value=requestedValue!==null&&leaves.has(requestedValue)?requestedValue:null;const ids=new Set(props.nodes.map(node=>node.id));const requestedHighlight=highlighted.value;const defaultHighlightedValue=requestedHighlight!==null&&ids.has(requestedHighlight)&&!props.disabledItems.includes(requestedHighlight)?requestedHighlight:value??firstAvailableRoot(props.nodes,props.disabledItems);localValue.value=value;if(valueControlled&&requestedValue!==value)emit("update:modelValue",value);connection.value=createCascadeList({root:root.value,nodes:props.nodes,disabledItems:props.disabledItems,...props.policies===void 0?{}:{policies:props.policies},...valueControlled?{value}:{defaultValue:value},defaultHighlightedValue,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)},onUpdate:refresh});refresh()};const branches=computed(()=>cascadeBranchItems(props.nodes));provide(rootKey,{state,label:computed(()=>props.label),textValue:computed(()=>props.textValue??(id=>id)),disabledItems:computed(()=>new Set(props.disabledItems)),branchItems:branches,registerColumn:(element,depth,label)=>connection.value?.setColumnAttributes(element,depth===0?null:state.value.path[depth-1]??null,label),registerItem:(element,id,disabled)=>connection.value?.setItemAttributes(element,id,disabled)});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.nodes,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.policies],connect);watch(()=>props.modelValue,()=>{if(connection.value===void 0||!valueControlled)return;const result=connection.value.syncControlledValues({value:props.modelValue});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:null},role:"group",tabindex:-1,"aria-label":props.label,"aria-disabled":props.disabled?"true":void 0,"aria-readonly":props.readonly?"true":void 0,"data-scope":"cascade-list","data-part":"root","data-disabled":props.disabled?"":void 0,"data-readonly":props.readonly?"":void 0},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:element=>{submission.value=element instanceof HTMLSelectElement?element:null},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:"",selected:state.value.value===null}),...props.nodes.filter(node=>!branches.value.has(node.id)).map(node=>h("option",{value:node.id,selected:state.value.value===node.id,disabled:props.disabledItems.includes(node.id)},props.textValue?.(node.id)??node.id))])]}}});const CascadeListValue=defineComponent({name:"SectileCascadeListValue",inheritAttrs:false,props:{placeholder:{type:String,default:""},separator:{type:String,default:" / "},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CascadeListValue");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"cascade-list","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.state.value.valuePath.map(root.textValue.value).join(props.separator))})}});const cascadeListParts=createCascadeChoiceParts({scope:"cascade-list",componentName:"CascadeList",itemAttribute:"data-sectile-cascade-list-id",rootKey,itemKey});const CascadeListColumn=cascadeListParts.Column;const CascadeListItem=cascadeListParts.Item;const CascadeListItemIndicator=cascadeListParts.ItemIndicator;const CascadeListItemChevron=cascadeListParts.ItemChevron;function useRoot(part){const root=inject(rootKey);if(root===void 0)throw new TypeError(`${part} must be used inside CascadeListRoot.`);return root}function firstAvailableRoot(nodes,disabledItems){const disabled=new Set(disabledItems);return nodes.find(node=>node.parentID===null&&!disabled.has(node.id))?.id??null}export{CascadeListColumn,CascadeListItem,CascadeListItemChevron,CascadeListItemIndicator,CascadeListRoot,CascadeListValue};
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createCascadeList}from"@sectile/dom/cascade-list";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./internal/native-input.js";import{provideFormControlOwner}from"./internal/form-control.js";import{hiddenSelectSubmissionCapabilities,useCompositeFormControl}from"./internal/form-control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{useConditionalPresenceRegistry}from"./internal/conditional-presence.js";import{cascadeBranchItems,cascadeChoicePartProps,cascadeItemPath,createCascadeChoiceParts,initialCascadeColumns}from"./internal/cascade-choice.js";const rootKey=Symbol("SectileCascadeListRoot");const itemKey=Symbol("SectileCascadeListItem");const partProps=cascadeChoicePartProps;const CascadeListRoot=defineComponent({name:"SectileCascadeListRoot",inheritAttrs:false,props:{nodes:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},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},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,highlight:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const root=shallowRef(null);const submission=shallowRef(null);const connection=shallowRef();const participation=useCompositeFormControl({root,focusTarget:root,submissions:[{element:submission,capabilities:hiddenSelectSubmissionCapabilities}]});provideFormControlOwner();const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const initialValuePath=cascadeItemPath(props.nodes,localValue.value);const initialBranchPath=initialValuePath.slice(0,-1);const highlighted=shallowRef(localValue.value??firstAvailableRoot(props.nodes,props.disabledItems));const path=shallowRef(initialBranchPath);const columns=shallowRef(initialCascadeColumns(props.nodes,initialBranchPath));const valuePath=shallowRef(initialValuePath);const valueControlled=useControlledStateInvariant("CascadeListRoot","modelValue",()=>props.modelValue);const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,valuePath:valuePath.value,highlightedValue:highlighted.value,path:path.value,columns:columns.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 refreshItems=()=>{if(root.value===null||connection.value===void 0)return;root.value.querySelectorAll("[data-sectile-cascade-list-id]").forEach(element=>{const id=element.dataset["sectileCascadeListId"];if(id!==void 0)connection.value?.setItemAttributes(element,id,props.disabledItems.includes(id))})};const refresh=()=>{const current=connection.value?.getSnapshot().state;if(current===void 0)return;localValue.value=current.value;highlighted.value=current.highlighted;path.value=current.path;columns.value=connection.value?.getColumns()??[];valuePath.value=connection.value?.getValuePath()??[];refreshItems()};const connect=()=>{connection.value?.disconnect();if(root.value===null)return;const branches2=cascadeBranchItems(props.nodes);const leaves=new Set(props.nodes.filter(node=>!branches2.has(node.id)).map(node=>node.id));const requestedValue=valueControlled?props.modelValue:localValue.value;const value=requestedValue!==null&&leaves.has(requestedValue)?requestedValue:null;const ids=new Set(props.nodes.map(node=>node.id));const requestedHighlight=highlighted.value;const defaultHighlightedValue=requestedHighlight!==null&&ids.has(requestedHighlight)&&!props.disabledItems.includes(requestedHighlight)?requestedHighlight:value??firstAvailableRoot(props.nodes,props.disabledItems);localValue.value=value;if(valueControlled&&requestedValue!==value)emit("update:modelValue",value);connection.value=createCascadeList({root:root.value,nodes:props.nodes,disabledItems:props.disabledItems,...props.policies===void 0?{}:{policies:props.policies},...valueControlled?{value}:{defaultValue:value},defaultHighlightedValue,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)},onUpdate:refresh});refresh()};const branches=computed(()=>cascadeBranchItems(props.nodes));provide(rootKey,{state,label:computed(()=>props.label),textValue:computed(()=>props.textValue??(id=>id)),disabledItems:computed(()=>new Set(props.disabledItems)),branchItems:branches,indicatorPresence,registerColumn:(element,depth,label)=>connection.value?.setColumnAttributes(element,depth===0?null:state.value.path[depth-1]??null,label),registerItem:(element,id,disabled)=>connection.value?.setItemAttributes(element,id,disabled)});onMounted(connect);onBeforeUnmount(()=>connection.value?.disconnect());watch([()=>props.nodes,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.policies],connect);watch(()=>props.modelValue,()=>{if(connection.value===void 0||!valueControlled)return;const result=connection.value.syncControlledValues({value:props.modelValue});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:null},role:"group",tabindex:-1,"aria-label":props.label,"aria-disabled":props.disabled?"true":void 0,"aria-readonly":props.readonly?"true":void 0,"data-scope":"cascade-list","data-part":"root","data-disabled":props.disabled?"":void 0,"data-readonly":props.readonly?"":void 0},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:element=>{submission.value=element instanceof HTMLSelectElement?element:null},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:"",selected:state.value.value===null}),...props.nodes.filter(node=>!branches.value.has(node.id)).map(node=>h("option",{value:node.id,selected:state.value.value===node.id,disabled:props.disabledItems.includes(node.id)},props.textValue?.(node.id)??node.id))])]}}});const CascadeListValue=defineComponent({name:"SectileCascadeListValue",inheritAttrs:false,props:{placeholder:{type:String,default:""},separator:{type:String,default:" / "},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CascadeListValue");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"cascade-list","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.state.value.valuePath.map(root.textValue.value).join(props.separator))})}});const cascadeListParts=createCascadeChoiceParts({scope:"cascade-list",componentName:"CascadeList",itemAttribute:"data-sectile-cascade-list-id",rootKey,itemKey});const CascadeListColumn=cascadeListParts.Column;const CascadeListItem=cascadeListParts.Item;const CascadeListItemIndicator=cascadeListParts.ItemIndicator;const CascadeListItemChevron=cascadeListParts.ItemChevron;function useRoot(part){const root=inject(rootKey);if(root===void 0)throw new TypeError(`${part} must be used inside CascadeListRoot.`);return root}function firstAvailableRoot(nodes,disabledItems){const disabled=new Set(disabledItems);return nodes.find(node=>node.parentID===null&&!disabled.has(node.id))?.id??null}export{CascadeListColumn,CascadeListItem,CascadeListItemChevron,CascadeListItemIndicator,CascadeListRoot,CascadeListValue};
|
|
2
2
|
//# sourceMappingURL=cascade-list.js.map
|
package/dist/cascade-list.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cascade-list.ts"],"mappings":"AAAA,OACE,SACA,gBACA,EACA,OACA,WACA,gBACA,UACA,QACA,WACA,UAKK,MACP,OACE,sBAIK,4BACP,OAAS,cAAmC,iBAC5C,OAAS,6BAAgC,6BACzC,OAAS,4BAA+B,6BACxC,OACE,mCACA,4BACK,6BACP,OAAS,gCAAmC,iCAC5C,OACE,mBACA,uBACA,gBACA,yBACA,
|
|
1
|
+
{"version":3,"sources":["../src/cascade-list.ts"],"mappings":"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","names":["branches"],"file":"cascade-list.js"}
|
package/dist/cascade-select.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { type PropType, type SlotsType, type VNodeChild } from 'vue';
|
|
|
2
2
|
import { type CascadeSelectItemDefinition, type CascadeSelectPolicies } from '@sectile/dom/cascade-select';
|
|
3
3
|
import type { PositionBoundary, PositionOptions, PositionPadding, PositionStrategy, PositionTracking } from '@sectile/dom/position';
|
|
4
4
|
import { type PrimitiveAs } from './primitive.js';
|
|
5
|
-
import { type CascadeChoiceColumnProps, type CascadeChoiceColumnSlotProps, type CascadeChoiceItemProps, type CascadeChoiceItemSlotProps, type CascadeChoicePartProps, type CascadeChoiceRootState } from './internal/cascade-choice.js';
|
|
5
|
+
import { type CascadeChoiceColumnProps, type CascadeChoiceColumnSlotProps, type CascadeChoiceItemIndicatorProps, type CascadeChoiceItemProps, type CascadeChoiceItemSlotProps, type CascadeChoicePartProps, type CascadeChoiceRootState } from './internal/cascade-choice.js';
|
|
6
6
|
export interface CascadeSelectRootProps extends Omit<PositionOptions, 'arrowPadding'> {
|
|
7
7
|
readonly nodes: readonly CascadeSelectItemDefinition<string>[];
|
|
8
8
|
readonly modelValue?: string | null;
|
|
@@ -30,6 +30,7 @@ export type CascadeSelectColumnProps = CascadeChoiceColumnProps;
|
|
|
30
30
|
export type CascadeSelectColumnSlotProps = CascadeChoiceColumnSlotProps;
|
|
31
31
|
export type CascadeSelectItemProps = CascadeChoiceItemProps;
|
|
32
32
|
export type CascadeSelectItemSlotProps = CascadeChoiceItemSlotProps;
|
|
33
|
+
export type CascadeSelectItemIndicatorProps = CascadeChoiceItemIndicatorProps;
|
|
33
34
|
export type CascadeSelectPartProps = CascadeChoicePartProps;
|
|
34
35
|
export declare const CascadeSelectRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
35
36
|
nodes: {
|
|
@@ -454,6 +455,10 @@ export declare const CascadeSelectItem: import("vue").DefineComponent<import("vu
|
|
|
454
455
|
default: (props: CascadeChoiceItemSlotProps) => VNodeChild;
|
|
455
456
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
456
457
|
export declare const CascadeSelectItemIndicator: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
458
|
+
forcePresent: {
|
|
459
|
+
readonly type: BooleanConstructor;
|
|
460
|
+
readonly default: false;
|
|
461
|
+
};
|
|
457
462
|
as: {
|
|
458
463
|
type: PropType<PrimitiveAs>;
|
|
459
464
|
default: string;
|
|
@@ -463,6 +468,10 @@ export declare const CascadeSelectItemIndicator: import("vue").DefineComponent<i
|
|
|
463
468
|
default: boolean;
|
|
464
469
|
};
|
|
465
470
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
471
|
+
forcePresent: {
|
|
472
|
+
readonly type: BooleanConstructor;
|
|
473
|
+
readonly default: false;
|
|
474
|
+
};
|
|
466
475
|
as: {
|
|
467
476
|
type: PropType<PrimitiveAs>;
|
|
468
477
|
default: string;
|
|
@@ -472,6 +481,7 @@ export declare const CascadeSelectItemIndicator: import("vue").DefineComponent<i
|
|
|
472
481
|
default: boolean;
|
|
473
482
|
};
|
|
474
483
|
}>> & Readonly<{}>, {
|
|
484
|
+
forcePresent: boolean;
|
|
475
485
|
as: PrimitiveAs;
|
|
476
486
|
asChild: boolean;
|
|
477
487
|
}, SlotsType<{
|
package/dist/cascade-select.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed,defineComponent,h,inject,mergeProps,nextTick,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createCascadeSelect}from"@sectile/dom/cascade-select";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./internal/native-input.js";import{provideFormControlOwner}from"./internal/form-control.js";import{hiddenSelectSubmissionCapabilities,useCompositeFormControl}from"./internal/form-control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{usePresence}from"./internal/presence.js";import{cascadeBranchItems,cascadeChoicePartProps,cascadeItemPath,createCascadeChoiceParts,initialCascadeColumns}from"./internal/cascade-choice.js";const rootKey=Symbol("SectileCascadeSelectRoot");const itemKey=Symbol("SectileCascadeSelectItem");const partProps=cascadeChoicePartProps;const CascadeSelectRoot=defineComponent({name:"SectileCascadeSelectRoot",inheritAttrs:false,props:{nodes:{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},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"},textValue:{type:Function,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:open":_value=>true,highlight:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const root=shallowRef(null);const trigger=shallowRef(null);const popup=shallowRef();const submission=shallowRef(null);const connection=shallowRef();const participation=useCompositeFormControl({root,focusTarget:trigger,submissions:[{element:submission,capabilities:hiddenSelectSubmissionCapabilities}]});provideFormControlOwner();const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const initialValuePath=cascadeItemPath(props.nodes,localValue.value);const initialBranchPath=initialValuePath.slice(0,-1);const localOpen=shallowRef(props.open??props.defaultOpen);const highlighted=shallowRef(localValue.value);const path=shallowRef(initialBranchPath);const columns=shallowRef(initialCascadeColumns(props.nodes,initialBranchPath));const valuePath=shallowRef(initialValuePath);const valueControlled=useControlledStateInvariant("CascadeSelectRoot","modelValue",()=>props.modelValue);const openControlled=useControlledStateInvariant("CascadeSelectRoot","open",()=>props.open);const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,valuePath:valuePath.value,highlightedValue:highlighted.value,path:path.value,columns:columns.value,open:props.open??localOpen.value,disabled:props.disabled,readonly:props.readonly}));const refresh=()=>{const current=connection.value?.getSnapshot().state;if(current===void 0)return;localValue.value=current.value;localOpen.value=current.open;highlighted.value=current.highlighted;path.value=current.path;columns.value=connection.value?.getColumns()??[];valuePath.value=connection.value?.getValuePath()??[];refreshItems()};const refreshItems=()=>{if(popup.value===void 0||connection.value===void 0)return;popup.value.querySelectorAll("[data-sectile-cascade-select-id]").forEach(element=>{const id=element.dataset["sectileCascadeSelectId"];if(id!==void 0)connection.value?.setItemAttributes(element,id,props.disabledItems.includes(id))})};const connect=()=>{connection.value?.disconnect();if(root.value===null||trigger.value===null||popup.value===void 0)return;const branchIDs=cascadeBranchItems(props.nodes);const leafIDs=new Set(props.nodes.filter(node=>!branchIDs.has(node.id)).map(node=>node.id));const requestedValue=valueControlled?props.modelValue:localValue.value;const value=requestedValue!==null&&leafIDs.has(requestedValue)?requestedValue:null;localValue.value=value;if(valueControlled&&requestedValue!==value)emit("update:modelValue",value);connection.value=createCascadeSelect({root:root.value,trigger:trigger.value,popup:popup.value,nodes:props.nodes,disabledItems:props.disabledItems,position:props.position,manageVisibility:false,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,...props.policies===void 0?{}:{policies:props.policies},...valueControlled?{value}:{defaultValue:value},...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});refresh()};const branches=computed(()=>cascadeBranchItems(props.nodes));let mounted=false;let connectScheduled=false;const scheduleConnect=()=>{if(!mounted||connectScheduled)return;connectScheduled=true;void nextTick(()=>{connectScheduled=false;if(mounted)connect()})};provide(rootKey,{state,position:computed(()=>props.position),strategy:computed(()=>props.strategy),label:computed(()=>props.label),textValue:computed(()=>props.textValue??(id=>id)),disabledItems:computed(()=>new Set(props.disabledItems)),branchItems:branches,registerTrigger:element=>{const next=element??null;const changed=trigger.value!==next;trigger.value=next;if(changed)scheduleConnect()},registerPopup:element=>{const changed=popup.value!==element;popup.value=element;if(changed)scheduleConnect()},refresh:()=>connection.value?.refresh(),registerColumn:(element,depth,label)=>connection.value?.setColumnAttributes(element,depth===0?null:state.value.path[depth-1]??null,label),registerItem:(element,id,disabled)=>connection.value?.setItemAttributes(element,id,disabled)});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;connection.value?.disconnect()});watch([()=>props.nodes,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.label,()=>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()});const registerRoot=node=>{const next=node instanceof HTMLElement?node:null;const changed=root.value!==next;root.value=next;if(changed)scheduleConnect()};return()=>{const visual=h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerRoot,"data-scope":"cascade-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:element=>{submission.value=element instanceof HTMLSelectElement?element:null},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.nodes.filter(node=>!branches.value.has(node.id)).map(node=>h("option",{value:node.id,disabled:props.disabledItems.includes(node.id)},props.textValue?.(node.id)??node.id))])]}}});const CascadeSelectTrigger=defineComponent({name:"SectileCascadeSelectTrigger",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CascadeSelectTrigger");const registerTrigger=node=>root.registerTrigger(node instanceof HTMLButtonElement?node:void 0);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerTrigger,type:props.as==="button"?"button":void 0,disabled:root.state.value.disabled,"aria-haspopup":"listbox","aria-expanded":String(root.state.value.open),"data-scope":"cascade-select","data-part":"trigger","data-state":root.state.value.open?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}});const CascadeSelectValue=defineComponent({name:"SectileCascadeSelectValue",inheritAttrs:false,props:{placeholder:{type:String,default:""},separator:{type:String,default:" / "},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CascadeSelectValue");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"cascade-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.state.value.valuePath.map(root.textValue.value).join(props.separator))})}});const CascadeSelectContent=defineComponent({name:"SectileCascadeSelectContent",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CascadeSelectContent");const element=shallowRef();const open=computed(()=>root.state.value.open);const present=usePresence(open,element);watch(present,async()=>{await nextTick();root.refresh()},{flush:"post"});const registerContent=node=>{const content=node instanceof HTMLElement?node:void 0;element.value=content;root.registerPopup(content)};return()=>{const exiting=!open.value&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerContent,role:"group",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,"data-scope":"cascade-select","data-part":"content","data-state":open.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const cascadeSelectParts=createCascadeChoiceParts({scope:"cascade-select",componentName:"CascadeSelect",itemAttribute:"data-sectile-cascade-select-id",rootKey,itemKey});const CascadeSelectColumn=cascadeSelectParts.Column;const CascadeSelectItem=cascadeSelectParts.Item;const CascadeSelectItemIndicator=cascadeSelectParts.ItemIndicator;const CascadeSelectItemChevron=cascadeSelectParts.ItemChevron;function useRoot(part){const root=inject(rootKey);if(root===void 0)throw new TypeError(`${part} must be used inside CascadeSelectRoot.`);return root}export{CascadeSelectColumn,CascadeSelectContent,CascadeSelectItem,CascadeSelectItemChevron,CascadeSelectItemIndicator,CascadeSelectRoot,CascadeSelectTrigger,CascadeSelectValue};
|
|
1
|
+
import{computed,defineComponent,h,inject,mergeProps,nextTick,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createCascadeSelect}from"@sectile/dom/cascade-select";import{Primitive}from"./primitive.js";import{visuallyHiddenInputStyle}from"./internal/native-input.js";import{provideFormControlOwner}from"./internal/form-control.js";import{hiddenSelectSubmissionCapabilities,useCompositeFormControl}from"./internal/form-control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{usePresence}from"./internal/presence.js";import{useConditionalPresenceRegistry}from"./internal/conditional-presence.js";import{cascadeBranchItems,cascadeChoicePartProps,cascadeItemPath,createCascadeChoiceParts,initialCascadeColumns}from"./internal/cascade-choice.js";const rootKey=Symbol("SectileCascadeSelectRoot");const itemKey=Symbol("SectileCascadeSelectItem");const partProps=cascadeChoicePartProps;const CascadeSelectRoot=defineComponent({name:"SectileCascadeSelectRoot",inheritAttrs:false,props:{nodes:{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},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"},textValue:{type:Function,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:open":_value=>true,highlight:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const root=shallowRef(null);const trigger=shallowRef(null);const popup=shallowRef();const submission=shallowRef(null);const connection=shallowRef();const participation=useCompositeFormControl({root,focusTarget:trigger,submissions:[{element:submission,capabilities:hiddenSelectSubmissionCapabilities}]});provideFormControlOwner();const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const initialValuePath=cascadeItemPath(props.nodes,localValue.value);const initialBranchPath=initialValuePath.slice(0,-1);const localOpen=shallowRef(props.open??props.defaultOpen);const highlighted=shallowRef(localValue.value);const path=shallowRef(initialBranchPath);const columns=shallowRef(initialCascadeColumns(props.nodes,initialBranchPath));const valuePath=shallowRef(initialValuePath);const valueControlled=useControlledStateInvariant("CascadeSelectRoot","modelValue",()=>props.modelValue);const openControlled=useControlledStateInvariant("CascadeSelectRoot","open",()=>props.open);const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,valuePath:valuePath.value,highlightedValue:highlighted.value,path:path.value,columns:columns.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 current=connection.value?.getSnapshot().state;if(current===void 0)return;localValue.value=current.value;localOpen.value=current.open;highlighted.value=current.highlighted;path.value=current.path;columns.value=connection.value?.getColumns()??[];valuePath.value=connection.value?.getValuePath()??[];refreshItems()};const refreshItems=()=>{if(popup.value===void 0||connection.value===void 0)return;popup.value.querySelectorAll("[data-sectile-cascade-select-id]").forEach(element=>{const id=element.dataset["sectileCascadeSelectId"];if(id!==void 0)connection.value?.setItemAttributes(element,id,props.disabledItems.includes(id))})};const connect=()=>{connection.value?.disconnect();if(root.value===null||trigger.value===null||popup.value===void 0)return;const branchIDs=cascadeBranchItems(props.nodes);const leafIDs=new Set(props.nodes.filter(node=>!branchIDs.has(node.id)).map(node=>node.id));const requestedValue=valueControlled?props.modelValue:localValue.value;const value=requestedValue!==null&&leafIDs.has(requestedValue)?requestedValue:null;localValue.value=value;if(valueControlled&&requestedValue!==value)emit("update:modelValue",value);connection.value=createCascadeSelect({root:root.value,trigger:trigger.value,popup:popup.value,nodes:props.nodes,disabledItems:props.disabledItems,position:props.position,manageVisibility:false,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,...props.policies===void 0?{}:{policies:props.policies},...valueControlled?{value}:{defaultValue:value},...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});refresh()};const branches=computed(()=>cascadeBranchItems(props.nodes));let mounted=false;let connectScheduled=false;const scheduleConnect=()=>{if(!mounted||connectScheduled)return;connectScheduled=true;void nextTick(()=>{connectScheduled=false;if(mounted)connect()})};provide(rootKey,{state,position:computed(()=>props.position),strategy:computed(()=>props.strategy),label:computed(()=>props.label),textValue:computed(()=>props.textValue??(id=>id)),disabledItems:computed(()=>new Set(props.disabledItems)),branchItems:branches,indicatorPresence,registerTrigger:element=>{const next=element??null;const changed=trigger.value!==next;trigger.value=next;if(changed)scheduleConnect()},registerPopup:element=>{const changed=popup.value!==element;popup.value=element;if(changed)scheduleConnect()},refresh:()=>connection.value?.refresh(),registerColumn:(element,depth,label)=>connection.value?.setColumnAttributes(element,depth===0?null:state.value.path[depth-1]??null,label),registerItem:(element,id,disabled)=>connection.value?.setItemAttributes(element,id,disabled)});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;connection.value?.disconnect()});watch([()=>props.nodes,()=>props.disabledItems,()=>props.disabled,()=>props.readonly,()=>props.label,()=>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()});const registerRoot=node=>{const next=node instanceof HTMLElement?node:null;const changed=root.value!==next;root.value=next;if(changed)scheduleConnect()};return()=>{const visual=h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerRoot,"data-scope":"cascade-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:element=>{submission.value=element instanceof HTMLSelectElement?element:null},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.nodes.filter(node=>!branches.value.has(node.id)).map(node=>h("option",{value:node.id,disabled:props.disabledItems.includes(node.id)},props.textValue?.(node.id)??node.id))])]}}});const CascadeSelectTrigger=defineComponent({name:"SectileCascadeSelectTrigger",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CascadeSelectTrigger");const registerTrigger=node=>root.registerTrigger(node instanceof HTMLButtonElement?node:void 0);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerTrigger,type:props.as==="button"?"button":void 0,disabled:root.state.value.disabled,"aria-haspopup":"listbox","aria-expanded":String(root.state.value.open),"data-scope":"cascade-select","data-part":"trigger","data-state":root.state.value.open?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}});const CascadeSelectValue=defineComponent({name:"SectileCascadeSelectValue",inheritAttrs:false,props:{placeholder:{type:String,default:""},separator:{type:String,default:" / "},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CascadeSelectValue");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"cascade-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.state.value.valuePath.map(root.textValue.value).join(props.separator))})}});const CascadeSelectContent=defineComponent({name:"SectileCascadeSelectContent",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("CascadeSelectContent");const element=shallowRef();const open=computed(()=>root.state.value.open);const present=usePresence(open,element);watch(present,async()=>{await nextTick();root.refresh()},{flush:"post"});const registerContent=node=>{const content=node instanceof HTMLElement?node:void 0;element.value=content;root.registerPopup(content)};return()=>{const exiting=!open.value&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerContent,role:"group",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,"data-scope":"cascade-select","data-part":"content","data-state":open.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const cascadeSelectParts=createCascadeChoiceParts({scope:"cascade-select",componentName:"CascadeSelect",itemAttribute:"data-sectile-cascade-select-id",rootKey,itemKey});const CascadeSelectColumn=cascadeSelectParts.Column;const CascadeSelectItem=cascadeSelectParts.Item;const CascadeSelectItemIndicator=cascadeSelectParts.ItemIndicator;const CascadeSelectItemChevron=cascadeSelectParts.ItemChevron;function useRoot(part){const root=inject(rootKey);if(root===void 0)throw new TypeError(`${part} must be used inside CascadeSelectRoot.`);return root}export{CascadeSelectColumn,CascadeSelectContent,CascadeSelectItem,CascadeSelectItemChevron,CascadeSelectItemIndicator,CascadeSelectRoot,CascadeSelectTrigger,CascadeSelectValue};
|
|
2
2
|
//# sourceMappingURL=cascade-select.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cascade-select.ts"],"mappings":"AAAA,OACE,SAAU,gBAAiB,EAAG,OAAQ,WAAY,SAAU,gBAAiB,UAAW,QACxF,WAAY,UACP,MACP,OACE,wBAEK,8BAQP,OAAS,cAAmC,iBAC5C,OAAS,6BAAgC,6BACzC,OAAS,4BAA+B,6BACxC,OACE,mCACA,4BACK,6BACP,OAAS,gCAAmC,iCAC5C,OAAS,gBAAmB,
|
|
1
|
+
{"version":3,"sources":["../src/cascade-select.ts"],"mappings":"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","names":[],"file":"cascade-select.js"}
|
package/dist/checkbox-group.d.ts
CHANGED
|
@@ -189,6 +189,10 @@ export declare const CheckboxGroupItem: import("vue").DefineComponent<import("vu
|
|
|
189
189
|
}) => VNodeChild;
|
|
190
190
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
191
191
|
export declare const CheckboxGroupIndicator: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
192
|
+
forcePresent: {
|
|
193
|
+
readonly type: BooleanConstructor;
|
|
194
|
+
readonly default: false;
|
|
195
|
+
};
|
|
192
196
|
as: {
|
|
193
197
|
type: PropType<PrimitiveAs>;
|
|
194
198
|
default: string;
|
|
@@ -198,6 +202,10 @@ export declare const CheckboxGroupIndicator: import("vue").DefineComponent<impor
|
|
|
198
202
|
default: boolean;
|
|
199
203
|
};
|
|
200
204
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
205
|
+
forcePresent: {
|
|
206
|
+
readonly type: BooleanConstructor;
|
|
207
|
+
readonly default: false;
|
|
208
|
+
};
|
|
201
209
|
as: {
|
|
202
210
|
type: PropType<PrimitiveAs>;
|
|
203
211
|
default: string;
|
|
@@ -207,6 +215,7 @@ export declare const CheckboxGroupIndicator: import("vue").DefineComponent<impor
|
|
|
207
215
|
default: boolean;
|
|
208
216
|
};
|
|
209
217
|
}>> & Readonly<{}>, {
|
|
218
|
+
forcePresent: boolean;
|
|
210
219
|
as: PrimitiveAs;
|
|
211
220
|
asChild: boolean;
|
|
212
221
|
}, SlotsType<{
|
package/dist/checkbox.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 CheckboxValue = boolean | 'indeterminate';
|
|
4
5
|
export interface CheckboxRootProps {
|
|
5
6
|
readonly modelValue?: CheckboxValue;
|
|
@@ -121,11 +122,15 @@ export declare const CheckboxRoot: import("vue").DefineComponent<import("vue").E
|
|
|
121
122
|
default: (props: CheckboxSlotProps) => VNodeChild;
|
|
122
123
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
123
124
|
export type CheckboxValueChangeHandler = (value: CheckboxValue) => void;
|
|
124
|
-
export interface CheckboxIndicatorProps {
|
|
125
|
+
export interface CheckboxIndicatorProps extends ConditionalPresenceProps {
|
|
125
126
|
readonly as?: PrimitiveAs;
|
|
126
127
|
readonly asChild?: boolean;
|
|
127
128
|
}
|
|
128
129
|
export declare const CheckboxIndicator: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
130
|
+
forcePresent: {
|
|
131
|
+
readonly type: BooleanConstructor;
|
|
132
|
+
readonly default: false;
|
|
133
|
+
};
|
|
129
134
|
as: {
|
|
130
135
|
type: PropType<PrimitiveAs>;
|
|
131
136
|
default: string;
|
|
@@ -135,6 +140,10 @@ export declare const CheckboxIndicator: import("vue").DefineComponent<import("vu
|
|
|
135
140
|
default: boolean;
|
|
136
141
|
};
|
|
137
142
|
}>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
143
|
+
forcePresent: {
|
|
144
|
+
readonly type: BooleanConstructor;
|
|
145
|
+
readonly default: false;
|
|
146
|
+
};
|
|
138
147
|
as: {
|
|
139
148
|
type: PropType<PrimitiveAs>;
|
|
140
149
|
default: string;
|
|
@@ -144,6 +153,7 @@ export declare const CheckboxIndicator: import("vue").DefineComponent<import("vu
|
|
|
144
153
|
default: boolean;
|
|
145
154
|
};
|
|
146
155
|
}>> & Readonly<{}>, {
|
|
156
|
+
forcePresent: boolean;
|
|
147
157
|
as: PrimitiveAs;
|
|
148
158
|
asChild: boolean;
|
|
149
159
|
}, SlotsType<{
|