@auronui/vue 1.0.14 → 1.0.15
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/cjs/index.cjs +532 -420
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/components/accordion/Accordion.js.map +1 -1
- package/dist/components/accordion/Accordion.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/accordion/Accordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/accordion/AccordionContent.js.map +1 -1
- package/dist/components/accordion/AccordionContent.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/components/accordion/AccordionContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/accordion/AccordionHeader.js.map +1 -1
- package/dist/components/accordion/AccordionHeader.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/accordion/AccordionHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/accordion/AccordionItem.js.map +1 -1
- package/dist/components/accordion/AccordionItem.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/accordion/AccordionItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/accordion/AccordionTrigger.js.map +1 -1
- package/dist/components/accordion/AccordionTrigger.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/components/accordion/AccordionTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogAction.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogAction.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/components/alert-dialog/AlertDialogAction.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogCancel.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogCancel.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/components/alert-dialog/AlertDialogCancel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/aspect-ratio/AspectRatio.js.map +1 -1
- package/dist/components/aspect-ratio/AspectRatio.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/aspect-ratio/AspectRatio.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/autocomplete/Autocomplete.js.map +1 -1
- package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js +7 -6
- package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/avatar/Avatar.vue_vue_type_script_setup_true_lang.js +5 -4
- package/dist/components/avatar/Avatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/badge/Badge.js.map +1 -1
- package/dist/components/badge/Badge.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/badge/Badge.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/breadcrumbs/BreadcrumbItem.js.map +1 -1
- package/dist/components/breadcrumbs/BreadcrumbItem.vue_vue_type_script_setup_true_lang.js +7 -5
- package/dist/components/breadcrumbs/BreadcrumbItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/components/breadcrumbs/Breadcrumbs.vue_vue_type_script_setup_true_lang.js +4 -3
- package/dist/components/breadcrumbs/Breadcrumbs.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/button/Button.vue_vue_type_script_setup_true_lang.js +6 -5
- package/dist/components/button/Button.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/button/ButtonGroup.js.map +1 -1
- package/dist/components/button/ButtonGroup.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/components/button/ButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/button/ToggleButtonGroup.js.map +1 -1
- package/dist/components/button/ToggleButtonGroup.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/button/ToggleButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/calendar/Calendar.js.map +1 -1
- package/dist/components/calendar/Calendar.vue_vue_type_script_setup_true_lang.js +32 -31
- package/dist/components/calendar/Calendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/calendar-year-picker/CalendarYearPicker.js.map +1 -1
- package/dist/components/calendar-year-picker/CalendarYearPicker.vue_vue_type_script_setup_true_lang.js +13 -12
- package/dist/components/calendar-year-picker/CalendarYearPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/card/Card.js.map +1 -1
- package/dist/components/card/Card.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/card/Card.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/card/CardBody.js.map +1 -1
- package/dist/components/card/CardBody.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/card/CardBody.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/card/CardFooter.js.map +1 -1
- package/dist/components/card/CardFooter.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/card/CardFooter.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/card/CardHeader.js.map +1 -1
- package/dist/components/card/CardHeader.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/card/CardHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/checkbox/Checkbox.js.map +1 -1
- package/dist/components/checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js +5 -4
- package/dist/components/checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chip/Chip.js.map +1 -1
- package/dist/components/chip/Chip.vue_vue_type_script_setup_true_lang.js +8 -7
- package/dist/components/chip/Chip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/collapsible/Collapsible.js.map +1 -1
- package/dist/components/collapsible/Collapsible.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/collapsible/Collapsible.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/collapsible/CollapsibleContent.js.map +1 -1
- package/dist/components/collapsible/CollapsibleContent.vue_vue_type_script_setup_true_lang.js +7 -3
- package/dist/components/collapsible/CollapsibleContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/collapsible/CollapsibleGroup.js.map +1 -1
- package/dist/components/collapsible/CollapsibleGroup.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/collapsible/CollapsibleGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/collapsible/CollapsibleTrigger.js.map +1 -1
- package/dist/components/collapsible/CollapsibleTrigger.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/components/collapsible/CollapsibleTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/combo-box/ComboBox.js.map +1 -1
- package/dist/components/combo-box/ComboBox.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/combo-box/ComboBox.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/date-input/DateInput.js.map +1 -1
- package/dist/components/date-input/DateInput.vue_vue_type_script_setup_true_lang.js +13 -12
- package/dist/components/date-input/DateInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/date-picker/DatePicker.js.map +1 -1
- package/dist/components/date-picker/DatePicker.vue_vue_type_script_setup_true_lang.js +6 -5
- package/dist/components/date-picker/DatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/date-range-field/DateRangeField.js.map +1 -1
- package/dist/components/date-range-field/DateRangeField.vue_vue_type_script_setup_true_lang.js +16 -15
- package/dist/components/date-range-field/DateRangeField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/date-range-picker/DateRangePicker.js.map +1 -1
- package/dist/components/date-range-picker/DateRangePicker.vue_vue_type_script_setup_true_lang.js +6 -5
- package/dist/components/date-range-picker/DateRangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/date-time-picker/DateTimePicker.js.map +1 -1
- package/dist/components/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.js +11 -10
- package/dist/components/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/input/Input.js.map +1 -1
- package/dist/components/input/Input.vue_vue_type_script_setup_true_lang.js +15 -14
- package/dist/components/input/Input.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/input-otp/InputOTP.js.map +1 -1
- package/dist/components/input-otp/InputOTP.vue_vue_type_script_setup_true_lang.js +5 -4
- package/dist/components/input-otp/InputOTP.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/kbd/Kbd.js.map +1 -1
- package/dist/components/kbd/Kbd.vue_vue_type_script_setup_true_lang.js +5 -4
- package/dist/components/kbd/Kbd.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/link/Link.js.map +1 -1
- package/dist/components/link/Link.vue_vue_type_script_setup_true_lang.js +4 -3
- package/dist/components/link/Link.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/list-box/ListBox.js.map +1 -1
- package/dist/components/list-box/ListBox.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/list-box/ListBox.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/list-box/ListBoxItem.js.map +1 -1
- package/dist/components/list-box/ListBoxItem.vue_vue_type_script_setup_true_lang.js +4 -3
- package/dist/components/list-box/ListBoxItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/meter/Meter.js.map +1 -1
- package/dist/components/meter/Meter.vue_vue_type_script_setup_true_lang.js +13 -12
- package/dist/components/meter/Meter.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/number-field/NumberField.js.map +1 -1
- package/dist/components/number-field/NumberField.vue_vue_type_script_setup_true_lang.js +7 -6
- package/dist/components/number-field/NumberField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/progress-bar/ProgressBar.js.map +1 -1
- package/dist/components/progress-bar/ProgressBar.vue_vue_type_script_setup_true_lang.js +8 -7
- package/dist/components/progress-bar/ProgressBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/progress-circle/ProgressCircle.js.map +1 -1
- package/dist/components/progress-circle/ProgressCircle.vue_vue_type_script_setup_true_lang.js +7 -6
- package/dist/components/progress-circle/ProgressCircle.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/radio/Radio.js.map +1 -1
- package/dist/components/radio/Radio.vue_vue_type_script_setup_true_lang.js +4 -3
- package/dist/components/radio/Radio.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/range-calendar/RangeCalendar.js.map +1 -1
- package/dist/components/range-calendar/RangeCalendar.vue_vue_type_script_setup_true_lang.js +42 -41
- package/dist/components/range-calendar/RangeCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/scroll-shadow/ScrollShadow.js.map +1 -1
- package/dist/components/scroll-shadow/ScrollShadow.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/scroll-shadow/ScrollShadow.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js +7 -6
- package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/skeleton/Skeleton.js.map +1 -1
- package/dist/components/skeleton/Skeleton.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/skeleton/Skeleton.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/slider/Slider.js.map +1 -1
- package/dist/components/slider/Slider.vue_vue_type_script_setup_true_lang.js +8 -7
- package/dist/components/slider/Slider.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/splitter/SplitterGroup.js.map +1 -1
- package/dist/components/splitter/SplitterGroup.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/splitter/SplitterGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/splitter/SplitterPanel.js.map +1 -1
- package/dist/components/splitter/SplitterPanel.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/splitter/SplitterPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/splitter/SplitterResizeHandle.js.map +1 -1
- package/dist/components/splitter/SplitterResizeHandle.vue_vue_type_script_setup_true_lang.js +4 -3
- package/dist/components/splitter/SplitterResizeHandle.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/stepper/Stepper.js.map +1 -1
- package/dist/components/stepper/Stepper.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/stepper/Stepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/stepper/StepperContent.js.map +1 -1
- package/dist/components/stepper/StepperContent.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/stepper/StepperContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/stepper/StepperDescription.js.map +1 -1
- package/dist/components/stepper/StepperDescription.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/stepper/StepperDescription.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/stepper/StepperIndicator.js.map +1 -1
- package/dist/components/stepper/StepperIndicator.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/stepper/StepperIndicator.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/stepper/StepperItem.js.map +1 -1
- package/dist/components/stepper/StepperItem.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/stepper/StepperItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/stepper/StepperSeparator.js.map +1 -1
- package/dist/components/stepper/StepperSeparator.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/stepper/StepperSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/stepper/StepperTitle.js.map +1 -1
- package/dist/components/stepper/StepperTitle.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/stepper/StepperTitle.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/switch/Switch.js.map +1 -1
- package/dist/components/switch/Switch.vue_vue_type_script_setup_true_lang.js +5 -4
- package/dist/components/switch/Switch.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/Table.js.map +1 -1
- package/dist/components/table/Table.vue_vue_type_script_setup_true_lang.js +4 -3
- package/dist/components/table/Table.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/TableBody.js.map +1 -1
- package/dist/components/table/TableBody.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/components/table/TableBody.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/TableCell.js.map +1 -1
- package/dist/components/table/TableCell.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/components/table/TableCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/TableFooter.js.map +1 -1
- package/dist/components/table/TableFooter.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/table/TableFooter.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/TableHeader.js.map +1 -1
- package/dist/components/table/TableHeader.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/components/table/TableHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/TableHeaderCell.js.map +1 -1
- package/dist/components/table/TableHeaderCell.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/components/table/TableHeaderCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/TableRow.js.map +1 -1
- package/dist/components/table/TableRow.vue_vue_type_script_setup_true_lang.js +8 -2
- package/dist/components/table/TableRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/TableVirtualBody.js.map +1 -1
- package/dist/components/table/TableVirtualBody.vue_vue_type_script_setup_true_lang.js +6 -4
- package/dist/components/table/TableVirtualBody.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tabs/Tab.js.map +1 -1
- package/dist/components/tabs/Tab.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/tabs/Tab.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tabs/TabIndicator.js.map +1 -1
- package/dist/components/tabs/TabIndicator.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/tabs/TabIndicator.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tabs/TabList.js.map +1 -1
- package/dist/components/tabs/TabList.vue_vue_type_script_setup_true_lang.js +5 -4
- package/dist/components/tabs/TabList.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tabs/TabPanel.js.map +1 -1
- package/dist/components/tabs/TabPanel.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/tabs/TabPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tabs/Tabs.js.map +1 -1
- package/dist/components/tabs/Tabs.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/tabs/Tabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/textarea/Textarea.js.map +1 -1
- package/dist/components/textarea/Textarea.vue_vue_type_script_setup_true_lang.js +14 -13
- package/dist/components/textarea/Textarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/time-field/TimeField.js.map +1 -1
- package/dist/components/time-field/TimeField.vue_vue_type_script_setup_true_lang.js +13 -12
- package/dist/components/time-field/TimeField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tree/Tree.js.map +1 -1
- package/dist/components/tree/Tree.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/tree/Tree.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tree/TreeItem.js.map +1 -1
- package/dist/components/tree/TreeItem.vue_vue_type_script_setup_true_lang.js +4 -3
- package/dist/components/tree/TreeItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tree/TreeItemToggle.js.map +1 -1
- package/dist/components/tree/TreeItemToggle.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/components/tree/TreeItemToggle.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/index.d.ts +797 -173
- package/dist/utils/composeClassName.js +3 -3
- package/dist/utils/composeClassName.js.map +1 -1
- package/package.json +4 -4
|
@@ -8,7 +8,8 @@ var StepperItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
8
8
|
__name: "StepperItem",
|
|
9
9
|
props: {
|
|
10
10
|
step: {},
|
|
11
|
-
class: { default: void 0 }
|
|
11
|
+
class: { default: void 0 },
|
|
12
|
+
classNames: { default: void 0 }
|
|
12
13
|
},
|
|
13
14
|
setup(__props) {
|
|
14
15
|
const props = __props;
|
|
@@ -21,7 +22,7 @@ var StepperItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
21
22
|
}));
|
|
22
23
|
return (_ctx, _cache) => {
|
|
23
24
|
return openBlock(), createElementBlock("div", {
|
|
24
|
-
class: normalizeClass(unref(composeClassName)(slotFns.value.item(), props.class)),
|
|
25
|
+
class: normalizeClass(unref(composeClassName)(slotFns.value.item(), props.class, props.classNames?.item)),
|
|
25
26
|
"data-status": status.value,
|
|
26
27
|
"data-step": __props.step,
|
|
27
28
|
"data-slot": "stepper-item"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepperItem.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/stepper/StepperItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { stepperVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { stepperContextKey } from './Stepper.context'\n\nconst props = withDefaults(defineProps<{\n step: number\n class?:
|
|
1
|
+
{"version":3,"file":"StepperItem.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/stepper/StepperItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { stepperVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { stepperContextKey } from './Stepper.context'\n\nconst props = withDefaults(defineProps<{\n step: number\n /** Custom CSS classes for the root element. */\n class?: ClassValue\n /** Override CSS classes for individual slots. */\n classNames?: Partial<{\n item: ClassValue\n }>\n}>(), {\n class: undefined,\n classNames: undefined,\n})\n\nconst ctx = inject(stepperContextKey)\n\nconst status = computed(() => ctx?.getStepStatus(props.step) ?? 'pending')\n\nconst slotFns = computed(() =>\n stepperVariants({\n orientation: ctx?.orientation.value,\n size: ctx?.size.value,\n color: ctx?.color.value,\n }),\n)\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.item(), props.class, props.classNames?.item)\"\n :data-status=\"status\"\n :data-step=\"step\"\n data-slot=\"stepper-item\"\n >\n <slot\n :status=\"status\"\n :step=\"step\"\n :is-current=\"status === 'current'\"\n :is-completed=\"status === 'completed'\"\n :is-error=\"status === 'error'\"\n />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAad,MAAM,MAAM,OAAO,kBAAiB;EAEpC,MAAM,SAAS,eAAe,KAAK,cAAc,MAAM,KAAK,IAAI,UAAS;EAEzE,MAAM,UAAU,eACd,gBAAgB;GACd,aAAa,KAAK,YAAY;GAC9B,MAAM,KAAK,KAAK;GAChB,OAAO,KAAK,MAAM;GACnB,CAAC,CACJ;;uBAIE,mBAaM,OAAA;IAZH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,eAAa,OAAA;IACb,aAAW,QAAA;IACZ,aAAU;OAEV,WAME,KAAA,QAAA,WAAA;IALC,QAAQ,OAAA;IACR,MAAM,QAAA;IACN,WAAY,OAAA,UAAM;IAClB,aAAc,OAAA,UAAM;IACpB,SAAU,OAAA,UAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepperSeparator.js","names":[],"sources":["../../../src/components/stepper/StepperSeparator.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { stepperVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { stepperContextKey } from './Stepper.context'\n\nconst props = withDefaults(defineProps<{\n class?:
|
|
1
|
+
{"version":3,"file":"StepperSeparator.js","names":[],"sources":["../../../src/components/stepper/StepperSeparator.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { stepperVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { stepperContextKey } from './Stepper.context'\n\nconst props = withDefaults(defineProps<{\n /** Additional CSS class for the root element. */\n class?: ClassValue\n /** Per-slot class overrides. */\n classNames?: Partial<{\n separator: ClassValue\n }>\n}>(), {\n class: undefined,\n classNames: undefined,\n})\n\nconst ctx = inject(stepperContextKey)\nconst slotFns = computed(() =>\n stepperVariants({ orientation: ctx?.orientation.value }),\n)\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.separator(), props.class, props.classNames?.separator)\"\n role=\"none\"\n data-slot=\"stepper-separator\"\n />\n</template>\n"],"mappings":""}
|
|
@@ -5,14 +5,17 @@ import { stepperVariants } from "@auronui/styles";
|
|
|
5
5
|
//#region src/components/stepper/StepperSeparator.vue?vue&type=script&setup=true&lang.ts
|
|
6
6
|
var StepperSeparator_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
7
7
|
__name: "StepperSeparator",
|
|
8
|
-
props: {
|
|
8
|
+
props: {
|
|
9
|
+
class: { default: void 0 },
|
|
10
|
+
classNames: { default: void 0 }
|
|
11
|
+
},
|
|
9
12
|
setup(__props) {
|
|
10
13
|
const props = __props;
|
|
11
14
|
const ctx = inject(stepperContextKey);
|
|
12
15
|
const slotFns = computed(() => stepperVariants({ orientation: ctx?.orientation.value }));
|
|
13
16
|
return (_ctx, _cache) => {
|
|
14
17
|
return openBlock(), createElementBlock("div", {
|
|
15
|
-
class: normalizeClass(unref(composeClassName)(slotFns.value.separator(), props.class)),
|
|
18
|
+
class: normalizeClass(unref(composeClassName)(slotFns.value.separator(), props.class, props.classNames?.separator)),
|
|
16
19
|
role: "none",
|
|
17
20
|
"data-slot": "stepper-separator"
|
|
18
21
|
}, null, 2);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepperSeparator.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/stepper/StepperSeparator.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { stepperVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { stepperContextKey } from './Stepper.context'\n\nconst props = withDefaults(defineProps<{\n class?:
|
|
1
|
+
{"version":3,"file":"StepperSeparator.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/stepper/StepperSeparator.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { stepperVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { stepperContextKey } from './Stepper.context'\n\nconst props = withDefaults(defineProps<{\n /** Additional CSS class for the root element. */\n class?: ClassValue\n /** Per-slot class overrides. */\n classNames?: Partial<{\n separator: ClassValue\n }>\n}>(), {\n class: undefined,\n classNames: undefined,\n})\n\nconst ctx = inject(stepperContextKey)\nconst slotFns = computed(() =>\n stepperVariants({ orientation: ctx?.orientation.value }),\n)\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.separator(), props.class, props.classNames?.separator)\"\n role=\"none\"\n data-slot=\"stepper-separator\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;EAMA,MAAM,QAAQ;EAYd,MAAM,MAAM,OAAO,kBAAiB;EACpC,MAAM,UAAU,eACd,gBAAgB,EAAE,aAAa,KAAK,YAAY,OAAO,CAAC,CAC1D;;uBAIE,mBAIE,OAAA;IAHC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,OAAO,MAAM,YAAY,UAAS,CAAA;IACtF,MAAK;IACL,aAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepperTitle.js","names":[],"sources":["../../../src/components/stepper/StepperTitle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { stepperVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { stepperContextKey } from './Stepper.context'\n\nconst props = withDefaults(defineProps<{\n class?:
|
|
1
|
+
{"version":3,"file":"StepperTitle.js","names":[],"sources":["../../../src/components/stepper/StepperTitle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { stepperVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { stepperContextKey } from './Stepper.context'\n\nconst props = withDefaults(defineProps<{\n /** Custom CSS classes for the root element */\n class?: ClassValue\n /** Per-slot custom CSS class overrides */\n classNames?: Partial<{\n title: ClassValue\n }>\n}>(), {\n class: undefined,\n classNames: undefined,\n})\n\nconst ctx = inject(stepperContextKey)\nconst slotFns = computed(() => stepperVariants({ size: ctx?.size.value }))\n</script>\n\n<template>\n <p\n :class=\"composeClassName(slotFns.title(), props.class, props.classNames?.title)\"\n data-slot=\"stepper-title\"\n >\n <slot />\n </p>\n</template>\n"],"mappings":""}
|
|
@@ -5,14 +5,17 @@ import { stepperVariants } from "@auronui/styles";
|
|
|
5
5
|
//#region src/components/stepper/StepperTitle.vue?vue&type=script&setup=true&lang.ts
|
|
6
6
|
var StepperTitle_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
7
7
|
__name: "StepperTitle",
|
|
8
|
-
props: {
|
|
8
|
+
props: {
|
|
9
|
+
class: { default: void 0 },
|
|
10
|
+
classNames: { default: void 0 }
|
|
11
|
+
},
|
|
9
12
|
setup(__props) {
|
|
10
13
|
const props = __props;
|
|
11
14
|
const ctx = inject(stepperContextKey);
|
|
12
15
|
const slotFns = computed(() => stepperVariants({ size: ctx?.size.value }));
|
|
13
16
|
return (_ctx, _cache) => {
|
|
14
17
|
return openBlock(), createElementBlock("p", {
|
|
15
|
-
class: normalizeClass(unref(composeClassName)(slotFns.value.title(), props.class)),
|
|
18
|
+
class: normalizeClass(unref(composeClassName)(slotFns.value.title(), props.class, props.classNames?.title)),
|
|
16
19
|
"data-slot": "stepper-title"
|
|
17
20
|
}, [renderSlot(_ctx.$slots, "default")], 2);
|
|
18
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepperTitle.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/stepper/StepperTitle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { stepperVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { stepperContextKey } from './Stepper.context'\n\nconst props = withDefaults(defineProps<{\n class?:
|
|
1
|
+
{"version":3,"file":"StepperTitle.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/stepper/StepperTitle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { stepperVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { stepperContextKey } from './Stepper.context'\n\nconst props = withDefaults(defineProps<{\n /** Custom CSS classes for the root element */\n class?: ClassValue\n /** Per-slot custom CSS class overrides */\n classNames?: Partial<{\n title: ClassValue\n }>\n}>(), {\n class: undefined,\n classNames: undefined,\n})\n\nconst ctx = inject(stepperContextKey)\nconst slotFns = computed(() => stepperVariants({ size: ctx?.size.value }))\n</script>\n\n<template>\n <p\n :class=\"composeClassName(slotFns.title(), props.class, props.classNames?.title)\"\n data-slot=\"stepper-title\"\n >\n <slot />\n </p>\n</template>\n"],"mappings":";;;;;;;;;;;;EAMA,MAAM,QAAQ;EAYd,MAAM,MAAM,OAAO,kBAAiB;EACpC,MAAM,UAAU,eAAe,gBAAgB,EAAE,MAAM,KAAK,KAAK,OAAO,CAAC,CAAA;;uBAIvE,mBAKI,KAAA;IAJD,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,OAAO,MAAM,YAAY,MAAK,CAAA;IAC9E,aAAU;OAEV,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.js","names":[],"sources":["../../../src/components/switch/Switch.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, useAttrs } from 'vue'\nimport { SwitchRoot, SwitchThumb } from 'reka-ui'\nimport { switchVariants, type SwitchVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useSwitchGroupInject } from './switch-group.context'\n\n// Disable Vue attribute fallthrough — we manually forward $attrs to SwitchRoot\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<{\n size?: SwitchVariants['size']\n value?: string\n modelValue?: boolean\n defaultValue?: boolean\n disabled?: boolean\n name?: string\n class?:
|
|
1
|
+
{"version":3,"file":"Switch.js","names":[],"sources":["../../../src/components/switch/Switch.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, useAttrs } from 'vue'\nimport { SwitchRoot, SwitchThumb } from 'reka-ui'\nimport { switchVariants, type SwitchVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useSwitchGroupInject } from './switch-group.context'\n\n// Disable Vue attribute fallthrough — we manually forward $attrs to SwitchRoot\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<{\n size?: SwitchVariants['size']\n value?: string\n modelValue?: boolean\n defaultValue?: boolean\n disabled?: boolean\n name?: string\n class?: ClassValue\n /** Per-slot class overrides. Each key is a slot name (e.g. 'base', 'control', 'thumb', 'content'). */\n classNames?: Partial<{\n base: ClassValue\n control: ClassValue\n thumb: ClassValue\n content: ClassValue\n }>\n}>(), {\n size: undefined,\n value: undefined,\n modelValue: undefined,\n defaultValue: false,\n disabled: false,\n name: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean]\n}>()\n\nconst attrs = useAttrs()\n\n// Inject SwitchGroup context with fallback defaults (standalone mode)\nconst groupCtx = useSwitchGroupInject({\n size: ref('md'),\n disabled: ref(false),\n selectedValues: ref([]),\n toggleValue: () => {},\n name: ref(undefined),\n})\n\n// Prop precedence: group disabled wins (D-02)\nconst isDisabled = computed(() => groupCtx.disabled.value || props.disabled)\n\n// Child size wins over group size\nconst finalSize = computed(() => props.size ?? groupCtx.size.value)\n\n// Determine if inside a group (value prop is the signal)\nconst isInGroup = computed(() => props.value !== undefined)\n\n// Compute checked state\nconst checked = computed<boolean>(() => {\n if (isInGroup.value) {\n return groupCtx.selectedValues.value.includes(props.value!)\n }\n return props.modelValue ?? false\n})\n\n// Handle Reka UI's update:checked event\nfunction handleUpdate(val: boolean) {\n if (isInGroup.value) {\n groupCtx.toggleValue(props.value!)\n } else {\n emit('update:modelValue', val)\n }\n}\n\nconst slotFns = computed(() =>\n switchVariants({ size: finalSize.value })\n)\n</script>\n\n<template>\n <!--\n v-bind=\"attrs\" forwards aria-label and other HTML attributes through to Reka UI's\n SwitchRoot, which then applies them to the inner <button> element.\n inheritAttrs: false prevents double-application on SwitchRoot's root.\n -->\n <SwitchRoot\n v-bind=\"attrs\"\n :model-value=\"checked\"\n :disabled=\"isDisabled\"\n :name=\"props.name ?? groupCtx.name.value\"\n :value=\"props.value\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n @update:model-value=\"handleUpdate\"\n >\n <span :class=\"composeClassName(slotFns.control(), props.classNames?.control)\">\n <SwitchThumb :class=\"composeClassName(slotFns.thumb(), props.classNames?.thumb)\" />\n </span>\n <span\n v-if=\"$slots.default\"\n :class=\"composeClassName(slotFns.content(), props.classNames?.content)\"\n >\n <slot />\n </span>\n </SwitchRoot>\n</template>\n"],"mappings":""}
|
|
@@ -23,7 +23,8 @@ var Switch_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
23
23
|
default: false
|
|
24
24
|
},
|
|
25
25
|
name: { default: void 0 },
|
|
26
|
-
class: {}
|
|
26
|
+
class: {},
|
|
27
|
+
classNames: {}
|
|
27
28
|
},
|
|
28
29
|
emits: ["update:modelValue"],
|
|
29
30
|
setup(__props, { emit: __emit }) {
|
|
@@ -55,12 +56,12 @@ var Switch_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
55
56
|
disabled: isDisabled.value,
|
|
56
57
|
name: props.name ?? unref(groupCtx).name.value,
|
|
57
58
|
value: props.value,
|
|
58
|
-
class: unref(composeClassName)(slotFns.value.base(), props.class),
|
|
59
|
+
class: unref(composeClassName)(slotFns.value.base(), props.class, props.classNames?.base),
|
|
59
60
|
"onUpdate:modelValue": handleUpdate
|
|
60
61
|
}), {
|
|
61
|
-
default: withCtx(() => [createElementVNode("span", { class: normalizeClass(slotFns.value.control()) }, [createVNode(unref(SwitchThumb), { class: normalizeClass(slotFns.value.thumb()) }, null, 8, ["class"])], 2), _ctx.$slots.default ? (openBlock(), createElementBlock("span", {
|
|
62
|
+
default: withCtx(() => [createElementVNode("span", { class: normalizeClass(unref(composeClassName)(slotFns.value.control(), props.classNames?.control)) }, [createVNode(unref(SwitchThumb), { class: normalizeClass(unref(composeClassName)(slotFns.value.thumb(), props.classNames?.thumb)) }, null, 8, ["class"])], 2), _ctx.$slots.default ? (openBlock(), createElementBlock("span", {
|
|
62
63
|
key: 0,
|
|
63
|
-
class: normalizeClass(slotFns.value.content())
|
|
64
|
+
class: normalizeClass(unref(composeClassName)(slotFns.value.content(), props.classNames?.content))
|
|
64
65
|
}, [renderSlot(_ctx.$slots, "default")], 2)) : createCommentVNode("", true)]),
|
|
65
66
|
_: 3
|
|
66
67
|
}, 16, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/switch/Switch.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, useAttrs } from 'vue'\nimport { SwitchRoot, SwitchThumb } from 'reka-ui'\nimport { switchVariants, type SwitchVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useSwitchGroupInject } from './switch-group.context'\n\n// Disable Vue attribute fallthrough — we manually forward $attrs to SwitchRoot\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<{\n size?: SwitchVariants['size']\n value?: string\n modelValue?: boolean\n defaultValue?: boolean\n disabled?: boolean\n name?: string\n class?:
|
|
1
|
+
{"version":3,"file":"Switch.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/switch/Switch.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, useAttrs } from 'vue'\nimport { SwitchRoot, SwitchThumb } from 'reka-ui'\nimport { switchVariants, type SwitchVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useSwitchGroupInject } from './switch-group.context'\n\n// Disable Vue attribute fallthrough — we manually forward $attrs to SwitchRoot\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<{\n size?: SwitchVariants['size']\n value?: string\n modelValue?: boolean\n defaultValue?: boolean\n disabled?: boolean\n name?: string\n class?: ClassValue\n /** Per-slot class overrides. Each key is a slot name (e.g. 'base', 'control', 'thumb', 'content'). */\n classNames?: Partial<{\n base: ClassValue\n control: ClassValue\n thumb: ClassValue\n content: ClassValue\n }>\n}>(), {\n size: undefined,\n value: undefined,\n modelValue: undefined,\n defaultValue: false,\n disabled: false,\n name: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean]\n}>()\n\nconst attrs = useAttrs()\n\n// Inject SwitchGroup context with fallback defaults (standalone mode)\nconst groupCtx = useSwitchGroupInject({\n size: ref('md'),\n disabled: ref(false),\n selectedValues: ref([]),\n toggleValue: () => {},\n name: ref(undefined),\n})\n\n// Prop precedence: group disabled wins (D-02)\nconst isDisabled = computed(() => groupCtx.disabled.value || props.disabled)\n\n// Child size wins over group size\nconst finalSize = computed(() => props.size ?? groupCtx.size.value)\n\n// Determine if inside a group (value prop is the signal)\nconst isInGroup = computed(() => props.value !== undefined)\n\n// Compute checked state\nconst checked = computed<boolean>(() => {\n if (isInGroup.value) {\n return groupCtx.selectedValues.value.includes(props.value!)\n }\n return props.modelValue ?? false\n})\n\n// Handle Reka UI's update:checked event\nfunction handleUpdate(val: boolean) {\n if (isInGroup.value) {\n groupCtx.toggleValue(props.value!)\n } else {\n emit('update:modelValue', val)\n }\n}\n\nconst slotFns = computed(() =>\n switchVariants({ size: finalSize.value })\n)\n</script>\n\n<template>\n <!--\n v-bind=\"attrs\" forwards aria-label and other HTML attributes through to Reka UI's\n SwitchRoot, which then applies them to the inner <button> element.\n inheritAttrs: false prevents double-application on SwitchRoot's root.\n -->\n <SwitchRoot\n v-bind=\"attrs\"\n :model-value=\"checked\"\n :disabled=\"isDisabled\"\n :name=\"props.name ?? groupCtx.name.value\"\n :value=\"props.value\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n @update:model-value=\"handleUpdate\"\n >\n <span :class=\"composeClassName(slotFns.control(), props.classNames?.control)\">\n <SwitchThumb :class=\"composeClassName(slotFns.thumb(), props.classNames?.thumb)\" />\n </span>\n <span\n v-if=\"$slots.default\"\n :class=\"composeClassName(slotFns.content(), props.classNames?.content)\"\n >\n <slot />\n </span>\n </SwitchRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUA,MAAM,QAAQ;EAwBd,MAAM,OAAO;EAIb,MAAM,QAAQ,UAAS;EAGvB,MAAM,WAAW,qBAAqB;GACpC,MAAM,IAAI,KAAK;GACf,UAAU,IAAI,MAAM;GACpB,gBAAgB,IAAI,EAAE,CAAC;GACvB,mBAAmB;GACnB,MAAM,IAAI,KAAA,EAAU;GACrB,CAAA;EAGD,MAAM,aAAa,eAAe,SAAS,SAAS,SAAS,MAAM,SAAQ;EAG3E,MAAM,YAAY,eAAe,MAAM,QAAQ,SAAS,KAAK,MAAK;EAGlE,MAAM,YAAY,eAAe,MAAM,UAAU,KAAA,EAAS;EAG1D,MAAM,UAAU,eAAwB;AACtC,OAAI,UAAU,MACZ,QAAO,SAAS,eAAe,MAAM,SAAS,MAAM,MAAM;AAE5D,UAAO,MAAM,cAAc;IAC5B;EAGD,SAAS,aAAa,KAAc;AAClC,OAAI,UAAU,MACZ,UAAS,YAAY,MAAM,MAAM;OAEjC,MAAK,qBAAqB,IAAG;;EAIjC,MAAM,UAAU,eACd,eAAe,EAAE,MAAM,UAAU,OAAO,CAAA,CAC1C;;uBASE,YAkBa,MAAA,WAAA,EAlBb,WACU,MAiBG,MAjBE,EAAA;IACZ,eAAa,QAAA;IACb,UAAU,WAAA;IACV,MAAM,MAAM,QAAQ,MAAA,SAAQ,CAAC,KAAK;IAClC,OAAO,MAAM;IACb,OAAO,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI;IAC3E,uBAAoB;;2BAId,CAFP,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA,EAAA,EAAA,CACzE,YAAmF,MAAA,YAAA,EAAA,EAArE,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA,EAAA,EAAA,MAAA,GAAA,CAAA,QAAA,CAAA,CAAA,EAAA,EAAA,EAGxEA,KAAAA,OAAO,WAAA,WAAA,EADf,mBAKO,QAAA;;KAHJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA;QAErE,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","names":[],"sources":["../../../src/components/table/Table.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// Note: Vue 3.5 generic SFCs do not propagate generic type parameters across\n// component boundaries when used via JSX/mount() in tests. We use ColumnDef<any, any>\n// for props to avoid TS2322 errors while keeping internal TanStack reactivity correct.\nimport { computed, ref, watch, useTemplateRef, h } from 'vue'\nimport {\n useVueTable,\n getCoreRowModel,\n getSortedRowModel,\n type ColumnDef,\n type SortingState,\n type RowSelectionState,\n type Table as TableInstance,\n type RowData,\n type Row,\n} from '@tanstack/vue-table'\nimport { tableVariants, type TableVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useTableProvide } from './table.context'\nimport { useTableKeyboardNav } from './useTableKeyboardNav'\nimport TableHeader from './TableHeader.vue'\nimport TableBody from './TableBody.vue'\nimport TableVirtualBody from './TableVirtualBody.vue'\nimport TableFooter from './TableFooter.vue'\nimport TableCheckboxCell from './TableCheckboxCell.vue'\n\ntype SelectionMode = 'none' | 'single' | 'multiple'\n\nconst props = withDefaults(\n defineProps<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnDef<any, any>[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any[]\n variant?: TableVariants['variant']\n ariaLabel?: string\n /** Row selection mode. 'single' = radio-style; 'multiple' = checkbox + shift+click; 'none' = disabled */\n selection?: SelectionMode\n /** Controlled row selection state (Record<rowId, boolean>). Use v-model:rowSelection */\n rowSelection?: RowSelectionState\n /**\n * Opt-in row virtualization via @tanstack/vue-virtual.\n * - false (default): all rows render in a standard <tbody>\n * - true: always render via TableVirtualBody (only visible rows in DOM)\n * - number N: auto-enable virtualization when data.length > N\n */\n virtualRows?: boolean | number\n /** Estimated row height in px used by the virtualizer (default: 44) */\n estimatedRowHeight?: number\n /** Extra rows to render outside the visible viewport (default: 8) */\n virtualizerOverscan?: number\n }>(),\n {\n variant: 'primary',\n ariaLabel: undefined,\n selection: 'none',\n rowSelection: undefined,\n virtualRows: false,\n estimatedRowHeight: 44,\n virtualizerOverscan: 8,\n }\n)\n\nconst emit = defineEmits<{\n 'update:rowSelection': [value: RowSelectionState]\n}>()\n\n// --- Sorting state ----------------------------------------------------\nconst sorting = ref<SortingState>([])\n\n// --- Row selection state (controlled/uncontrolled) -------------------\nconst internalRowSelection = ref<RowSelectionState>(props.rowSelection ?? {})\nwatch(\n () => props.rowSelection,\n (next) => {\n if (next !== undefined) internalRowSelection.value = next\n },\n { deep: true }\n)\n\nfunction updateRowSelection(\n updater: RowSelectionState | ((old: RowSelectionState) => RowSelectionState)\n) {\n const next = typeof updater === 'function' ? updater(internalRowSelection.value) : updater\n internalRowSelection.value = next\n emit('update:rowSelection', next)\n}\n\n// --- Selection column injected at position 0 when enabled -----------\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst selectionColumn: ColumnDef<any, any> = {\n id: '__select__',\n size: 44,\n enableSorting: false,\n header: ({ table: t }) =>\n props.selection === 'multiple'\n ? h(TableCheckboxCell, { table: t as unknown as TableInstance<RowData> })\n : '',\n cell: ({ row: r }) => h(TableCheckboxCell, { row: r as unknown as Row<RowData> }),\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst effectiveColumns = computed<ColumnDef<any, any>[]>(() => {\n if (props.selection === 'none') return props.columns\n return [selectionColumn, ...props.columns]\n})\n\n// --- useVueTable instance ---------------------------------------------\n// Use getters so @tanstack/vue-table tracks prop reactivity.\nconst table = useVueTable({\n get data() {\n return props.data\n },\n get columns() {\n return effectiveColumns.value as ColumnDef<RowData, unknown>[]\n },\n state: {\n get sorting() {\n return sorting.value\n },\n get rowSelection() {\n return internalRowSelection.value\n },\n },\n onSortingChange: (updater) => {\n sorting.value = typeof updater === 'function' ? updater(sorting.value) : updater\n },\n onRowSelectionChange: updateRowSelection,\n get enableRowSelection() {\n return props.selection !== 'none'\n },\n get enableMultiRowSelection() {\n return props.selection === 'multiple'\n },\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n}) as unknown as TableInstance<RowData>\n\n// --- Virtualization ---------------------------------------------------\n/** Whether to use TableVirtualBody instead of TableBody */\nconst useVirtual = computed<boolean>(() => {\n if (props.virtualRows === false) return false\n if (props.virtualRows === true) return true\n if (typeof props.virtualRows === 'number') return props.data.length > props.virtualRows\n return false\n})\n\n// The scroll container wrapping the <table> — passed to the virtualizer\nconst scrollContainerRef = useTemplateRef<HTMLElement>('scrollContainerRef')\n\n// Ref to TableVirtualBody instance so keyboard nav can call scrollToIndex\nconst virtualBodyRef = ref<InstanceType<typeof TableVirtualBody> | null>(null)\n\n// --- Keyboard navigation ----------------------------------------------\nconst rootRef = useTemplateRef<HTMLElement>('rootRef')\n\nconst rowCount = computed(() => props.data.length)\nconst columnCount = computed(() => {\n const firstGroup = table.getHeaderGroups()[0]\n return firstGroup ? firstGroup.headers.length : 0\n})\n\nfunction getCellElement(rowIndex: number, columnIndex: number): HTMLElement | null {\n const root = rootRef.value\n if (!root) return null\n // In virtualized mode, scroll the row into view first so the DOM node exists.\n // The queueMicrotask in useTableKeyboardNav.move() gives Vue one tick to\n // flush the virtualizer's render before focus is attempted.\n if (useVirtual.value && virtualBodyRef.value) {\n virtualBodyRef.value.scrollToIndex(rowIndex)\n }\n return root.querySelector<HTMLElement>(\n `[data-row-index=\"${rowIndex}\"][data-col-index=\"${columnIndex}\"]`\n )\n}\n\nconst keyboardNav = useTableKeyboardNav({ rowCount, columnCount, getCellElement })\n\n// --- Selection context helpers ----------------------------------------\nconst selectionEnabled = computed(() => props.selection !== 'none')\nconst selectionMode = computed(() => props.selection ?? 'none')\n\n// Track last-clicked row index for Shift+Click range selection\nconst lastClickedRowIndex = ref<number | null>(null)\n\nfunction handleRowClick(rowIndex: number, event: MouseEvent) {\n if (props.selection === 'none') return\n const rows = table.getRowModel().rows\n if (props.selection === 'multiple' && event.shiftKey && lastClickedRowIndex.value !== null) {\n const [start, end] = [lastClickedRowIndex.value, rowIndex].sort((a, b) => a - b)\n const next: RowSelectionState = { ...internalRowSelection.value }\n for (let i = start; i <= end; i++) {\n const r = rows[i]\n if (r) next[r.id] = true\n }\n updateRowSelection(next)\n }\n lastClickedRowIndex.value = rowIndex\n}\n\n// --- Context provision -------------------------------------------------\nconst variantRef = computed(() => props.variant ?? 'primary')\nconst activeCell = keyboardNav.activeCell\n\nuseTableProvide({\n table,\n activeCell,\n selectionEnabled,\n selectionMode,\n variant: variantRef,\n handleRowClick,\n})\n\n// --- Slot class derivation -------------------------------------------\nconst slotFns = computed(() => tableVariants({ variant: variantRef.value }))\n\ndefineExpose({ table, keyboardNav, handleRowClick })\n</script>\n\n<template>\n <div :class=\"composeClassName(slotFns.base(), $attrs.class as string)\">\n <!--\n scroll container: when virtualized, needs a fixed height + overflow:auto\n so the virtualizer can measure the viewport. Consumers should override\n the inline height via a wrapping container or CSS for production use.\n -->\n <div\n ref=\"scrollContainerRef\"\n :class=\"slotFns.scrollContainer()\"\n :style=\"useVirtual ? { height: '400px', overflow: 'auto' } : undefined\"\n >\n <table\n ref=\"rootRef\"\n role=\"grid\"\n :aria-label=\"ariaLabel\"\n :aria-rowcount=\"rowCount\"\n :aria-colcount=\"columnCount\"\n @keydown=\"keyboardNav.onKeydown\"\n >\n <TableHeader />\n <TableBody v-if=\"!useVirtual\">\n <template #cell=\"slotProps\">\n <slot\n name=\"cell\"\n v-bind=\"slotProps\"\n />\n </template>\n </TableBody>\n <TableVirtualBody\n v-else\n ref=\"virtualBodyRef\"\n :scroll-element=\"scrollContainerRef\"\n :estimated-row-height=\"estimatedRowHeight\"\n :overscan=\"virtualizerOverscan\"\n />\n <TableFooter v-if=\"$slots.footer\">\n <slot name=\"footer\" />\n </TableFooter>\n </table>\n </div>\n </div>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"Table.js","names":[],"sources":["../../../src/components/table/Table.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// Note: Vue 3.5 generic SFCs do not propagate generic type parameters across\n// component boundaries when used via JSX/mount() in tests. We use ColumnDef<any, any>\n// for props to avoid TS2322 errors while keeping internal TanStack reactivity correct.\nimport { computed, ref, watch, useTemplateRef, h } from 'vue'\nimport {\n useVueTable,\n getCoreRowModel,\n getSortedRowModel,\n type ColumnDef,\n type SortingState,\n type RowSelectionState,\n type Table as TableInstance,\n type RowData,\n type Row,\n} from '@tanstack/vue-table'\nimport { tableVariants, type TableVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useTableProvide } from './table.context'\nimport { useTableKeyboardNav } from './useTableKeyboardNav'\nimport TableHeader from './TableHeader.vue'\nimport TableBody from './TableBody.vue'\nimport TableVirtualBody from './TableVirtualBody.vue'\nimport TableFooter from './TableFooter.vue'\nimport TableCheckboxCell from './TableCheckboxCell.vue'\n\ntype SelectionMode = 'none' | 'single' | 'multiple'\n\nconst props = withDefaults(\n defineProps<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnDef<any, any>[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any[]\n variant?: TableVariants['variant']\n ariaLabel?: string\n /** Row selection mode. 'single' = radio-style; 'multiple' = checkbox + shift+click; 'none' = disabled */\n selection?: SelectionMode\n /** Controlled row selection state (Record<rowId, boolean>). Use v-model:rowSelection */\n rowSelection?: RowSelectionState\n /**\n * Opt-in row virtualization via @tanstack/vue-virtual.\n * - false (default): all rows render in a standard <tbody>\n * - true: always render via TableVirtualBody (only visible rows in DOM)\n * - number N: auto-enable virtualization when data.length > N\n */\n virtualRows?: boolean | number\n /** Estimated row height in px used by the virtualizer (default: 44) */\n estimatedRowHeight?: number\n /** Extra rows to render outside the visible viewport (default: 8) */\n virtualizerOverscan?: number\n /** Per-slot CSS class overrides */\n classNames?: Partial<{\n base: ClassValue\n scrollContainer: ClassValue\n }>\n }>(),\n {\n variant: 'primary',\n ariaLabel: undefined,\n selection: 'none',\n rowSelection: undefined,\n virtualRows: false,\n estimatedRowHeight: 44,\n virtualizerOverscan: 8,\n }\n)\n\nconst emit = defineEmits<{\n 'update:rowSelection': [value: RowSelectionState]\n}>()\n\n// --- Sorting state ----------------------------------------------------\nconst sorting = ref<SortingState>([])\n\n// --- Row selection state (controlled/uncontrolled) -------------------\nconst internalRowSelection = ref<RowSelectionState>(props.rowSelection ?? {})\nwatch(\n () => props.rowSelection,\n (next) => {\n if (next !== undefined) internalRowSelection.value = next\n },\n { deep: true }\n)\n\nfunction updateRowSelection(\n updater: RowSelectionState | ((old: RowSelectionState) => RowSelectionState)\n) {\n const next = typeof updater === 'function' ? updater(internalRowSelection.value) : updater\n internalRowSelection.value = next\n emit('update:rowSelection', next)\n}\n\n// --- Selection column injected at position 0 when enabled -----------\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst selectionColumn: ColumnDef<any, any> = {\n id: '__select__',\n size: 44,\n enableSorting: false,\n header: ({ table: t }) =>\n props.selection === 'multiple'\n ? h(TableCheckboxCell, { table: t as unknown as TableInstance<RowData> })\n : '',\n cell: ({ row: r }) => h(TableCheckboxCell, { row: r as unknown as Row<RowData> }),\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst effectiveColumns = computed<ColumnDef<any, any>[]>(() => {\n if (props.selection === 'none') return props.columns\n return [selectionColumn, ...props.columns]\n})\n\n// --- useVueTable instance ---------------------------------------------\n// Use getters so @tanstack/vue-table tracks prop reactivity.\nconst table = useVueTable({\n get data() {\n return props.data\n },\n get columns() {\n return effectiveColumns.value as ColumnDef<RowData, unknown>[]\n },\n state: {\n get sorting() {\n return sorting.value\n },\n get rowSelection() {\n return internalRowSelection.value\n },\n },\n onSortingChange: (updater) => {\n sorting.value = typeof updater === 'function' ? updater(sorting.value) : updater\n },\n onRowSelectionChange: updateRowSelection,\n get enableRowSelection() {\n return props.selection !== 'none'\n },\n get enableMultiRowSelection() {\n return props.selection === 'multiple'\n },\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n}) as unknown as TableInstance<RowData>\n\n// --- Virtualization ---------------------------------------------------\n/** Whether to use TableVirtualBody instead of TableBody */\nconst useVirtual = computed<boolean>(() => {\n if (props.virtualRows === false) return false\n if (props.virtualRows === true) return true\n if (typeof props.virtualRows === 'number') return props.data.length > props.virtualRows\n return false\n})\n\n// The scroll container wrapping the <table> — passed to the virtualizer\nconst scrollContainerRef = useTemplateRef<HTMLElement>('scrollContainerRef')\n\n// Ref to TableVirtualBody instance so keyboard nav can call scrollToIndex\nconst virtualBodyRef = ref<InstanceType<typeof TableVirtualBody> | null>(null)\n\n// --- Keyboard navigation ----------------------------------------------\nconst rootRef = useTemplateRef<HTMLElement>('rootRef')\n\nconst rowCount = computed(() => props.data.length)\nconst columnCount = computed(() => {\n const firstGroup = table.getHeaderGroups()[0]\n return firstGroup ? firstGroup.headers.length : 0\n})\n\nfunction getCellElement(rowIndex: number, columnIndex: number): HTMLElement | null {\n const root = rootRef.value\n if (!root) return null\n // In virtualized mode, scroll the row into view first so the DOM node exists.\n // The queueMicrotask in useTableKeyboardNav.move() gives Vue one tick to\n // flush the virtualizer's render before focus is attempted.\n if (useVirtual.value && virtualBodyRef.value) {\n virtualBodyRef.value.scrollToIndex(rowIndex)\n }\n return root.querySelector<HTMLElement>(\n `[data-row-index=\"${rowIndex}\"][data-col-index=\"${columnIndex}\"]`\n )\n}\n\nconst keyboardNav = useTableKeyboardNav({ rowCount, columnCount, getCellElement })\n\n// --- Selection context helpers ----------------------------------------\nconst selectionEnabled = computed(() => props.selection !== 'none')\nconst selectionMode = computed(() => props.selection ?? 'none')\n\n// Track last-clicked row index for Shift+Click range selection\nconst lastClickedRowIndex = ref<number | null>(null)\n\nfunction handleRowClick(rowIndex: number, event: MouseEvent) {\n if (props.selection === 'none') return\n const rows = table.getRowModel().rows\n if (props.selection === 'multiple' && event.shiftKey && lastClickedRowIndex.value !== null) {\n const [start, end] = [lastClickedRowIndex.value, rowIndex].sort((a, b) => a - b)\n const next: RowSelectionState = { ...internalRowSelection.value }\n for (let i = start; i <= end; i++) {\n const r = rows[i]\n if (r) next[r.id] = true\n }\n updateRowSelection(next)\n }\n lastClickedRowIndex.value = rowIndex\n}\n\n// --- Context provision -------------------------------------------------\nconst variantRef = computed(() => props.variant ?? 'primary')\nconst activeCell = keyboardNav.activeCell\n\nuseTableProvide({\n table,\n activeCell,\n selectionEnabled,\n selectionMode,\n variant: variantRef,\n handleRowClick,\n})\n\n// --- Slot class derivation -------------------------------------------\nconst slotFns = computed(() => tableVariants({ variant: variantRef.value }))\n\ndefineExpose({ table, keyboardNav, handleRowClick })\n</script>\n\n<template>\n <div :class=\"composeClassName(slotFns.base(), $attrs.class as string, props.classNames?.base)\">\n <!--\n scroll container: when virtualized, needs a fixed height + overflow:auto\n so the virtualizer can measure the viewport. Consumers should override\n the inline height via a wrapping container or CSS for production use.\n -->\n <div\n ref=\"scrollContainerRef\"\n :class=\"composeClassName(slotFns.scrollContainer(), props.classNames?.scrollContainer)\"\n :style=\"useVirtual ? { height: '400px', overflow: 'auto' } : undefined\"\n >\n <table\n ref=\"rootRef\"\n role=\"grid\"\n :aria-label=\"ariaLabel\"\n :aria-rowcount=\"rowCount\"\n :aria-colcount=\"columnCount\"\n @keydown=\"keyboardNav.onKeydown\"\n >\n <TableHeader />\n <TableBody v-if=\"!useVirtual\">\n <template #cell=\"slotProps\">\n <slot\n name=\"cell\"\n v-bind=\"slotProps\"\n />\n </template>\n </TableBody>\n <TableVirtualBody\n v-else\n ref=\"virtualBodyRef\"\n :scroll-element=\"scrollContainerRef\"\n :estimated-row-height=\"estimatedRowHeight\"\n :overscan=\"virtualizerOverscan\"\n />\n <TableFooter v-if=\"$slots.footer\">\n <slot name=\"footer\" />\n </TableFooter>\n </table>\n </div>\n </div>\n</template>\n"],"mappings":""}
|
|
@@ -30,7 +30,8 @@ var Table_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
30
30
|
default: false
|
|
31
31
|
},
|
|
32
32
|
estimatedRowHeight: { default: 44 },
|
|
33
|
-
virtualizerOverscan: { default: 8 }
|
|
33
|
+
virtualizerOverscan: { default: 8 },
|
|
34
|
+
classNames: {}
|
|
34
35
|
},
|
|
35
36
|
emits: ["update:rowSelection"],
|
|
36
37
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
@@ -145,10 +146,10 @@ var Table_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
145
146
|
handleRowClick
|
|
146
147
|
});
|
|
147
148
|
return (_ctx, _cache) => {
|
|
148
|
-
return openBlock(), createElementBlock("div", { class: normalizeClass(unref(composeClassName)(slotFns.value.base(), _ctx.$attrs.class)) }, [createElementVNode("div", {
|
|
149
|
+
return openBlock(), createElementBlock("div", { class: normalizeClass(unref(composeClassName)(slotFns.value.base(), _ctx.$attrs.class, props.classNames?.base)) }, [createElementVNode("div", {
|
|
149
150
|
ref_key: "scrollContainerRef",
|
|
150
151
|
ref: scrollContainerRef,
|
|
151
|
-
class: normalizeClass(slotFns.value.scrollContainer()),
|
|
152
|
+
class: normalizeClass(unref(composeClassName)(slotFns.value.scrollContainer(), props.classNames?.scrollContainer)),
|
|
152
153
|
style: normalizeStyle(useVirtual.value ? {
|
|
153
154
|
height: "400px",
|
|
154
155
|
overflow: "auto"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots"],"sources":["../../../src/components/table/Table.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// Note: Vue 3.5 generic SFCs do not propagate generic type parameters across\n// component boundaries when used via JSX/mount() in tests. We use ColumnDef<any, any>\n// for props to avoid TS2322 errors while keeping internal TanStack reactivity correct.\nimport { computed, ref, watch, useTemplateRef, h } from 'vue'\nimport {\n useVueTable,\n getCoreRowModel,\n getSortedRowModel,\n type ColumnDef,\n type SortingState,\n type RowSelectionState,\n type Table as TableInstance,\n type RowData,\n type Row,\n} from '@tanstack/vue-table'\nimport { tableVariants, type TableVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useTableProvide } from './table.context'\nimport { useTableKeyboardNav } from './useTableKeyboardNav'\nimport TableHeader from './TableHeader.vue'\nimport TableBody from './TableBody.vue'\nimport TableVirtualBody from './TableVirtualBody.vue'\nimport TableFooter from './TableFooter.vue'\nimport TableCheckboxCell from './TableCheckboxCell.vue'\n\ntype SelectionMode = 'none' | 'single' | 'multiple'\n\nconst props = withDefaults(\n defineProps<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnDef<any, any>[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any[]\n variant?: TableVariants['variant']\n ariaLabel?: string\n /** Row selection mode. 'single' = radio-style; 'multiple' = checkbox + shift+click; 'none' = disabled */\n selection?: SelectionMode\n /** Controlled row selection state (Record<rowId, boolean>). Use v-model:rowSelection */\n rowSelection?: RowSelectionState\n /**\n * Opt-in row virtualization via @tanstack/vue-virtual.\n * - false (default): all rows render in a standard <tbody>\n * - true: always render via TableVirtualBody (only visible rows in DOM)\n * - number N: auto-enable virtualization when data.length > N\n */\n virtualRows?: boolean | number\n /** Estimated row height in px used by the virtualizer (default: 44) */\n estimatedRowHeight?: number\n /** Extra rows to render outside the visible viewport (default: 8) */\n virtualizerOverscan?: number\n }>(),\n {\n variant: 'primary',\n ariaLabel: undefined,\n selection: 'none',\n rowSelection: undefined,\n virtualRows: false,\n estimatedRowHeight: 44,\n virtualizerOverscan: 8,\n }\n)\n\nconst emit = defineEmits<{\n 'update:rowSelection': [value: RowSelectionState]\n}>()\n\n// --- Sorting state ----------------------------------------------------\nconst sorting = ref<SortingState>([])\n\n// --- Row selection state (controlled/uncontrolled) -------------------\nconst internalRowSelection = ref<RowSelectionState>(props.rowSelection ?? {})\nwatch(\n () => props.rowSelection,\n (next) => {\n if (next !== undefined) internalRowSelection.value = next\n },\n { deep: true }\n)\n\nfunction updateRowSelection(\n updater: RowSelectionState | ((old: RowSelectionState) => RowSelectionState)\n) {\n const next = typeof updater === 'function' ? updater(internalRowSelection.value) : updater\n internalRowSelection.value = next\n emit('update:rowSelection', next)\n}\n\n// --- Selection column injected at position 0 when enabled -----------\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst selectionColumn: ColumnDef<any, any> = {\n id: '__select__',\n size: 44,\n enableSorting: false,\n header: ({ table: t }) =>\n props.selection === 'multiple'\n ? h(TableCheckboxCell, { table: t as unknown as TableInstance<RowData> })\n : '',\n cell: ({ row: r }) => h(TableCheckboxCell, { row: r as unknown as Row<RowData> }),\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst effectiveColumns = computed<ColumnDef<any, any>[]>(() => {\n if (props.selection === 'none') return props.columns\n return [selectionColumn, ...props.columns]\n})\n\n// --- useVueTable instance ---------------------------------------------\n// Use getters so @tanstack/vue-table tracks prop reactivity.\nconst table = useVueTable({\n get data() {\n return props.data\n },\n get columns() {\n return effectiveColumns.value as ColumnDef<RowData, unknown>[]\n },\n state: {\n get sorting() {\n return sorting.value\n },\n get rowSelection() {\n return internalRowSelection.value\n },\n },\n onSortingChange: (updater) => {\n sorting.value = typeof updater === 'function' ? updater(sorting.value) : updater\n },\n onRowSelectionChange: updateRowSelection,\n get enableRowSelection() {\n return props.selection !== 'none'\n },\n get enableMultiRowSelection() {\n return props.selection === 'multiple'\n },\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n}) as unknown as TableInstance<RowData>\n\n// --- Virtualization ---------------------------------------------------\n/** Whether to use TableVirtualBody instead of TableBody */\nconst useVirtual = computed<boolean>(() => {\n if (props.virtualRows === false) return false\n if (props.virtualRows === true) return true\n if (typeof props.virtualRows === 'number') return props.data.length > props.virtualRows\n return false\n})\n\n// The scroll container wrapping the <table> — passed to the virtualizer\nconst scrollContainerRef = useTemplateRef<HTMLElement>('scrollContainerRef')\n\n// Ref to TableVirtualBody instance so keyboard nav can call scrollToIndex\nconst virtualBodyRef = ref<InstanceType<typeof TableVirtualBody> | null>(null)\n\n// --- Keyboard navigation ----------------------------------------------\nconst rootRef = useTemplateRef<HTMLElement>('rootRef')\n\nconst rowCount = computed(() => props.data.length)\nconst columnCount = computed(() => {\n const firstGroup = table.getHeaderGroups()[0]\n return firstGroup ? firstGroup.headers.length : 0\n})\n\nfunction getCellElement(rowIndex: number, columnIndex: number): HTMLElement | null {\n const root = rootRef.value\n if (!root) return null\n // In virtualized mode, scroll the row into view first so the DOM node exists.\n // The queueMicrotask in useTableKeyboardNav.move() gives Vue one tick to\n // flush the virtualizer's render before focus is attempted.\n if (useVirtual.value && virtualBodyRef.value) {\n virtualBodyRef.value.scrollToIndex(rowIndex)\n }\n return root.querySelector<HTMLElement>(\n `[data-row-index=\"${rowIndex}\"][data-col-index=\"${columnIndex}\"]`\n )\n}\n\nconst keyboardNav = useTableKeyboardNav({ rowCount, columnCount, getCellElement })\n\n// --- Selection context helpers ----------------------------------------\nconst selectionEnabled = computed(() => props.selection !== 'none')\nconst selectionMode = computed(() => props.selection ?? 'none')\n\n// Track last-clicked row index for Shift+Click range selection\nconst lastClickedRowIndex = ref<number | null>(null)\n\nfunction handleRowClick(rowIndex: number, event: MouseEvent) {\n if (props.selection === 'none') return\n const rows = table.getRowModel().rows\n if (props.selection === 'multiple' && event.shiftKey && lastClickedRowIndex.value !== null) {\n const [start, end] = [lastClickedRowIndex.value, rowIndex].sort((a, b) => a - b)\n const next: RowSelectionState = { ...internalRowSelection.value }\n for (let i = start; i <= end; i++) {\n const r = rows[i]\n if (r) next[r.id] = true\n }\n updateRowSelection(next)\n }\n lastClickedRowIndex.value = rowIndex\n}\n\n// --- Context provision -------------------------------------------------\nconst variantRef = computed(() => props.variant ?? 'primary')\nconst activeCell = keyboardNav.activeCell\n\nuseTableProvide({\n table,\n activeCell,\n selectionEnabled,\n selectionMode,\n variant: variantRef,\n handleRowClick,\n})\n\n// --- Slot class derivation -------------------------------------------\nconst slotFns = computed(() => tableVariants({ variant: variantRef.value }))\n\ndefineExpose({ table, keyboardNav, handleRowClick })\n</script>\n\n<template>\n <div :class=\"composeClassName(slotFns.base(), $attrs.class as string)\">\n <!--\n scroll container: when virtualized, needs a fixed height + overflow:auto\n so the virtualizer can measure the viewport. Consumers should override\n the inline height via a wrapping container or CSS for production use.\n -->\n <div\n ref=\"scrollContainerRef\"\n :class=\"slotFns.scrollContainer()\"\n :style=\"useVirtual ? { height: '400px', overflow: 'auto' } : undefined\"\n >\n <table\n ref=\"rootRef\"\n role=\"grid\"\n :aria-label=\"ariaLabel\"\n :aria-rowcount=\"rowCount\"\n :aria-colcount=\"columnCount\"\n @keydown=\"keyboardNav.onKeydown\"\n >\n <TableHeader />\n <TableBody v-if=\"!useVirtual\">\n <template #cell=\"slotProps\">\n <slot\n name=\"cell\"\n v-bind=\"slotProps\"\n />\n </template>\n </TableBody>\n <TableVirtualBody\n v-else\n ref=\"virtualBodyRef\"\n :scroll-element=\"scrollContainerRef\"\n :estimated-row-height=\"estimatedRowHeight\"\n :overscan=\"virtualizerOverscan\"\n />\n <TableFooter v-if=\"$slots.footer\">\n <slot name=\"footer\" />\n </TableFooter>\n </table>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Table.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots"],"sources":["../../../src/components/table/Table.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// Note: Vue 3.5 generic SFCs do not propagate generic type parameters across\n// component boundaries when used via JSX/mount() in tests. We use ColumnDef<any, any>\n// for props to avoid TS2322 errors while keeping internal TanStack reactivity correct.\nimport { computed, ref, watch, useTemplateRef, h } from 'vue'\nimport {\n useVueTable,\n getCoreRowModel,\n getSortedRowModel,\n type ColumnDef,\n type SortingState,\n type RowSelectionState,\n type Table as TableInstance,\n type RowData,\n type Row,\n} from '@tanstack/vue-table'\nimport { tableVariants, type TableVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useTableProvide } from './table.context'\nimport { useTableKeyboardNav } from './useTableKeyboardNav'\nimport TableHeader from './TableHeader.vue'\nimport TableBody from './TableBody.vue'\nimport TableVirtualBody from './TableVirtualBody.vue'\nimport TableFooter from './TableFooter.vue'\nimport TableCheckboxCell from './TableCheckboxCell.vue'\n\ntype SelectionMode = 'none' | 'single' | 'multiple'\n\nconst props = withDefaults(\n defineProps<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnDef<any, any>[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any[]\n variant?: TableVariants['variant']\n ariaLabel?: string\n /** Row selection mode. 'single' = radio-style; 'multiple' = checkbox + shift+click; 'none' = disabled */\n selection?: SelectionMode\n /** Controlled row selection state (Record<rowId, boolean>). Use v-model:rowSelection */\n rowSelection?: RowSelectionState\n /**\n * Opt-in row virtualization via @tanstack/vue-virtual.\n * - false (default): all rows render in a standard <tbody>\n * - true: always render via TableVirtualBody (only visible rows in DOM)\n * - number N: auto-enable virtualization when data.length > N\n */\n virtualRows?: boolean | number\n /** Estimated row height in px used by the virtualizer (default: 44) */\n estimatedRowHeight?: number\n /** Extra rows to render outside the visible viewport (default: 8) */\n virtualizerOverscan?: number\n /** Per-slot CSS class overrides */\n classNames?: Partial<{\n base: ClassValue\n scrollContainer: ClassValue\n }>\n }>(),\n {\n variant: 'primary',\n ariaLabel: undefined,\n selection: 'none',\n rowSelection: undefined,\n virtualRows: false,\n estimatedRowHeight: 44,\n virtualizerOverscan: 8,\n }\n)\n\nconst emit = defineEmits<{\n 'update:rowSelection': [value: RowSelectionState]\n}>()\n\n// --- Sorting state ----------------------------------------------------\nconst sorting = ref<SortingState>([])\n\n// --- Row selection state (controlled/uncontrolled) -------------------\nconst internalRowSelection = ref<RowSelectionState>(props.rowSelection ?? {})\nwatch(\n () => props.rowSelection,\n (next) => {\n if (next !== undefined) internalRowSelection.value = next\n },\n { deep: true }\n)\n\nfunction updateRowSelection(\n updater: RowSelectionState | ((old: RowSelectionState) => RowSelectionState)\n) {\n const next = typeof updater === 'function' ? updater(internalRowSelection.value) : updater\n internalRowSelection.value = next\n emit('update:rowSelection', next)\n}\n\n// --- Selection column injected at position 0 when enabled -----------\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst selectionColumn: ColumnDef<any, any> = {\n id: '__select__',\n size: 44,\n enableSorting: false,\n header: ({ table: t }) =>\n props.selection === 'multiple'\n ? h(TableCheckboxCell, { table: t as unknown as TableInstance<RowData> })\n : '',\n cell: ({ row: r }) => h(TableCheckboxCell, { row: r as unknown as Row<RowData> }),\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst effectiveColumns = computed<ColumnDef<any, any>[]>(() => {\n if (props.selection === 'none') return props.columns\n return [selectionColumn, ...props.columns]\n})\n\n// --- useVueTable instance ---------------------------------------------\n// Use getters so @tanstack/vue-table tracks prop reactivity.\nconst table = useVueTable({\n get data() {\n return props.data\n },\n get columns() {\n return effectiveColumns.value as ColumnDef<RowData, unknown>[]\n },\n state: {\n get sorting() {\n return sorting.value\n },\n get rowSelection() {\n return internalRowSelection.value\n },\n },\n onSortingChange: (updater) => {\n sorting.value = typeof updater === 'function' ? updater(sorting.value) : updater\n },\n onRowSelectionChange: updateRowSelection,\n get enableRowSelection() {\n return props.selection !== 'none'\n },\n get enableMultiRowSelection() {\n return props.selection === 'multiple'\n },\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n}) as unknown as TableInstance<RowData>\n\n// --- Virtualization ---------------------------------------------------\n/** Whether to use TableVirtualBody instead of TableBody */\nconst useVirtual = computed<boolean>(() => {\n if (props.virtualRows === false) return false\n if (props.virtualRows === true) return true\n if (typeof props.virtualRows === 'number') return props.data.length > props.virtualRows\n return false\n})\n\n// The scroll container wrapping the <table> — passed to the virtualizer\nconst scrollContainerRef = useTemplateRef<HTMLElement>('scrollContainerRef')\n\n// Ref to TableVirtualBody instance so keyboard nav can call scrollToIndex\nconst virtualBodyRef = ref<InstanceType<typeof TableVirtualBody> | null>(null)\n\n// --- Keyboard navigation ----------------------------------------------\nconst rootRef = useTemplateRef<HTMLElement>('rootRef')\n\nconst rowCount = computed(() => props.data.length)\nconst columnCount = computed(() => {\n const firstGroup = table.getHeaderGroups()[0]\n return firstGroup ? firstGroup.headers.length : 0\n})\n\nfunction getCellElement(rowIndex: number, columnIndex: number): HTMLElement | null {\n const root = rootRef.value\n if (!root) return null\n // In virtualized mode, scroll the row into view first so the DOM node exists.\n // The queueMicrotask in useTableKeyboardNav.move() gives Vue one tick to\n // flush the virtualizer's render before focus is attempted.\n if (useVirtual.value && virtualBodyRef.value) {\n virtualBodyRef.value.scrollToIndex(rowIndex)\n }\n return root.querySelector<HTMLElement>(\n `[data-row-index=\"${rowIndex}\"][data-col-index=\"${columnIndex}\"]`\n )\n}\n\nconst keyboardNav = useTableKeyboardNav({ rowCount, columnCount, getCellElement })\n\n// --- Selection context helpers ----------------------------------------\nconst selectionEnabled = computed(() => props.selection !== 'none')\nconst selectionMode = computed(() => props.selection ?? 'none')\n\n// Track last-clicked row index for Shift+Click range selection\nconst lastClickedRowIndex = ref<number | null>(null)\n\nfunction handleRowClick(rowIndex: number, event: MouseEvent) {\n if (props.selection === 'none') return\n const rows = table.getRowModel().rows\n if (props.selection === 'multiple' && event.shiftKey && lastClickedRowIndex.value !== null) {\n const [start, end] = [lastClickedRowIndex.value, rowIndex].sort((a, b) => a - b)\n const next: RowSelectionState = { ...internalRowSelection.value }\n for (let i = start; i <= end; i++) {\n const r = rows[i]\n if (r) next[r.id] = true\n }\n updateRowSelection(next)\n }\n lastClickedRowIndex.value = rowIndex\n}\n\n// --- Context provision -------------------------------------------------\nconst variantRef = computed(() => props.variant ?? 'primary')\nconst activeCell = keyboardNav.activeCell\n\nuseTableProvide({\n table,\n activeCell,\n selectionEnabled,\n selectionMode,\n variant: variantRef,\n handleRowClick,\n})\n\n// --- Slot class derivation -------------------------------------------\nconst slotFns = computed(() => tableVariants({ variant: variantRef.value }))\n\ndefineExpose({ table, keyboardNav, handleRowClick })\n</script>\n\n<template>\n <div :class=\"composeClassName(slotFns.base(), $attrs.class as string, props.classNames?.base)\">\n <!--\n scroll container: when virtualized, needs a fixed height + overflow:auto\n so the virtualizer can measure the viewport. Consumers should override\n the inline height via a wrapping container or CSS for production use.\n -->\n <div\n ref=\"scrollContainerRef\"\n :class=\"composeClassName(slotFns.scrollContainer(), props.classNames?.scrollContainer)\"\n :style=\"useVirtual ? { height: '400px', overflow: 'auto' } : undefined\"\n >\n <table\n ref=\"rootRef\"\n role=\"grid\"\n :aria-label=\"ariaLabel\"\n :aria-rowcount=\"rowCount\"\n :aria-colcount=\"columnCount\"\n @keydown=\"keyboardNav.onKeydown\"\n >\n <TableHeader />\n <TableBody v-if=\"!useVirtual\">\n <template #cell=\"slotProps\">\n <slot\n name=\"cell\"\n v-bind=\"slotProps\"\n />\n </template>\n </TableBody>\n <TableVirtualBody\n v-else\n ref=\"virtualBodyRef\"\n :scroll-element=\"scrollContainerRef\"\n :estimated-row-height=\"estimatedRowHeight\"\n :overscan=\"virtualizerOverscan\"\n />\n <TableFooter v-if=\"$slots.footer\">\n <slot name=\"footer\" />\n </TableFooter>\n </table>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableBody.js","names":[],"sources":["../../../src/components/table/TableBody.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { FlexRender, type Row, type RowData } from '@tanstack/vue-table'\nimport { tableVariants } from '@auronui/styles'\nimport { useTableInject } from './table.context'\n\nconst ctx = useTableInject()\nconst slotFns = computed(() => tableVariants({ variant: ctx.variant.value }))\n\nfunction onRowKeydown(row: Row<RowData>, event: KeyboardEvent) {\n // Space on a gridcell toggles row selection\n if (event.key !== ' ') return\n if (ctx.selectionMode.value === 'none') return\n // Do NOT handle Space when target is inside a checkbox element (it handles its own Space)\n const target = event.target as HTMLElement\n if (target.tagName === 'INPUT' || target.closest('[role=\"checkbox\"]')) return\n event.preventDefault()\n if (ctx.selectionMode.value === 'single') {\n // Single-select: clear all, select just this one\n ctx.table.setRowSelection({ [row.id]: true })\n } else {\n row.toggleSelected()\n }\n}\n</script>\n\n<template>\n <tbody :class=\"slotFns.body()\">\n <tr\n v-for=\"(row, rowIndex) in ctx.table.getRowModel().rows\"\n :key=\"row.id\"\n role=\"row\"\n :class=\"slotFns.row()\"\n :aria-rowindex=\"rowIndex + 1\"\n :aria-selected=\"ctx.selectionMode.value !== 'none' ? row.getIsSelected() : undefined\"\n :data-state=\"row.getIsSelected() ? 'checked' : undefined\"\n @click=\"(e: MouseEvent) => ctx.handleRowClick(rowIndex, e)\"\n @keydown=\"(e: KeyboardEvent) => onRowKeydown(row, e)\"\n >\n <td\n v-for=\"(cell, colIndex) in row.getVisibleCells()\"\n :key=\"cell.id\"\n role=\"gridcell\"\n :class=\"slotFns.cell()\"\n :data-row-index=\"rowIndex\"\n :data-col-index=\"colIndex\"\n :tabindex=\"ctx.activeCell.value && ctx.activeCell.value.rowIndex === rowIndex && ctx.activeCell.value.columnIndex === colIndex ? 0 : (ctx.activeCell.value === null && rowIndex === 0 && colIndex === 0 ? 0 : -1)\"\n >\n <slot\n name=\"cell\"\n :row=\"row\"\n :cell=\"cell\"\n :column=\"cell.column\"\n :value=\"cell.getValue()\"\n >\n <FlexRender\n :render=\"cell.column.columnDef.cell\"\n :props=\"cell.getContext()\"\n />\n </slot>\n </td>\n </tr>\n </tbody>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"TableBody.js","names":[],"sources":["../../../src/components/table/TableBody.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { FlexRender, type Row, type RowData } from '@tanstack/vue-table'\nimport { tableVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useTableInject } from './table.context'\n\ninterface Props {\n /**\n * Per-slot class overrides. Each key maps to a named slot in the anatomy;\n * the value is merged with the generated variant classes via `composeClassName`.\n *\n * @example\n * ```vue\n * <TableBody :class-names=\"{ row: 'bg-blue-50', cell: 'border-blue-200' }\" />\n * ```\n *\n * Available slots: `body`, `row`, `cell`.\n */\n classNames?: Partial<{\n body: ClassValue\n row: ClassValue\n cell: ClassValue\n }>\n}\n\nconst props = defineProps<Props>()\n\nconst ctx = useTableInject()\nconst slotFns = computed(() => tableVariants({ variant: ctx.variant.value }))\n\nfunction onRowKeydown(row: Row<RowData>, event: KeyboardEvent) {\n // Space on a gridcell toggles row selection\n if (event.key !== ' ') return\n if (ctx.selectionMode.value === 'none') return\n // Do NOT handle Space when target is inside a checkbox element (it handles its own Space)\n const target = event.target as HTMLElement\n if (target.tagName === 'INPUT' || target.closest('[role=\"checkbox\"]')) return\n event.preventDefault()\n if (ctx.selectionMode.value === 'single') {\n // Single-select: clear all, select just this one\n ctx.table.setRowSelection({ [row.id]: true })\n } else {\n row.toggleSelected()\n }\n}\n</script>\n\n<template>\n <tbody :class=\"composeClassName(slotFns.body(), props.classNames?.body)\">\n <tr\n v-for=\"(row, rowIndex) in ctx.table.getRowModel().rows\"\n :key=\"row.id\"\n role=\"row\"\n :class=\"composeClassName(slotFns.row(), props.classNames?.row)\"\n :aria-rowindex=\"rowIndex + 1\"\n :aria-selected=\"ctx.selectionMode.value !== 'none' ? row.getIsSelected() : undefined\"\n :data-state=\"row.getIsSelected() ? 'checked' : undefined\"\n @click=\"(e: MouseEvent) => ctx.handleRowClick(rowIndex, e)\"\n @keydown=\"(e: KeyboardEvent) => onRowKeydown(row, e)\"\n >\n <td\n v-for=\"(cell, colIndex) in row.getVisibleCells()\"\n :key=\"cell.id\"\n role=\"gridcell\"\n :class=\"composeClassName(slotFns.cell(), props.classNames?.cell)\"\n :data-row-index=\"rowIndex\"\n :data-col-index=\"colIndex\"\n :tabindex=\"ctx.activeCell.value && ctx.activeCell.value.rowIndex === rowIndex && ctx.activeCell.value.columnIndex === colIndex ? 0 : (ctx.activeCell.value === null && rowIndex === 0 && colIndex === 0 ? 0 : -1)\"\n >\n <slot\n name=\"cell\"\n :row=\"row\"\n :cell=\"cell\"\n :column=\"cell.column\"\n :value=\"cell.getValue()\"\n >\n <FlexRender\n :render=\"cell.column.columnDef.cell\"\n :props=\"cell.getContext()\"\n />\n </slot>\n </td>\n </tr>\n </tbody>\n</template>\n"],"mappings":""}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { composeClassName } from "../../utils/composeClassName.js";
|
|
1
2
|
import { FlexRender } from "../../node_modules/.pnpm/@tanstack_vue-table@8.21.3_vue@3.5.32_typescript@6.0.2_/node_modules/@tanstack/vue-table/build/lib/index.js";
|
|
2
3
|
import { useTableInject } from "./table.context.js";
|
|
3
4
|
import { Fragment, computed, createElementBlock, createVNode, defineComponent, normalizeClass, openBlock, renderList, renderSlot, unref } from "vue";
|
|
@@ -17,7 +18,9 @@ var _hoisted_2 = [
|
|
|
17
18
|
];
|
|
18
19
|
var TableBody_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
19
20
|
__name: "TableBody",
|
|
21
|
+
props: { classNames: {} },
|
|
20
22
|
setup(__props) {
|
|
23
|
+
const props = __props;
|
|
21
24
|
const ctx = useTableInject();
|
|
22
25
|
const slotFns = computed(() => tableVariants({ variant: ctx.variant.value }));
|
|
23
26
|
function onRowKeydown(row, event) {
|
|
@@ -30,11 +33,11 @@ var TableBody_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
30
33
|
else row.toggleSelected();
|
|
31
34
|
}
|
|
32
35
|
return (_ctx, _cache) => {
|
|
33
|
-
return openBlock(), createElementBlock("tbody", { class: normalizeClass(slotFns.value.body()) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(ctx).table.getRowModel().rows, (row, rowIndex) => {
|
|
36
|
+
return openBlock(), createElementBlock("tbody", { class: normalizeClass(unref(composeClassName)(slotFns.value.body(), props.classNames?.body)) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(ctx).table.getRowModel().rows, (row, rowIndex) => {
|
|
34
37
|
return openBlock(), createElementBlock("tr", {
|
|
35
38
|
key: row.id,
|
|
36
39
|
role: "row",
|
|
37
|
-
class: normalizeClass(slotFns.value.row()),
|
|
40
|
+
class: normalizeClass(unref(composeClassName)(slotFns.value.row(), props.classNames?.row)),
|
|
38
41
|
"aria-rowindex": rowIndex + 1,
|
|
39
42
|
"aria-selected": unref(ctx).selectionMode.value !== "none" ? row.getIsSelected() : void 0,
|
|
40
43
|
"data-state": row.getIsSelected() ? "checked" : void 0,
|
|
@@ -44,7 +47,7 @@ var TableBody_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
44
47
|
return openBlock(), createElementBlock("td", {
|
|
45
48
|
key: cell.id,
|
|
46
49
|
role: "gridcell",
|
|
47
|
-
class: normalizeClass(slotFns.value.cell()),
|
|
50
|
+
class: normalizeClass(unref(composeClassName)(slotFns.value.cell(), props.classNames?.cell)),
|
|
48
51
|
"data-row-index": rowIndex,
|
|
49
52
|
"data-col-index": colIndex,
|
|
50
53
|
tabindex: unref(ctx).activeCell.value && unref(ctx).activeCell.value.rowIndex === rowIndex && unref(ctx).activeCell.value.columnIndex === colIndex ? 0 : unref(ctx).activeCell.value === null && rowIndex === 0 && colIndex === 0 ? 0 : -1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableBody.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/table/TableBody.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { FlexRender, type Row, type RowData } from '@tanstack/vue-table'\nimport { tableVariants } from '@auronui/styles'\nimport { useTableInject } from './table.context'\n\nconst ctx = useTableInject()\nconst slotFns = computed(() => tableVariants({ variant: ctx.variant.value }))\n\nfunction onRowKeydown(row: Row<RowData>, event: KeyboardEvent) {\n // Space on a gridcell toggles row selection\n if (event.key !== ' ') return\n if (ctx.selectionMode.value === 'none') return\n // Do NOT handle Space when target is inside a checkbox element (it handles its own Space)\n const target = event.target as HTMLElement\n if (target.tagName === 'INPUT' || target.closest('[role=\"checkbox\"]')) return\n event.preventDefault()\n if (ctx.selectionMode.value === 'single') {\n // Single-select: clear all, select just this one\n ctx.table.setRowSelection({ [row.id]: true })\n } else {\n row.toggleSelected()\n }\n}\n</script>\n\n<template>\n <tbody :class=\"slotFns.body()\">\n <tr\n v-for=\"(row, rowIndex) in ctx.table.getRowModel().rows\"\n :key=\"row.id\"\n role=\"row\"\n :class=\"slotFns.row()\"\n :aria-rowindex=\"rowIndex + 1\"\n :aria-selected=\"ctx.selectionMode.value !== 'none' ? row.getIsSelected() : undefined\"\n :data-state=\"row.getIsSelected() ? 'checked' : undefined\"\n @click=\"(e: MouseEvent) => ctx.handleRowClick(rowIndex, e)\"\n @keydown=\"(e: KeyboardEvent) => onRowKeydown(row, e)\"\n >\n <td\n v-for=\"(cell, colIndex) in row.getVisibleCells()\"\n :key=\"cell.id\"\n role=\"gridcell\"\n :class=\"slotFns.cell()\"\n :data-row-index=\"rowIndex\"\n :data-col-index=\"colIndex\"\n :tabindex=\"ctx.activeCell.value && ctx.activeCell.value.rowIndex === rowIndex && ctx.activeCell.value.columnIndex === colIndex ? 0 : (ctx.activeCell.value === null && rowIndex === 0 && colIndex === 0 ? 0 : -1)\"\n >\n <slot\n name=\"cell\"\n :row=\"row\"\n :cell=\"cell\"\n :column=\"cell.column\"\n :value=\"cell.getValue()\"\n >\n <FlexRender\n :render=\"cell.column.columnDef.cell\"\n :props=\"cell.getContext()\"\n />\n </slot>\n </td>\n </tr>\n </tbody>\n</template>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableBody.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/table/TableBody.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { FlexRender, type Row, type RowData } from '@tanstack/vue-table'\nimport { tableVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useTableInject } from './table.context'\n\ninterface Props {\n /**\n * Per-slot class overrides. Each key maps to a named slot in the anatomy;\n * the value is merged with the generated variant classes via `composeClassName`.\n *\n * @example\n * ```vue\n * <TableBody :class-names=\"{ row: 'bg-blue-50', cell: 'border-blue-200' }\" />\n * ```\n *\n * Available slots: `body`, `row`, `cell`.\n */\n classNames?: Partial<{\n body: ClassValue\n row: ClassValue\n cell: ClassValue\n }>\n}\n\nconst props = defineProps<Props>()\n\nconst ctx = useTableInject()\nconst slotFns = computed(() => tableVariants({ variant: ctx.variant.value }))\n\nfunction onRowKeydown(row: Row<RowData>, event: KeyboardEvent) {\n // Space on a gridcell toggles row selection\n if (event.key !== ' ') return\n if (ctx.selectionMode.value === 'none') return\n // Do NOT handle Space when target is inside a checkbox element (it handles its own Space)\n const target = event.target as HTMLElement\n if (target.tagName === 'INPUT' || target.closest('[role=\"checkbox\"]')) return\n event.preventDefault()\n if (ctx.selectionMode.value === 'single') {\n // Single-select: clear all, select just this one\n ctx.table.setRowSelection({ [row.id]: true })\n } else {\n row.toggleSelected()\n }\n}\n</script>\n\n<template>\n <tbody :class=\"composeClassName(slotFns.body(), props.classNames?.body)\">\n <tr\n v-for=\"(row, rowIndex) in ctx.table.getRowModel().rows\"\n :key=\"row.id\"\n role=\"row\"\n :class=\"composeClassName(slotFns.row(), props.classNames?.row)\"\n :aria-rowindex=\"rowIndex + 1\"\n :aria-selected=\"ctx.selectionMode.value !== 'none' ? row.getIsSelected() : undefined\"\n :data-state=\"row.getIsSelected() ? 'checked' : undefined\"\n @click=\"(e: MouseEvent) => ctx.handleRowClick(rowIndex, e)\"\n @keydown=\"(e: KeyboardEvent) => onRowKeydown(row, e)\"\n >\n <td\n v-for=\"(cell, colIndex) in row.getVisibleCells()\"\n :key=\"cell.id\"\n role=\"gridcell\"\n :class=\"composeClassName(slotFns.cell(), props.classNames?.cell)\"\n :data-row-index=\"rowIndex\"\n :data-col-index=\"colIndex\"\n :tabindex=\"ctx.activeCell.value && ctx.activeCell.value.rowIndex === rowIndex && ctx.activeCell.value.columnIndex === colIndex ? 0 : (ctx.activeCell.value === null && rowIndex === 0 && colIndex === 0 ? 0 : -1)\"\n >\n <slot\n name=\"cell\"\n :row=\"row\"\n :cell=\"cell\"\n :column=\"cell.column\"\n :value=\"cell.getValue()\"\n >\n <FlexRender\n :render=\"cell.column.columnDef.cell\"\n :props=\"cell.getContext()\"\n />\n </slot>\n </td>\n </tr>\n </tbody>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EA0BA,MAAM,QAAQ;EAEd,MAAM,MAAM,gBAAe;EAC3B,MAAM,UAAU,eAAe,cAAc,EAAE,SAAS,IAAI,QAAQ,OAAO,CAAC,CAAA;EAE5E,SAAS,aAAa,KAAmB,OAAsB;AAE7D,OAAI,MAAM,QAAQ,IAAK;AACvB,OAAI,IAAI,cAAc,UAAU,OAAQ;GAExC,MAAM,SAAS,MAAM;AACrB,OAAI,OAAO,YAAY,WAAW,OAAO,QAAQ,sBAAoB,CAAE;AACvE,SAAM,gBAAe;AACrB,OAAI,IAAI,cAAc,UAAU,SAE9B,KAAI,MAAM,gBAAgB,GAAG,IAAI,KAAK,MAAM,CAAA;OAE5C,KAAI,gBAAe;;;uBAMrB,mBAmCQ,SAAA,EAnCA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,YAAY,KAAI,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EACpE,mBAiCK,UAAA,MAAA,WAhCuB,MAAA,IAAG,CAAC,MAAM,aAAW,CAAG,OAA1C,KAAK,aAAQ;wBADvB,mBAiCK,MAAA;KA/BF,KAAK,IAAI;KACV,MAAK;KACJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,KAAG,EAAI,MAAM,YAAY,IAAG,CAAA;KAC5D,iBAAe,WAAQ;KACvB,iBAAe,MAAA,IAAG,CAAC,cAAc,UAAK,SAAc,IAAI,eAAa,GAAK,KAAA;KAC1E,cAAY,IAAI,eAAa,GAAA,YAAiB,KAAA;KAC9C,UAAQ,MAAkB,MAAA,IAAG,CAAC,eAAe,UAAU,EAAC;KACxD,YAAU,MAAqB,aAAa,KAAK,EAAC;0BAEnD,mBAqBK,UAAA,MAAA,WApBwB,IAAI,iBAAe,GAAtC,MAAM,aAAQ;yBADxB,mBAqBK,MAAA;MAnBF,KAAK,KAAK;MACX,MAAK;MACJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,YAAY,KAAI,CAAA;MAC9D,kBAAgB;MAChB,kBAAgB;MAChB,UAAU,MAAA,IAAG,CAAC,WAAW,SAAS,MAAA,IAAG,CAAC,WAAW,MAAM,aAAa,YAAY,MAAA,IAAG,CAAC,WAAW,MAAM,gBAAgB,WAAQ,IAAQ,MAAA,IAAG,CAAC,WAAW,UAAK,QAAa,aAAQ,KAAU,aAAQ,IAAA,IAAA;SAEjM,WAWO,KAAA,QAAA,QAAA;MATC;MACC;MACN,QAAQ,KAAK;MACb,OAAO,KAAK,UAAQ;cAMhB,CAJL,YAGE,MAAA,WAAA,EAAA;MAFC,QAAQ,KAAK,OAAO,UAAU;MAC9B,OAAO,KAAK,YAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableCell.js","names":[],"sources":["../../../src/components/table/TableCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { tableVariants } from '@auronui/styles'\nimport { useTableInject } from './table.context'\n\
|
|
1
|
+
{"version":3,"file":"TableCell.js","names":[],"sources":["../../../src/components/table/TableCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { tableVariants } from '@auronui/styles'\nimport { useTableInject } from './table.context'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = defineProps<{\n rowIndex?: number\n columnIndex?: number\n /** Per-slot class name overrides merged via `composeClassName`. */\n classNames?: Partial<{\n cell: ClassValue\n }>\n}>()\n\nconst ctx = useTableInject()\nconst slotFns = computed(() => tableVariants({ variant: ctx.variant.value }))\n</script>\n\n<template>\n <td\n role=\"gridcell\"\n :class=\"composeClassName(slotFns.cell(), props.classNames?.cell)\"\n :data-row-index=\"rowIndex\"\n :data-col-index=\"columnIndex\"\n >\n <slot />\n </td>\n</template>\n"],"mappings":""}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { composeClassName } from "../../utils/composeClassName.js";
|
|
1
2
|
import { useTableInject } from "./table.context.js";
|
|
2
|
-
import { computed, createElementBlock, defineComponent, normalizeClass, openBlock, renderSlot } from "vue";
|
|
3
|
+
import { computed, createElementBlock, defineComponent, normalizeClass, openBlock, renderSlot, unref } from "vue";
|
|
3
4
|
import { tableVariants } from "@auronui/styles";
|
|
4
5
|
//#region src/components/table/TableCell.vue?vue&type=script&setup=true&lang.ts
|
|
5
6
|
var _hoisted_1 = ["data-row-index", "data-col-index"];
|
|
@@ -7,15 +8,17 @@ var TableCell_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
7
8
|
__name: "TableCell",
|
|
8
9
|
props: {
|
|
9
10
|
rowIndex: {},
|
|
10
|
-
columnIndex: {}
|
|
11
|
+
columnIndex: {},
|
|
12
|
+
classNames: {}
|
|
11
13
|
},
|
|
12
14
|
setup(__props) {
|
|
15
|
+
const props = __props;
|
|
13
16
|
const ctx = useTableInject();
|
|
14
17
|
const slotFns = computed(() => tableVariants({ variant: ctx.variant.value }));
|
|
15
18
|
return (_ctx, _cache) => {
|
|
16
19
|
return openBlock(), createElementBlock("td", {
|
|
17
20
|
role: "gridcell",
|
|
18
|
-
class: normalizeClass(slotFns.value.cell()),
|
|
21
|
+
class: normalizeClass(unref(composeClassName)(slotFns.value.cell(), props.classNames?.cell)),
|
|
19
22
|
"data-row-index": __props.rowIndex,
|
|
20
23
|
"data-col-index": __props.columnIndex
|
|
21
24
|
}, [renderSlot(_ctx.$slots, "default")], 10, _hoisted_1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableCell.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/table/TableCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { tableVariants } from '@auronui/styles'\nimport { useTableInject } from './table.context'\n\
|
|
1
|
+
{"version":3,"file":"TableCell.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/table/TableCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { tableVariants } from '@auronui/styles'\nimport { useTableInject } from './table.context'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = defineProps<{\n rowIndex?: number\n columnIndex?: number\n /** Per-slot class name overrides merged via `composeClassName`. */\n classNames?: Partial<{\n cell: ClassValue\n }>\n}>()\n\nconst ctx = useTableInject()\nconst slotFns = computed(() => tableVariants({ variant: ctx.variant.value }))\n</script>\n\n<template>\n <td\n role=\"gridcell\"\n :class=\"composeClassName(slotFns.cell(), props.classNames?.cell)\"\n :data-row-index=\"rowIndex\"\n :data-col-index=\"columnIndex\"\n >\n <slot />\n </td>\n</template>\n"],"mappings":";;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EASd,MAAM,MAAM,gBAAe;EAC3B,MAAM,UAAU,eAAe,cAAc,EAAE,SAAS,IAAI,QAAQ,OAAO,CAAC,CAAA;;uBAI1E,mBAOK,MAAA;IANH,MAAK;IACJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,YAAY,KAAI,CAAA;IAC9D,kBAAgB,QAAA;IAChB,kBAAgB,QAAA;OAEjB,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,IAAA,WAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableFooter.js","names":[],"sources":["../../../src/components/table/TableFooter.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { tableVariants } from '@auronui/styles'\nimport { useTableInject } from './table.context'\n\nconst ctx = useTableInject()\nconst slotFns = computed(() => tableVariants({ variant: ctx.variant.value }))\n</script>\n\n<template>\n <tfoot :class=\"slotFns.footer()\">\n <slot />\n </tfoot>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"TableFooter.js","names":[],"sources":["../../../src/components/table/TableFooter.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { tableVariants } from '@auronui/styles'\nimport { useTableInject } from './table.context'\nimport { composeClassName, type ClassValue } from '../../utils/composeClassName'\n\ninterface Props {\n /**\n * Override classes for specific slots.\n */\n classNames?: Partial<{\n footer: ClassValue\n }>\n}\n\nconst props = defineProps<Props>()\nconst ctx = useTableInject()\nconst slotFns = computed(() => tableVariants({ variant: ctx.variant.value }))\n\n</script>\n\n<template>\n <tfoot :class=\"composeClassName(slotFns.footer(), props.classNames?.footer)\">\n <slot />\n </tfoot>\n</template>\n"],"mappings":""}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
+
import { composeClassName } from "../../utils/composeClassName.js";
|
|
1
2
|
import { useTableInject } from "./table.context.js";
|
|
2
|
-
import { computed, createElementBlock, defineComponent, normalizeClass, openBlock, renderSlot } from "vue";
|
|
3
|
+
import { computed, createElementBlock, defineComponent, normalizeClass, openBlock, renderSlot, unref } from "vue";
|
|
3
4
|
import { tableVariants } from "@auronui/styles";
|
|
4
5
|
//#region src/components/table/TableFooter.vue?vue&type=script&setup=true&lang.ts
|
|
5
6
|
var TableFooter_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
6
7
|
__name: "TableFooter",
|
|
8
|
+
props: { classNames: {} },
|
|
7
9
|
setup(__props) {
|
|
10
|
+
const props = __props;
|
|
8
11
|
const ctx = useTableInject();
|
|
9
12
|
const slotFns = computed(() => tableVariants({ variant: ctx.variant.value }));
|
|
10
13
|
return (_ctx, _cache) => {
|
|
11
|
-
return openBlock(), createElementBlock("tfoot", { class: normalizeClass(slotFns.value.footer()) }, [renderSlot(_ctx.$slots, "default")], 2);
|
|
14
|
+
return openBlock(), createElementBlock("tfoot", { class: normalizeClass(unref(composeClassName)(slotFns.value.footer(), props.classNames?.footer)) }, [renderSlot(_ctx.$slots, "default")], 2);
|
|
12
15
|
};
|
|
13
16
|
}
|
|
14
17
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableFooter.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/table/TableFooter.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { tableVariants } from '@auronui/styles'\nimport { useTableInject } from './table.context'\n\nconst ctx = useTableInject()\nconst slotFns = computed(() => tableVariants({ variant: ctx.variant.value }))\n</script>\n\n<template>\n <tfoot :class=\"slotFns.footer()\">\n <slot />\n </tfoot>\n</template>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableFooter.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/table/TableFooter.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { tableVariants } from '@auronui/styles'\nimport { useTableInject } from './table.context'\nimport { composeClassName, type ClassValue } from '../../utils/composeClassName'\n\ninterface Props {\n /**\n * Override classes for specific slots.\n */\n classNames?: Partial<{\n footer: ClassValue\n }>\n}\n\nconst props = defineProps<Props>()\nconst ctx = useTableInject()\nconst slotFns = computed(() => tableVariants({ variant: ctx.variant.value }))\n\n</script>\n\n<template>\n <tfoot :class=\"composeClassName(slotFns.footer(), props.classNames?.footer)\">\n <slot />\n </tfoot>\n</template>\n"],"mappings":";;;;;;;;;EAeA,MAAM,QAAQ;EACd,MAAM,MAAM,gBAAe;EAC3B,MAAM,UAAU,eAAe,cAAc,EAAE,SAAS,IAAI,QAAQ,OAAO,CAAC,CAAA;;uBAK1E,mBAEQ,SAAA,EAFA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,QAAM,EAAI,MAAM,YAAY,OAAM,CAAA,EAAA,EAAA,CACxE,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeader.js","names":[],"sources":["../../../src/components/table/TableHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { FlexRender, type Header } from '@tanstack/vue-table'\nimport { tableVariants } from '@auronui/styles'\nimport { useTableInject } from './table.context'\n\nconst ctx = useTableInject()\nconst slotFns = computed(() => tableVariants({ variant: ctx.variant.value }))\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getAriaSort(header: Header<any, unknown>): 'ascending' | 'descending' | 'none' | undefined {\n if (!header.column.getCanSort()) return undefined\n const dir = header.column.getIsSorted()\n if (dir === 'asc') return 'ascending'\n if (dir === 'desc') return 'descending'\n return 'none'\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction onHeaderActivate(header: Header<any, unknown>, event: MouseEvent | KeyboardEvent) {\n if (!header.column.getCanSort()) return\n const handler = header.column.getToggleSortingHandler()\n if (handler) handler(event)\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction onHeaderKeydown(header: Header<any, unknown>, event: KeyboardEvent) {\n if (event.key !== ' ' && event.key !== 'Enter') return\n if (!header.column.getCanSort()) return\n event.preventDefault()\n onHeaderActivate(header, event)\n}\n</script>\n\n<template>\n <thead :class=\"slotFns.header()\">\n <tr\n v-for=\"headerGroup in ctx.table.getHeaderGroups()\"\n :key=\"headerGroup.id\"\n role=\"row\"\n :class=\"slotFns.row()\"\n >\n <th\n v-for=\"(header, colIndex) in headerGroup.headers\"\n :key=\"header.id\"\n role=\"columnheader\"\n :class=\"slotFns.column()\"\n :data-col-index=\"colIndex\"\n :data-row-index=\"-1\"\n :aria-sort=\"getAriaSort(header)\"\n :data-allows-sorting=\"header.column.getCanSort() ? 'true' : undefined\"\n :tabindex=\"header.column.getCanSort() ? 0 : undefined\"\n @click=\"onHeaderActivate(header, $event)\"\n @keydown=\"onHeaderKeydown(header, $event)\"\n >\n <FlexRender\n v-if=\"!header.isPlaceholder\"\n :render=\"header.column.columnDef.header\"\n :props=\"header.getContext()\"\n />\n </th>\n </tr>\n </thead>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"TableHeader.js","names":[],"sources":["../../../src/components/table/TableHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { FlexRender, type Header } from '@tanstack/vue-table'\nimport { tableVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useTableInject } from './table.context'\n\ntype Props = {\n /**\n * Per-slot class overrides. Each key maps to a named slot in the anatomy;\n * the value is merged with the generated variant classes via `composeClassName`.\n */\n classNames?: Partial<{\n header: ClassValue\n row: ClassValue\n column: ClassValue\n }>\n}\n\nconst props = defineProps<Props>()\nconst ctx = useTableInject()\nconst slotFns = computed(() => tableVariants({ variant: ctx.variant.value }))\n\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getAriaSort(header: Header<any, unknown>): 'ascending' | 'descending' | 'none' | undefined {\n if (!header.column.getCanSort()) return undefined\n const dir = header.column.getIsSorted()\n if (dir === 'asc') return 'ascending'\n if (dir === 'desc') return 'descending'\n return 'none'\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction onHeaderActivate(header: Header<any, unknown>, event: MouseEvent | KeyboardEvent) {\n if (!header.column.getCanSort()) return\n const handler = header.column.getToggleSortingHandler()\n if (handler) handler(event)\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction onHeaderKeydown(header: Header<any, unknown>, event: KeyboardEvent) {\n if (event.key !== ' ' && event.key !== 'Enter') return\n if (!header.column.getCanSort()) return\n event.preventDefault()\n onHeaderActivate(header, event)\n}\n</script>\n\n<template>\n <thead :class=\"composeClassName(slotFns.header(), props.classNames?.header)\">\n <tr\n v-for=\"headerGroup in ctx.table.getHeaderGroups()\"\n :key=\"headerGroup.id\"\n role=\"row\"\n :class=\"composeClassName(slotFns.row(), props.classNames?.row)\"\n >\n <th\n v-for=\"(header, colIndex) in headerGroup.headers\"\n :key=\"header.id\"\n role=\"columnheader\"\n :class=\"composeClassName(slotFns.column(), props.classNames?.column)\"\n :data-col-index=\"colIndex\"\n :data-row-index=\"-1\"\n :aria-sort=\"getAriaSort(header)\"\n :data-allows-sorting=\"header.column.getCanSort() ? 'true' : undefined\"\n :tabindex=\"header.column.getCanSort() ? 0 : undefined\"\n @click=\"onHeaderActivate(header, $event)\"\n @keydown=\"onHeaderKeydown(header, $event)\"\n >\n <FlexRender\n v-if=\"!header.isPlaceholder\"\n :render=\"header.column.columnDef.header\"\n :props=\"header.getContext()\"\n />\n </th>\n </tr>\n </thead>\n</template>\n"],"mappings":""}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { composeClassName } from "../../utils/composeClassName.js";
|
|
1
2
|
import { FlexRender } from "../../node_modules/.pnpm/@tanstack_vue-table@8.21.3_vue@3.5.32_typescript@6.0.2_/node_modules/@tanstack/vue-table/build/lib/index.js";
|
|
2
3
|
import { useTableInject } from "./table.context.js";
|
|
3
4
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, defineComponent, normalizeClass, openBlock, renderList, unref } from "vue";
|
|
@@ -13,7 +14,9 @@ var _hoisted_1 = [
|
|
|
13
14
|
];
|
|
14
15
|
var TableHeader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
15
16
|
__name: "TableHeader",
|
|
17
|
+
props: { classNames: {} },
|
|
16
18
|
setup(__props) {
|
|
19
|
+
const props = __props;
|
|
17
20
|
const ctx = useTableInject();
|
|
18
21
|
const slotFns = computed(() => tableVariants({ variant: ctx.variant.value }));
|
|
19
22
|
function getAriaSort(header) {
|
|
@@ -35,16 +38,16 @@ var TableHeader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
35
38
|
onHeaderActivate(header, event);
|
|
36
39
|
}
|
|
37
40
|
return (_ctx, _cache) => {
|
|
38
|
-
return openBlock(), createElementBlock("thead", { class: normalizeClass(slotFns.value.header()) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(ctx).table.getHeaderGroups(), (headerGroup) => {
|
|
41
|
+
return openBlock(), createElementBlock("thead", { class: normalizeClass(unref(composeClassName)(slotFns.value.header(), props.classNames?.header)) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(ctx).table.getHeaderGroups(), (headerGroup) => {
|
|
39
42
|
return openBlock(), createElementBlock("tr", {
|
|
40
43
|
key: headerGroup.id,
|
|
41
44
|
role: "row",
|
|
42
|
-
class: normalizeClass(slotFns.value.row())
|
|
45
|
+
class: normalizeClass(unref(composeClassName)(slotFns.value.row(), props.classNames?.row))
|
|
43
46
|
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(headerGroup.headers, (header, colIndex) => {
|
|
44
47
|
return openBlock(), createElementBlock("th", {
|
|
45
48
|
key: header.id,
|
|
46
49
|
role: "columnheader",
|
|
47
|
-
class: normalizeClass(slotFns.value.column()),
|
|
50
|
+
class: normalizeClass(unref(composeClassName)(slotFns.value.column(), props.classNames?.column)),
|
|
48
51
|
"data-col-index": colIndex,
|
|
49
52
|
"data-row-index": -1,
|
|
50
53
|
"aria-sort": getAriaSort(header),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeader.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/table/TableHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { FlexRender, type Header } from '@tanstack/vue-table'\nimport { tableVariants } from '@auronui/styles'\nimport { useTableInject } from './table.context'\n\nconst ctx = useTableInject()\nconst slotFns = computed(() => tableVariants({ variant: ctx.variant.value }))\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getAriaSort(header: Header<any, unknown>): 'ascending' | 'descending' | 'none' | undefined {\n if (!header.column.getCanSort()) return undefined\n const dir = header.column.getIsSorted()\n if (dir === 'asc') return 'ascending'\n if (dir === 'desc') return 'descending'\n return 'none'\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction onHeaderActivate(header: Header<any, unknown>, event: MouseEvent | KeyboardEvent) {\n if (!header.column.getCanSort()) return\n const handler = header.column.getToggleSortingHandler()\n if (handler) handler(event)\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction onHeaderKeydown(header: Header<any, unknown>, event: KeyboardEvent) {\n if (event.key !== ' ' && event.key !== 'Enter') return\n if (!header.column.getCanSort()) return\n event.preventDefault()\n onHeaderActivate(header, event)\n}\n</script>\n\n<template>\n <thead :class=\"slotFns.header()\">\n <tr\n v-for=\"headerGroup in ctx.table.getHeaderGroups()\"\n :key=\"headerGroup.id\"\n role=\"row\"\n :class=\"slotFns.row()\"\n >\n <th\n v-for=\"(header, colIndex) in headerGroup.headers\"\n :key=\"header.id\"\n role=\"columnheader\"\n :class=\"slotFns.column()\"\n :data-col-index=\"colIndex\"\n :data-row-index=\"-1\"\n :aria-sort=\"getAriaSort(header)\"\n :data-allows-sorting=\"header.column.getCanSort() ? 'true' : undefined\"\n :tabindex=\"header.column.getCanSort() ? 0 : undefined\"\n @click=\"onHeaderActivate(header, $event)\"\n @keydown=\"onHeaderKeydown(header, $event)\"\n >\n <FlexRender\n v-if=\"!header.isPlaceholder\"\n :render=\"header.column.columnDef.header\"\n :props=\"header.getContext()\"\n />\n </th>\n </tr>\n </thead>\n</template>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableHeader.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/table/TableHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { FlexRender, type Header } from '@tanstack/vue-table'\nimport { tableVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useTableInject } from './table.context'\n\ntype Props = {\n /**\n * Per-slot class overrides. Each key maps to a named slot in the anatomy;\n * the value is merged with the generated variant classes via `composeClassName`.\n */\n classNames?: Partial<{\n header: ClassValue\n row: ClassValue\n column: ClassValue\n }>\n}\n\nconst props = defineProps<Props>()\nconst ctx = useTableInject()\nconst slotFns = computed(() => tableVariants({ variant: ctx.variant.value }))\n\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getAriaSort(header: Header<any, unknown>): 'ascending' | 'descending' | 'none' | undefined {\n if (!header.column.getCanSort()) return undefined\n const dir = header.column.getIsSorted()\n if (dir === 'asc') return 'ascending'\n if (dir === 'desc') return 'descending'\n return 'none'\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction onHeaderActivate(header: Header<any, unknown>, event: MouseEvent | KeyboardEvent) {\n if (!header.column.getCanSort()) return\n const handler = header.column.getToggleSortingHandler()\n if (handler) handler(event)\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction onHeaderKeydown(header: Header<any, unknown>, event: KeyboardEvent) {\n if (event.key !== ' ' && event.key !== 'Enter') return\n if (!header.column.getCanSort()) return\n event.preventDefault()\n onHeaderActivate(header, event)\n}\n</script>\n\n<template>\n <thead :class=\"composeClassName(slotFns.header(), props.classNames?.header)\">\n <tr\n v-for=\"headerGroup in ctx.table.getHeaderGroups()\"\n :key=\"headerGroup.id\"\n role=\"row\"\n :class=\"composeClassName(slotFns.row(), props.classNames?.row)\"\n >\n <th\n v-for=\"(header, colIndex) in headerGroup.headers\"\n :key=\"header.id\"\n role=\"columnheader\"\n :class=\"composeClassName(slotFns.column(), props.classNames?.column)\"\n :data-col-index=\"colIndex\"\n :data-row-index=\"-1\"\n :aria-sort=\"getAriaSort(header)\"\n :data-allows-sorting=\"header.column.getCanSort() ? 'true' : undefined\"\n :tabindex=\"header.column.getCanSort() ? 0 : undefined\"\n @click=\"onHeaderActivate(header, $event)\"\n @keydown=\"onHeaderKeydown(header, $event)\"\n >\n <FlexRender\n v-if=\"!header.isPlaceholder\"\n :render=\"header.column.columnDef.header\"\n :props=\"header.getContext()\"\n />\n </th>\n </tr>\n </thead>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAmBA,MAAM,QAAQ;EACd,MAAM,MAAM,gBAAe;EAC3B,MAAM,UAAU,eAAe,cAAc,EAAE,SAAS,IAAI,QAAQ,OAAO,CAAC,CAAA;EAI5E,SAAS,YAAY,QAA+E;AAClG,OAAI,CAAC,OAAO,OAAO,YAAY,CAAE,QAAO,KAAA;GACxC,MAAM,MAAM,OAAO,OAAO,aAAY;AACtC,OAAI,QAAQ,MAAO,QAAO;AAC1B,OAAI,QAAQ,OAAQ,QAAO;AAC3B,UAAO;;EAIT,SAAS,iBAAiB,QAA8B,OAAmC;AACzF,OAAI,CAAC,OAAO,OAAO,YAAY,CAAE;GACjC,MAAM,UAAU,OAAO,OAAO,yBAAwB;AACtD,OAAI,QAAS,SAAQ,MAAK;;EAI5B,SAAS,gBAAgB,QAA8B,OAAsB;AAC3E,OAAI,MAAM,QAAQ,OAAO,MAAM,QAAQ,QAAS;AAChD,OAAI,CAAC,OAAO,OAAO,YAAY,CAAE;AACjC,SAAM,gBAAe;AACrB,oBAAiB,QAAQ,MAAK;;;uBAK9B,mBA2BQ,SAAA,EA3BA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,QAAM,EAAI,MAAM,YAAY,OAAM,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EACxE,mBAyBK,UAAA,MAAA,WAxBmB,MAAA,IAAG,CAAC,MAAM,iBAAe,GAAxC,gBAAW;wBADpB,mBAyBK,MAAA;KAvBF,KAAK,YAAY;KAClB,MAAK;KACJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,KAAG,EAAI,MAAM,YAAY,IAAG,CAAA;0BAE7D,mBAkBK,UAAA,MAAA,WAjB0B,YAAY,UAAjC,QAAQ,aAAQ;yBAD1B,mBAkBK,MAAA;MAhBF,KAAK,OAAO;MACb,MAAK;MACJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,QAAM,EAAI,MAAM,YAAY,OAAM,CAAA;MAClE,kBAAgB;MAChB,kBAAgB;MAChB,aAAW,YAAY,OAAM;MAC7B,uBAAqB,OAAO,OAAO,YAAU,GAAA,SAAc,KAAA;MAC3D,UAAU,OAAO,OAAO,YAAU,GAAA,IAAS,KAAA;MAC3C,UAAK,WAAE,iBAAiB,QAAQ,OAAM;MACtC,YAAO,WAAE,gBAAgB,QAAQ,OAAM;UAG/B,OAAO,iBAAA,WAAA,EADhB,YAIE,MAAA,WAAA,EAAA;;MAFC,QAAQ,OAAO,OAAO,UAAU;MAChC,OAAO,OAAO,YAAU"}
|