@astryx-vue/core 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AlertDialog/index.js +1 -1
- package/dist/{AlertDialog-RAVA_cT1.js → AlertDialog-C2inDZWG.js} +5 -5
- package/dist/AppShell/index.js +1 -1
- package/dist/{AppShell-0wTvOo3H.js → AppShell-CumzH-8z.js} +3 -3
- package/dist/Avatar/index.js +1 -1
- package/dist/{Avatar-pPZ4dI_s.js → Avatar-BW0TE8t9.js} +47 -34
- package/dist/AvatarGroup/index.d.ts +1 -1
- package/dist/AvatarGroup/index.js +1 -1
- package/dist/{AvatarGroup-B--NQSB3.js → AvatarGroup-DLC_FFR5.js} +57 -13
- package/dist/Banner/index.d.ts +1 -1
- package/dist/Banner/index.js +1 -1
- package/dist/{Banner-GbGxrqQO.js → Banner-C5VAwo4D.js} +68 -34
- package/dist/Blockquote/index.js +1 -1
- package/dist/Blockquote-DRoKdcxZ.js +27 -0
- package/dist/BottomSheet/index.d.ts +1 -1
- package/dist/BottomSheet/index.js +2 -2
- package/dist/{BottomSheet-pt7m4CvC.js → BottomSheet-B4sc3F1S.js} +286 -140
- package/dist/{BottomSheet-JYMB_Ofl.js → BottomSheet-m54uCMJN.js} +20 -4
- package/dist/Breadcrumbs/index.d.ts +2 -2
- package/dist/Breadcrumbs/index.js +2 -2
- package/dist/Breadcrumbs-CTaz7Kh4.js +223 -0
- package/dist/Button/index.d.ts +1 -1
- package/dist/Button/index.js +1 -1
- package/dist/{Button-B6Hj_O_s.js → Button-ONOoHdkg.js} +25 -15
- package/dist/ButtonGroup/index.d.ts +1 -1
- package/dist/ButtonGroup/index.js +1 -1
- package/dist/ButtonGroup-DnkSZ9a5.js +87 -0
- package/dist/{ButtonTooltip-nWWrth8j.js → ButtonTooltip-CNKOQHYR.js} +7 -4
- package/dist/Calendar/index.d.ts +1 -1
- package/dist/Calendar/index.js +1 -1
- package/dist/{Calendar-B7vIowKq.js → Calendar-BAqzzQm2.js} +5 -5
- package/dist/Card/index.d.ts +2 -2
- package/dist/Carousel/index.js +1 -1
- package/dist/{Carousel-CA8zpD9v.js → Carousel-DXC22UWq.js} +4 -4
- package/dist/Chat/index.d.ts +1 -1
- package/dist/Chat/index.js +1 -1
- package/dist/{Chat-Bmna9EOA.js → Chat-BdJW6IX5.js} +147 -83
- package/dist/CheckboxIndicator/index.js +1 -1
- package/dist/{CheckboxIndicator-D37cm2Rh.js → CheckboxIndicator-fH4d-JE1.js} +9 -3
- package/dist/CheckboxInput/index.d.ts +1 -1
- package/dist/CheckboxInput/index.js +1 -1
- package/dist/{CheckboxInput-BS9J6edf.js → CheckboxInput-DJHCbwgC.js} +19 -11
- package/dist/CheckboxList/index.d.ts +1 -1
- package/dist/CheckboxList/index.js +1 -1
- package/dist/{CheckboxList-CX1i_jVP.js → CheckboxList-BdZIP4_J.js} +155 -38
- package/dist/Citation/index.js +1 -1
- package/dist/{Citation-Djgwa0ko.js → Citation-DbZn2vms.js} +8 -3
- package/dist/ClickableCard/index.d.ts +1 -1
- package/dist/ClickableCard/index.js +1 -1
- package/dist/{ClickableCard-DUsC-j03.js → ClickableCard-ChAfiw9T.js} +9 -6
- package/dist/Code/index.js +3 -3
- package/dist/{Code-XnPuGxey.js → Code-Bg7GBdxy.js} +2 -1
- package/dist/{CodeBlock-D0BFubut.js → CodeBlock-Caaflp7C.js} +3 -3
- package/dist/Collapsible/index.d.ts +1 -1
- package/dist/Collapsible/index.js +1 -1
- package/dist/{Collapsible-Cov3Pyq5.js → Collapsible-Bdj0WYpb.js} +13 -11
- package/dist/CommandPalette/index.d.ts +1 -1
- package/dist/CommandPalette/index.js +1 -1
- package/dist/{CommandPalette-YHsUNg3V.js → CommandPalette-C_MClfAg.js} +143 -63
- package/dist/ComplexSelector/index.d.ts +1 -1
- package/dist/ComplexSelector/index.js +1 -1
- package/dist/{ComplexSelector-DWLdKPGI.js → ComplexSelector-BeVQaqRf.js} +85 -20
- package/dist/ContextMenu/index.d.ts +2 -2
- package/dist/ContextMenu/index.js +2 -2
- package/dist/{ContextMenu-Bq9b3Ti5.js → ContextMenu-C6hPYvYz.js} +297 -179
- package/dist/DateInput/index.d.ts +1 -1
- package/dist/DateInput/index.js +1 -1
- package/dist/{DateInput-DT518j5E.js → DateInput-BjLdmYor.js} +567 -76
- package/dist/DateRangeInput/index.d.ts +1 -1
- package/dist/DateRangeInput/index.js +1 -1
- package/dist/{DateRangeInput-Bqi5tlIA.js → DateRangeInput-Br3wVEfD.js} +85 -20
- package/dist/DateTimeInput/index.d.ts +1 -1
- package/dist/DateTimeInput/index.js +1 -1
- package/dist/DateTimeInput-CAZBwoRe.js +562 -0
- package/dist/Dialog/index.d.ts +1 -1
- package/dist/Dialog/index.js +2 -2
- package/dist/{Dialog-BiOSKQso.js → Dialog-Dce4Y97V.js} +28 -11
- package/dist/{Dialog-FGHfDu5M.js → Dialog-fhyxB00e.js} +32 -5
- package/dist/Divider/index.d.ts +1 -1
- package/dist/Divider/index.js +1 -1
- package/dist/{Divider-BtwnL18I.js → Divider-mOZ6vIQw.js} +5 -1
- package/dist/DropdownMenu/index.d.ts +2 -2
- package/dist/DropdownMenu/index.js +3 -3
- package/dist/{DropdownMenu-CoOQVlRp.js → DropdownMenu-BdGmQVb1.js} +85 -57
- package/dist/{DropdownMenu-DEb2dSSP.js → DropdownMenu-BzQrNV9C.js} +479 -264
- package/dist/{DropdownMenuRadioItem.vue-CXEURBcq.d.ts → DropdownMenuRadioItem.vue-Qd-8Rg4Q.d.ts} +236 -230
- package/dist/EmptyState/index.js +1 -1
- package/dist/{EmptyState-C_GH7IV5.js → EmptyState-CmOQf2SH.js} +2 -2
- package/dist/Field/index.d.ts +4 -3
- package/dist/Field/index.js +4 -3
- package/dist/{Field-D5gUEGw4.js → Field--OEsLBfE.js} +4 -3
- package/dist/{FieldInfoTip-Ds-sW_jY.js → FieldInfoTip-gxsnfkZw.js} +3 -3
- package/dist/{FieldLabel-BNeXRuGH.js → FieldLabel-jxIiWgLw.js} +12 -7
- package/dist/FieldStatus/index.d.ts +1 -1
- package/dist/FileInput/index.d.ts +1 -1
- package/dist/FileInput/index.js +1 -1
- package/dist/{FileInput-BpdiO1V8.js → FileInput-B_pUxB0Y.js} +106 -29
- package/dist/FormLayout/index.d.ts +1 -1
- package/dist/FormLayout/index.js +1 -1
- package/dist/{FormLayout-D47FjiOq.js → FormLayout-B9dUB6Ps.js} +1 -1
- package/dist/Heading/index.d.ts +1 -1
- package/dist/Heading/index.js +1 -1
- package/dist/{Heading-BnwWEWkp.js → Heading-BzBunfN7.js} +1 -1
- package/dist/HoverCard/index.js +1 -1
- package/dist/{HoverCard-ycY50pRN.js → HoverCard-BpJhT0sn.js} +35 -22
- package/dist/Icon/index.d.ts +4 -4
- package/dist/Icon/index.js +1 -1
- package/dist/{Icon-bteSId7T.js → Icon-KDnUyY7f.js} +12 -20
- package/dist/IconButton/index.js +1 -1
- package/dist/{IconButton-DDNgNl7B.js → IconButton-DI-XBbtV.js} +1 -1
- package/dist/Indicator/index.d.ts +2 -2
- package/dist/Indicator/index.js +2 -1
- package/dist/InputClearButton-CwXPan8c.js +40 -0
- package/dist/InputGroup/index.d.ts +1 -1
- package/dist/InputGroup/index.js +2 -2
- package/dist/{InputGroup-CA03Smrs.js → InputGroup-DiiocoIW.js} +2 -2
- package/dist/InternationalizationProvider/index.d.ts +1 -1
- package/dist/InternationalizationProvider/index.js +1 -1
- package/dist/{InternationalizationProvider-DJay_w3B.js → InternationalizationProvider-kBapgKAQ.js} +5 -9
- package/dist/{Item-KhFKX9St.js → Item-DWMIjN8n.js} +34 -9
- package/dist/Kbd/index.js +1 -1
- package/dist/{Kbd-BB-Dw6zE.js → Kbd-CV3LO2Ge.js} +18 -2
- package/dist/LayerContentBoundary-CvsKxwwm.js +27 -0
- package/dist/LayerProvider/index.js +1 -1
- package/dist/{LayerProvider-D9NsQFzL.js → LayerProvider-B6zpMBWC.js} +15 -3
- package/dist/Layout/index.d.ts +1 -1
- package/dist/Layout/index.js +2 -2
- package/dist/{Layout-C6RHllr-.js → Layout-JJRCG7Mf.js} +1 -1
- package/dist/{LayoutPanel-DXOsaeQb.js → LayoutPanel-zM5vjrKS.js} +12 -8
- package/dist/Lightbox/index.js +1 -1
- package/dist/{Lightbox-DTF9EdTG.js → Lightbox-D8wyPgMK.js} +8 -6
- package/dist/Link/index.js +1 -1
- package/dist/{Link-BqHCtiyt.js → Link-DweIpOtN.js} +29 -12
- package/dist/List/index.d.ts +1 -1
- package/dist/List/index.js +2 -2
- package/dist/{ListItem-8RWT8XAG.js → ListItem-BQXMu1Tb.js} +1 -1
- package/dist/Markdown/index.d.ts +5 -2
- package/dist/Markdown/index.js +5 -2
- package/dist/Markdown/parser/index.d.ts +4 -0
- package/dist/Markdown/parser/index.js +3 -0
- package/dist/Markdown/plugin-protocol/index.d.ts +35 -0
- package/dist/Markdown/plugin-protocol/index.js +107 -0
- package/dist/Markdown/plugin-renderer/index.d.ts +31 -0
- package/dist/Markdown/plugin-renderer/index.js +42 -0
- package/dist/{Markdown-CvtN7HnF.js → Markdown-DhVfOvXk.js} +195 -484
- package/dist/MediaTheme-DlLqYhDy.js +433 -0
- package/dist/MetadataList/index.js +1 -1
- package/dist/{MetadataList-B-OelQlt.js → MetadataList-CEYceIlN.js} +15 -7
- package/dist/MobileNav/index.js +1 -1
- package/dist/{MobileNavToggle-DxGz0xKA.js → MobileNavToggle-pdoJFZHx.js} +52 -17
- package/dist/MoreMenu/index.d.ts +1 -1
- package/dist/MoreMenu/index.js +1 -1
- package/dist/{MoreMenu-Dlb7MLlW.js → MoreMenu-CFNqSRev.js} +72 -59
- package/dist/MultiSelector/index.d.ts +1 -1
- package/dist/MultiSelector/index.js +1 -1
- package/dist/MultiSelector-DuVatmq5.js +1456 -0
- package/dist/{NavDisclosure-C_fugrQ3.js → NavDisclosure-Bq9DTZLO.js} +29 -7
- package/dist/{NavHeadingSurface-B3yJspSN.js → NavHeadingSurface-C4v_MtkX.js} +29 -26
- package/dist/NavItem/index.d.ts +1 -1
- package/dist/NavItem/index.js +2 -2
- package/dist/{NavItem-BBIGSvDj.js → NavItem-BPb3yfgz.js} +17 -4
- package/dist/NavMenu/index.d.ts +1 -1
- package/dist/NavMenu/index.js +3 -3
- package/dist/{NavMenu-ThXguZAz.js → NavMenu-BYIDzjix.js} +42 -15
- package/dist/{NavMenuItem-BvJNsDFC.js → NavMenuItem-D3FO90GR.js} +14 -12
- package/dist/NumberInput/index.d.ts +1 -1
- package/dist/NumberInput/index.js +1 -1
- package/dist/NumberInput-B0vzOg3N.js +727 -0
- package/dist/Outline/index.d.ts +2 -2
- package/dist/Outline/index.js +2 -2
- package/dist/{Outline-755h-lMP.js → Outline-CfGv2F1o.js} +91 -6
- package/dist/OverflowList/index.d.ts +2 -2
- package/dist/OverflowList/index.js +1 -1
- package/dist/{OverflowList-NmrSMbxb.js → OverflowList-BgRLZ3dh.js} +23 -6
- package/dist/Pagination/index.d.ts +1 -1
- package/dist/Pagination/index.js +1 -1
- package/dist/{Pagination-DqwNQFRp.js → Pagination-Bfe12018.js} +2 -2
- package/dist/PickerWheel-CSwUYfes.js +69 -0
- package/dist/Popover/index.d.ts +1 -1
- package/dist/Popover/index.js +1 -1
- package/dist/{Popover-DJf8POzL.js → Popover-78dFjTb9.js} +20 -15
- package/dist/PowerSearch/index.d.ts +1 -1
- package/dist/PowerSearch/index.js +1 -1
- package/dist/{PowerSearch-DvjiPqMZ.js → PowerSearch-BoAMdFaT.js} +774 -586
- package/dist/ProgressBar/index.d.ts +1 -1
- package/dist/ProgressBar/index.js +1 -1
- package/dist/{ProgressBar-CVLzdoBK.js → ProgressBar-VP4JS7vm.js} +10 -7
- package/dist/Radio/index.d.ts +1 -1
- package/dist/Radio/index.js +1 -1
- package/dist/{RadioGroup-Bfu6JSNV.js → RadioGroup-BIipql-L.js} +94 -26
- package/dist/RadioList/index.d.ts +1 -1
- package/dist/RadioList/index.js +1 -1
- package/dist/{RadioList-xY1cwLdZ.js → RadioList-GyhgBg4j.js} +57 -8
- package/dist/Resizable/index.d.ts +1 -1
- package/dist/Resizable/index.js +1 -1
- package/dist/{ResizeHandle-q4nD_586.js → ResizeHandle-TPlUCAHD.js} +103 -50
- package/dist/ScrollableArea/index.d.ts +1 -1
- package/dist/ScrollableArea/index.js +1 -1
- package/dist/{ScrollableArea-D4dCJv9I.js → ScrollableArea-0u6RWtGG.js} +1 -1
- package/dist/SegmentedControl/index.d.ts +1 -1
- package/dist/SegmentedControl/index.js +1 -1
- package/dist/{SegmentedControl-ChHmFrrC.js → SegmentedControl-D1wWGBZo.js} +11 -5
- package/dist/SelectableCard/index.d.ts +1 -1
- package/dist/SelectableCard/index.js +1 -1
- package/dist/{SelectableCard-Cku4dRzc.js → SelectableCard-BEqnhPaX.js} +16 -11
- package/dist/Selector/index.d.ts +1 -1
- package/dist/Selector/index.js +1 -1
- package/dist/Selector-CPISLzp7.js +1049 -0
- package/dist/SideNav/index.d.ts +1 -1
- package/dist/SideNav/index.js +1 -1
- package/dist/{SideNav-BF8mYDxl.js → SideNav-CN2QeAtY.js} +51 -37
- package/dist/Slider/index.d.ts +1 -1
- package/dist/Slider/index.js +1 -1
- package/dist/{Slider-DWobsPgm.js → Slider-pdC0jpHu.js} +172 -46
- package/dist/Spinner/index.js +1 -1
- package/dist/Spinner-DdVUadii.js +200 -0
- package/dist/Stack/index.d.ts +1 -1
- package/dist/Stack/index.js +2 -2
- package/dist/{Stack-CTsTFfar.js → Stack-Bb_h60t3.js} +1 -1
- package/dist/{Stack-kQlYbbL4.js → Stack-Bp-XN9J4.js} +12 -7
- package/dist/StatusDot/index.d.ts +1 -1
- package/dist/StatusDot/index.js +1 -1
- package/dist/{StatusDot-BPUhMOff.js → StatusDot-BS_ohXhd.js} +8 -4
- package/dist/Stepper/index.js +1 -1
- package/dist/{Stepper-CE8dHysu.js → Stepper-CyaSRSdu.js} +101 -79
- package/dist/Switch/index.d.ts +1 -1
- package/dist/Switch/index.js +1 -1
- package/dist/{Switch-DaVPRxvN.js → Switch-Z2Vfiiic.js} +38 -22
- package/dist/TabList/index.d.ts +2 -2
- package/dist/TabList/index.js +1 -1
- package/dist/{TabList-DIkK9sgK.js → TabList-DRqP0Hrv.js} +205 -63
- package/dist/Table/index.d.ts +3 -3
- package/dist/Table/index.js +1 -1
- package/dist/{Table-fecqnm7P.js → Table-BcrrylMX.js} +726 -452
- package/dist/Text/index.d.ts +1 -1
- package/dist/Text/index.js +1 -1
- package/dist/{Text-CV3LmscH.js → Text-CmTOgYXf.js} +1 -1
- package/dist/TextArea/index.d.ts +1 -1
- package/dist/TextArea/index.js +1 -1
- package/dist/{TextArea-Ab5Sw60T.js → TextArea-DA9CCG_J.js} +104 -50
- package/dist/TextInput/index.d.ts +1 -1
- package/dist/TextInput/index.js +1 -1
- package/dist/{TextInput-zFT1_qgI.js → TextInput-CI96einV.js} +71 -38
- package/dist/Theme/index.d.ts +3 -3
- package/dist/Theme/index.js +3 -2
- package/dist/Theme-BbDT8B_C.js +2125 -0
- package/dist/Thumbnail/index.js +1 -1
- package/dist/{Thumbnail-C3NnJUFG.js → Thumbnail-B2ZAY59J.js} +13 -10
- package/dist/{TimeField-CoHDGmsP.js → TimeField-CpAgja9D.js} +297 -40
- package/dist/TimeInput/index.d.ts +1 -1
- package/dist/TimeInput/index.js +1 -1
- package/dist/{TimeInput-D2k3Ux3p.js → TimeInput-Bw_lHS4M.js} +78 -9
- package/dist/Timer/index.d.ts +1 -1
- package/dist/Timer/index.js +1 -1
- package/dist/{Timer-avMQk5DN.js → Timer-CH7GsEVu.js} +1 -1
- package/dist/Timestamp/index.d.ts +1 -1
- package/dist/Timestamp/index.js +1 -1
- package/dist/{Timestamp-xpQKCk0d.js → Timestamp-BFNuoTZ0.js} +5 -5
- package/dist/Toast/index.d.ts +1 -1
- package/dist/Toast/index.js +1 -1
- package/dist/Toast-DwnPjx6j.js +685 -0
- package/dist/ToggleButton/index.d.ts +1 -1
- package/dist/ToggleButton/index.js +1 -1
- package/dist/{ToggleButton-B-C-Q7XP.js → ToggleButton-cLjh9W-x.js} +5 -4
- package/dist/Token/index.d.ts +1 -1
- package/dist/Token/index.js +1 -1
- package/dist/{Token-DsntTYhQ.js → Token-BfS4vi__.js} +32 -17
- package/dist/Tokenizer/index.d.ts +1 -1
- package/dist/Tokenizer/index.js +1 -1
- package/dist/{Tokenizer-B5C_qY7t.js → Tokenizer-Ci3E5bvP.js} +107 -23
- package/dist/Toolbar/index.d.ts +2 -2
- package/dist/Toolbar/index.js +1 -1
- package/dist/{Toolbar-BrgvvTCk.js → Toolbar-C0pMWL4S.js} +1 -1
- package/dist/Tooltip/index.d.ts +1 -1
- package/dist/Tooltip/index.js +1 -1
- package/dist/{Tooltip-C4Vaqd3G.js → Tooltip-sAM8i1eO.js} +23 -19
- package/dist/TopNav/index.d.ts +1 -1
- package/dist/TopNav/index.js +1 -1
- package/dist/{TopNav-Ciq0l1w7.js → TopNav-gW59zp1o.js} +16 -15
- package/dist/TreeList/index.d.ts +1 -1
- package/dist/TreeList/index.js +1 -1
- package/dist/{TreeList-BUz-KZJd.js → TreeList-DaoI7zaH.js} +124 -41
- package/dist/Typeahead/index.d.ts +1 -1
- package/dist/Typeahead/index.js +2 -2
- package/dist/{Typeahead-JP9RT87x.js → Typeahead-D4JjvjK4.js} +123 -26
- package/dist/{TypeaheadMenu-DBW6rHeO.js → TypeaheadMenu-BQlMrfqX.js} +141 -51
- package/dist/{announce-Cnio10Wk.js → announce-B210eJVf.js} +17 -2
- package/dist/characterReferences-BJ-jLhsR.js +65 -0
- package/dist/characters-rcDbGt71.d.ts +29 -0
- package/dist/characters-wTnzjkkR.js +58 -0
- package/dist/{colorMode-CBgdgDSn.js → colorMode-BxqfDP4P.js} +1 -4
- package/dist/composables/index.d.ts +5 -4
- package/dist/composables/index.js +23 -18
- package/dist/{composables-CbKx9C1Y.js → composables-Bc02zKAO.js} +167 -197
- package/dist/context-B6UElI5X.js +5 -0
- package/dist/{context-Cfjh8te1.js → context-Cfml4jaK.js} +5 -3
- package/dist/{context-iABt_ueM.js → context-DWfi56sq.js} +451 -122
- package/dist/context-IvbU9c3T.js +8 -0
- package/dist/context-pjBxaMSh.js +28 -0
- package/dist/fieldParts--SyRZVQG.js +44 -0
- package/dist/fieldParts-LXpQMKE8.d.ts +27 -0
- package/dist/{focus-CpficIgf.js → focus-l8jVTcqd.js} +1 -1
- package/dist/hoverIntent-DMHGb85c.js +115 -0
- package/dist/{index-Cde5JvtX.d.ts → index-B-nESNam.d.ts} +8 -7
- package/dist/{index-CsNi1I8j.d.ts → index-B08-Uxhv.d.ts} +4 -2
- package/dist/{index-Cn-sSds-.d.ts → index-B56j4eI2.d.ts} +24 -1
- package/dist/{index-BkjSF265.d.ts → index-BEZ4ezJk.d.ts} +3 -3
- package/dist/{index-DeQwYJbg.d.ts → index-BNaRK-s5.d.ts} +10 -1
- package/dist/{index-0QGtSf3r.d.ts → index-BO9TY87G.d.ts} +3 -2
- package/dist/{index-IBAInumL.d.ts → index-BQEJj72c.d.ts} +23 -10
- package/dist/{index-D97pQbua.d.ts → index-BV2D2x_u.d.ts} +1 -1
- package/dist/{index-Crp3NFLW.d.ts → index-BZKgbyN9.d.ts} +1 -1
- package/dist/index-BkUkm6Al.d.ts +11 -0
- package/dist/{index-ClNU2Th8.d.ts → index-Bn-v89Vt.d.ts} +10 -6
- package/dist/{index-Bu8NA2SD.d.ts → index-BnEhvmdR.d.ts} +16 -7
- package/dist/index-Bo-ofFyg.d.ts +166 -0
- package/dist/{index-i0tNFWfz.d.ts → index-BqhgeAT4.d.ts} +2 -0
- package/dist/{index-DWh2WC8W.d.ts → index-C4Cjz6OK.d.ts} +2 -2
- package/dist/{index-B7yhzGUT.d.ts → index-C7sam-SB.d.ts} +2 -2
- package/dist/{index-BrJzFA5X.d.ts → index-C90l2rH1.d.ts} +1 -1
- package/dist/{index-vP0EtrJJ.d.ts → index-C9gAlDt_.d.ts} +6 -3
- package/dist/{index-xrzJC4wm.d.ts → index-CJ6ajsUC.d.ts} +1 -1
- package/dist/{index-B9e52paP.d.ts → index-CK-Dbh0f.d.ts} +1 -1
- package/dist/index-CKUfpmFL.d.ts +375 -0
- package/dist/{index-DXpSFlPG.d.ts → index-CKgBTAzC.d.ts} +4 -4
- package/dist/{index-gW0HW02U.d.ts → index-COxy6LEW.d.ts} +1 -1
- package/dist/{index-B4OOtNP8.d.ts → index-CPtDjmcX.d.ts} +3 -3
- package/dist/{index-12QYAbiz.d.ts → index-CRrSHbok.d.ts} +3 -2
- package/dist/{index-DG52Bg0W.d.ts → index-CTf3SK0b.d.ts} +6 -0
- package/dist/{index-BVKivP59.d.ts → index-CTjkJP4x.d.ts} +32 -3
- package/dist/{index-COgrQZIL.d.ts → index-CdvmnNMH.d.ts} +1 -1
- package/dist/{index-GI9xIV9l.d.ts → index-CikMzeab.d.ts} +2 -2
- package/dist/{index-DUaLJO7l.d.ts → index-CpNlPLBF.d.ts} +172 -126
- package/dist/{index-yT1yiiww.d.ts → index-Cs1xsHKi.d.ts} +24 -12
- package/dist/{index-Cyb9Du5Z.d.ts → index-CtTGt6Dv.d.ts} +1 -1
- package/dist/{index-Byar3h1e.d.ts → index-D05JGsT3.d.ts} +6 -3
- package/dist/{index-B3Fomy15.d.ts → index-D0_HsuC3.d.ts} +3 -3
- package/dist/{index-BgT6mH3U.d.ts → index-D7ShT2c-.d.ts} +1 -1
- package/dist/{index-CkKPMIeX.d.ts → index-D7XRtUTY.d.ts} +9 -0
- package/dist/{index-TntQsADQ.d.ts → index-DEm3kRBO.d.ts} +4 -3
- package/dist/{index-C2nbK2AA.d.ts → index-DLAG3m9W.d.ts} +13 -3
- package/dist/{index-DVmgNb78.d.ts → index-DRJZ-v1E.d.ts} +4 -4
- package/dist/{index-CL1T2j4y.d.ts → index-DY8Wph-A.d.ts} +3 -3
- package/dist/{index-B1WJxt-n.d.ts → index-DfC05uKG.d.ts} +17 -7
- package/dist/{index-C5e-7Obr.d.ts → index-Dj1_1t3j.d.ts} +19 -6
- package/dist/{index-D41_xqjs.d.ts → index-Dr4b_oji.d.ts} +20 -13
- package/dist/{index-CqE4Bf3Q.d.ts → index-Ds201-d2.d.ts} +16 -2
- package/dist/{index-DIXAzTKL.d.ts → index-DxxudRgB.d.ts} +1 -1
- package/dist/{index-B42oE_F-.d.ts → index-IfsSCj8J.d.ts} +18 -5
- package/dist/{index-XuAAcYiP.d.ts → index-f3d9cVtj.d.ts} +1 -1
- package/dist/{index-T2FOcOuI.d.ts → index-jOwU3YoR.d.ts} +400 -90
- package/dist/{index-CICeEoZV.d.ts → index-pNtfr-RW.d.ts} +1 -1
- package/dist/{index-BhpAUzUr.d.ts → index-unAZVFGz.d.ts} +2 -2
- package/dist/index.d.ts +80 -74
- package/dist/index.js +149 -134
- package/dist/inlineSize-BNe8wggI.js +66 -0
- package/dist/inputPresentation-BOyHkCDr.js +62 -0
- package/dist/interactionModality-ACpTMhak.js +44 -0
- package/dist/isApplePlatform-B1ju6F5B.js +27 -0
- package/dist/isRenderable-BnKHIqfd.js +21 -0
- package/dist/layerDepth-CNDh-IHb.js +181 -0
- package/dist/link-DuuA2eCL.js +30 -0
- package/dist/{loadCatalog-BGHKG_9N.d.ts → loadCatalog-DlLFZreI.d.ts} +281 -7
- package/dist/loadCatalog-eopw74qb.js +424 -0
- package/dist/locale/index.d.ts +2 -2
- package/dist/locale/index.js +4 -3
- package/dist/locale-CabGJlGp.js +343 -0
- package/dist/modalOutlet-CUOcrhIu.js +56 -0
- package/dist/optionAction-Cg7xQLUA.d.ts +6 -0
- package/dist/{power-search-DrDfcoL1.d.ts → power-search-gHLIYXs5.d.ts} +2 -0
- package/dist/protocol-DHxY0NI8.js +113 -0
- package/dist/protocol-RSeMzAN1.d.ts +238 -0
- package/dist/publicParser-B0MRoikr.d.ts +141 -0
- package/dist/publicParser-uHC_T0Fo.js +895 -0
- package/dist/resizableChannel-3vivrEcT.js +20 -0
- package/dist/safeUrl-CsvfcZ9m.js +54 -0
- package/dist/scopedProvide-C-Df7c15.js +30 -0
- package/dist/scrollKeyboardDelegation-D7cumnOl.js +238 -0
- package/dist/scrollLock-C3aT4-0z.js +102 -0
- package/dist/{searchResultMessage-hXXNOFJP.js → searchResultMessage-mCpJBvra.js} +5 -14
- package/dist/{semantic-CKH9XVqa.d.ts → semantic-BF_AjLvk.d.ts} +6 -3
- package/dist/slug-C65CUsf9.js +32 -0
- package/dist/syntaxContext-DmIfNNtb.js +4 -0
- package/dist/triggerVariant-BsL8jMHs.js +16 -0
- package/dist/{types-0Q_SJv_F.d.ts → types-Bb7OGivY.d.ts} +6 -1
- package/dist/{types-CwyibrRB.d.ts → types-C5GQ2KCK.d.ts} +23 -3
- package/dist/{types-gKsEkk2g.d.ts → types-CsqwQkf1.d.ts} +143 -10
- package/dist/upstreamMap-xr3gvREu.js +731 -0
- package/dist/{useAnchoredListbox-DwztMNjP.js → useAnchoredListbox-DGxxKHZb.js} +2 -2
- package/dist/{useAsyncSource-xpQovjV_.d.ts → useAsyncSource-aGzrvRkI.d.ts} +3 -0
- package/dist/{useClickableContainer-DyNpnSEa.js → useClickableContainer-CdGp_Cev.js} +1 -1
- package/dist/{useClipboard-BDfbEsWd.js → useClipboard-Dk8cS810.js} +1 -1
- package/dist/useHoverLayerDismiss-kYJ_NqL4.js +27 -0
- package/dist/{useIndicator-i1NORM7W.js → useIndicator-MZmfBWid.js} +5 -23
- package/dist/{useInputContainer-CpgDe2-4.js → useInputContainer-CLcYrby4.js} +1 -1
- package/dist/{useInputStatusIcon-DBOwxV4x.js → useInputStatusIcon-DAE7PExr.js} +1 -1
- package/dist/useLayerMountTarget-BmZyeKWE.js +156 -0
- package/dist/{useListFocus-D0iOJl39.js → useListFocus-ChxLg0b4.js} +3 -2
- package/dist/{useMenuDrillIn-DzKGkTho.js → useMenuDrillIn-DhUnPvKs.js} +6 -5
- package/dist/useMenuHover-Djreu23i.js +170 -0
- package/dist/useMenuPress-8foxY8z4.js +764 -0
- package/dist/{useMergedRefs-CfHHlCsn.js → useMergedRefs-Cb6_w93m.js} +24 -4
- package/dist/{useNumberField-4-dIGVed.js → useNumberField-Dk1BE3-K.js} +3 -3
- package/dist/useOptionActionGrid-CkJcuvaU.js +97 -0
- package/dist/{usePositionedLayer-Cru9_00b.js → usePositionedLayer-B7cvG-_v.js} +43 -49
- package/dist/usePressFeedback-BJCpjEpv.js +319 -0
- package/dist/{useResizable-DDwPpPe6.d.ts → useResizable-1MHPNaRD.d.ts} +19 -1
- package/dist/{useResizable-B3ahKLoZ.js → useResizable-I3BCiLSL.js} +72 -40
- package/dist/useResolvedLabelHidden-B2rlWiaI.js +30 -0
- package/dist/{useRestoreFocus-Djw9RUIf.js → useRestoreFocus-XEKs5-gp.js} +49 -7
- package/dist/useScrollOverflow-DuMoGXmm.js +67 -0
- package/dist/useScrollableArea-BE8b3qm7.js +222 -0
- package/dist/{useTimeValue-6ufHM15W.js → useTimeValue-BJd0xBhG.js} +4 -22
- package/dist/useTranslator-BmWt2BBt.js +35 -0
- package/dist/{useTypeahead-PAK8lMYz.js → useTypeahead-BvtflkRk.js} +4 -5
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +5 -0
- package/dist/{utils-D33VQDnk.js → utils-ClVseK2w.js} +29 -2
- package/dist/utils-z3Q6BGIJ.js +819 -0
- package/locales/SOURCE.json +1 -1
- package/package.json +18 -2
- package/reset.css +364 -1
- package/styles/avatar-group.css +9 -1
- package/styles/badge.css +8 -5
- package/styles/banner.css +124 -26
- package/styles/blockquote.css +1 -0
- package/styles/bordered-control.css +1 -1
- package/styles/bottom-sheet.css +74 -6
- package/styles/breadcrumbs.css +16 -2
- package/styles/button-group.css +3 -1
- package/styles/button.css +53 -11
- package/styles/card.css +1 -1
- package/styles/chat.css +16 -6
- package/styles/checkbox-input.css +10 -0
- package/styles/clickable-card.css +10 -3
- package/styles/collapsible.css +12 -5
- package/styles/command-palette.css +29 -14
- package/styles/complex-selector.css +22 -5
- package/styles/context-menu.css +3 -3
- package/styles/date-input.css +111 -1
- package/styles/dialog-header.css +4 -1
- package/styles/dialog.css +7 -0
- package/styles/dropdown-menu.css +12 -3
- package/styles/field.css +5 -0
- package/styles/form-layout.css +1 -0
- package/styles/heading.css +18 -8
- package/styles/icon.css +4 -0
- package/styles/kbd.css +1 -1
- package/styles/layer.css +72 -0
- package/styles/list.css +9 -2
- package/styles/metadata-list.css +1 -0
- package/styles/mobile-nav.css +4 -1
- package/styles/multi-selector.css +48 -1
- package/styles/nav-item.css +9 -2
- package/styles/nav-menu.css +12 -2
- package/styles/number-input.css +9 -1
- package/styles/overflow-list.css +1 -1
- package/styles/popover.css +2 -1
- package/styles/power-search.css +5 -3
- package/styles/pressable.css +63 -22
- package/styles/progress-bar.css +15 -3
- package/styles/radio.css +16 -0
- package/styles/resize-handle.css +42 -0
- package/styles/segmented-control.css +12 -4
- package/styles/selector.css +53 -1
- package/styles/side-nav.css +19 -0
- package/styles/slider.css +4 -3
- package/styles/spinner.css +48 -42
- package/styles/stepper.css +58 -4
- package/styles/switch.css +26 -0
- package/styles/tab-list.css +132 -3
- package/styles/table.css +88 -10
- package/styles/text-area.css +1 -1
- package/styles/text-input.css +1 -1
- package/styles/text.css +6 -6
- package/styles/thumbnail.css +11 -3
- package/styles/time-input.css +8 -0
- package/styles/toast.css +37 -3
- package/styles/token.css +2 -2
- package/styles/tokenizer.css +1 -1
- package/styles/toolbar.css +4 -1
- package/styles/tree-list.css +1 -1
- package/styles/typeahead.css +34 -1
- package/styles.css +1 -0
- package/dist/Blockquote-DFqBv_oJ.js +0 -18
- package/dist/Breadcrumbs-DIm4figq.js +0 -141
- package/dist/ButtonGroup-ySQWanDP.js +0 -125
- package/dist/DateTimeInput-A7m2O3bg.js +0 -268
- package/dist/MultiSelector-BtAUfQ3t.js +0 -990
- package/dist/NumberInput-AZ9x3oja.js +0 -473
- package/dist/Selector-DJ2BhUTV.js +0 -677
- package/dist/Spinner-9cYUCnDy.js +0 -84
- package/dist/Theme-CtaUWo4g.js +0 -1246
- package/dist/Toast-BuqIZV5z.js +0 -322
- package/dist/context-4PuqD1Ic.js +0 -4
- package/dist/context-D5-MwxnN.js +0 -4
- package/dist/index-BH9PzQ1F.d.ts +0 -87
- package/dist/link-C4_WogdF.js +0 -18
- package/dist/loadCatalog-CXKqEB9s.js +0 -877
- package/dist/locale-DgkZEMTn.js +0 -105
- package/dist/platform-B_9W_aHW.js +0 -33
- package/dist/scrollLock-BzIvIimL.js +0 -42
- package/dist/useMenuPress-D-FRNrBW.js +0 -573
- package/dist/useScrollableArea-DDk_CluT.js +0 -172
- /package/dist/{index-lgvUFSCO.d.ts → index-CryFtTT6.d.ts} +0 -0
|
@@ -1,20 +1,24 @@
|
|
|
1
|
-
import { t as _sfc_main$
|
|
2
|
-
import { t as _sfc_main$
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { t as _sfc_main$15 } from "./VisuallyHidden-C7NN3VEP.js";
|
|
2
|
+
import { t as _sfc_main$16 } from "./Button-ONOoHdkg.js";
|
|
3
|
+
import { n as useLayerTeleportTarget } from "./useLayerMountTarget-BmZyeKWE.js";
|
|
4
|
+
import { n as firstCharacter } from "./characters-wTnzjkkR.js";
|
|
5
|
+
import { s as useAstryxMessages } from "./context-DWfi56sq.js";
|
|
6
|
+
import { n as useCollator } from "./locale-CabGJlGp.js";
|
|
7
|
+
import { t as useScrollableArea } from "./useScrollableArea-BE8b3qm7.js";
|
|
8
|
+
import { t as _sfc_main$17 } from "./Tooltip-sAM8i1eO.js";
|
|
6
9
|
import { t as useScrollbars } from "./useScrollbars-C2NJ6Qwq.js";
|
|
7
|
-
import { t as _sfc_main$18 } from "./Icon-
|
|
8
|
-
import { t as _sfc_main$19 } from "./CheckboxInput-
|
|
9
|
-
import { t as _sfc_main$20 } from "./Popover-
|
|
10
|
-
import { t as _sfc_main$21 } from "./DateInput-
|
|
11
|
-
import { t as _sfc_main$22 } from "./MultiSelector-
|
|
12
|
-
import { t as _sfc_main$23 } from "./NumberInput-
|
|
13
|
-
import { t as _sfc_main$24 } from "./Pagination-
|
|
14
|
-
import { t as _sfc_main$25 } from "./Selector-
|
|
15
|
-
import { t as _sfc_main$26 } from "./TextInput-
|
|
16
|
-
import { t as _sfc_main$27 } from "./Toolbar-
|
|
17
|
-
import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, h, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, onScopeDispose, openBlock, ref, renderList, renderSlot, toDisplayString, toValue, unref,
|
|
10
|
+
import { t as _sfc_main$18 } from "./Icon-KDnUyY7f.js";
|
|
11
|
+
import { t as _sfc_main$19 } from "./CheckboxInput-DJHCbwgC.js";
|
|
12
|
+
import { t as _sfc_main$20 } from "./Popover-78dFjTb9.js";
|
|
13
|
+
import { t as _sfc_main$21 } from "./DateInput-BjLdmYor.js";
|
|
14
|
+
import { t as _sfc_main$22 } from "./MultiSelector-DuVatmq5.js";
|
|
15
|
+
import { t as _sfc_main$23 } from "./NumberInput-B0vzOg3N.js";
|
|
16
|
+
import { t as _sfc_main$24 } from "./Pagination-Bfe12018.js";
|
|
17
|
+
import { t as _sfc_main$25 } from "./Selector-CPISLzp7.js";
|
|
18
|
+
import { t as _sfc_main$26 } from "./TextInput-CI96einV.js";
|
|
19
|
+
import { t as _sfc_main$27 } from "./Toolbar-C0pMWL4S.js";
|
|
20
|
+
import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, h, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, onScopeDispose, openBlock, ref, renderList, renderSlot, shallowRef, toDisplayString, toValue, unref, useAttrs, watch, withCtx, withModifiers } from "vue";
|
|
21
|
+
import "../styles/layer.css";
|
|
18
22
|
import "../styles/table.css";
|
|
19
23
|
function proportional(value = 1, options) {
|
|
20
24
|
return {
|
|
@@ -75,6 +79,118 @@ function resolveColumnFloorWidths(columns) {
|
|
|
75
79
|
}
|
|
76
80
|
return widths;
|
|
77
81
|
}
|
|
82
|
+
const MAX_COMPATIBLE_FUNCTION = /^(?:calc|min|max|clamp|var)\(/i;
|
|
83
|
+
const PX_LENGTH = /^(\d+(?:\.\d+)?)px$/i;
|
|
84
|
+
const LENGTH_UNITS = /* @__PURE__ */ new Set([
|
|
85
|
+
"px",
|
|
86
|
+
"em",
|
|
87
|
+
"rem",
|
|
88
|
+
"lh",
|
|
89
|
+
"rlh",
|
|
90
|
+
"ex",
|
|
91
|
+
"rex",
|
|
92
|
+
"ch",
|
|
93
|
+
"rch",
|
|
94
|
+
"cap",
|
|
95
|
+
"rcap",
|
|
96
|
+
"ic",
|
|
97
|
+
"ric",
|
|
98
|
+
"vw",
|
|
99
|
+
"vh",
|
|
100
|
+
"vi",
|
|
101
|
+
"vb",
|
|
102
|
+
"vmin",
|
|
103
|
+
"vmax",
|
|
104
|
+
"svw",
|
|
105
|
+
"svh",
|
|
106
|
+
"svi",
|
|
107
|
+
"svb",
|
|
108
|
+
"svmin",
|
|
109
|
+
"svmax",
|
|
110
|
+
"lvw",
|
|
111
|
+
"lvh",
|
|
112
|
+
"lvi",
|
|
113
|
+
"lvb",
|
|
114
|
+
"lvmin",
|
|
115
|
+
"lvmax",
|
|
116
|
+
"dvw",
|
|
117
|
+
"dvh",
|
|
118
|
+
"dvi",
|
|
119
|
+
"dvb",
|
|
120
|
+
"dvmin",
|
|
121
|
+
"dvmax",
|
|
122
|
+
"cqw",
|
|
123
|
+
"cqh",
|
|
124
|
+
"cqi",
|
|
125
|
+
"cqb",
|
|
126
|
+
"cqmin",
|
|
127
|
+
"cqmax",
|
|
128
|
+
"cm",
|
|
129
|
+
"mm",
|
|
130
|
+
"q",
|
|
131
|
+
"in",
|
|
132
|
+
"pt",
|
|
133
|
+
"pc",
|
|
134
|
+
"%"
|
|
135
|
+
]);
|
|
136
|
+
function isZeroLength(value) {
|
|
137
|
+
const magnitude = value.trim().replace(/[a-z%]+$/i, "");
|
|
138
|
+
if (!/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)$/.test(magnitude)) return false;
|
|
139
|
+
return Number(magnitude) === 0;
|
|
140
|
+
}
|
|
141
|
+
function isCssMaxLength(value) {
|
|
142
|
+
if (value.endsWith("%")) return /^[+-]?(?:\d+(?:\.\d+)?|\.\d+)$/.test(value.slice(0, -1));
|
|
143
|
+
const unit = value.match(/[a-z]+$/i)?.[0]?.toLowerCase();
|
|
144
|
+
if (unit == null || !LENGTH_UNITS.has(unit)) return false;
|
|
145
|
+
return /^[+-]?(?:\d+(?:\.\d+)?|\.\d+)$/.test(value.slice(0, -unit.length));
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* 数据表的内联最小宽度:列宽下限和调用方写的 `minWidth` 里较大的那个。
|
|
149
|
+
*
|
|
150
|
+
* 数字、0 和 px 直接比较。其它长度、百分比、`calc()` / `var()` 交给 CSS `max()`。
|
|
151
|
+
* `auto`、`max-content` 这类关键字不能放进 `max()`,这时列宽下限胜出。
|
|
152
|
+
*/
|
|
153
|
+
function resolveTableMinWidth(consumer, floorPx) {
|
|
154
|
+
const floor = `${floorPx}px`;
|
|
155
|
+
if (consumer == null) return floor;
|
|
156
|
+
if (typeof consumer === "number") return `${Math.max(consumer, floorPx)}px`;
|
|
157
|
+
const value = consumer.trim();
|
|
158
|
+
if (value === "" || isZeroLength(value)) return floor;
|
|
159
|
+
const px = PX_LENGTH.exec(value);
|
|
160
|
+
if (px) return `${Math.max(Number(px[1]), floorPx)}px`;
|
|
161
|
+
if (isCssMaxLength(value) || MAX_COMPATIBLE_FUNCTION.test(value)) return `max(${value}, ${floor})`;
|
|
162
|
+
return floor;
|
|
163
|
+
}
|
|
164
|
+
/** 把样式里的 `minWidth` 拆出来,剩下的继续留给滚动容器。字符串样式拆不开,原样返回。 */
|
|
165
|
+
function splitStyleMinWidth(style) {
|
|
166
|
+
if (style == null || typeof style === "string") return {
|
|
167
|
+
minWidth: void 0,
|
|
168
|
+
style
|
|
169
|
+
};
|
|
170
|
+
if (Array.isArray(style)) {
|
|
171
|
+
let minWidth;
|
|
172
|
+
const next = style.map((item) => {
|
|
173
|
+
const split = splitStyleMinWidth(item);
|
|
174
|
+
if (split.minWidth != null) minWidth = split.minWidth;
|
|
175
|
+
return split.style;
|
|
176
|
+
});
|
|
177
|
+
return {
|
|
178
|
+
minWidth,
|
|
179
|
+
style: next
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
if (typeof style === "object") {
|
|
183
|
+
const { minWidth, ...rest } = style;
|
|
184
|
+
return {
|
|
185
|
+
minWidth,
|
|
186
|
+
style: rest
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
return {
|
|
190
|
+
minWidth: void 0,
|
|
191
|
+
style
|
|
192
|
+
};
|
|
193
|
+
}
|
|
78
194
|
function resolveColumnWidths(columns) {
|
|
79
195
|
const { totalProportion, pixelTotal, maxProportionalSpace } = planColumnSpace(columns);
|
|
80
196
|
const result = /* @__PURE__ */ new Map();
|
|
@@ -98,7 +214,8 @@ function resolveColumnWidths(columns) {
|
|
|
98
214
|
}
|
|
99
215
|
function capitalize(value) {
|
|
100
216
|
if (value.length === 0) return value;
|
|
101
|
-
|
|
217
|
+
const first = firstCharacter(value);
|
|
218
|
+
return first.toUpperCase() + value.slice(first.length);
|
|
102
219
|
}
|
|
103
220
|
function cellText(value) {
|
|
104
221
|
if (value == null) return "";
|
|
@@ -140,7 +257,7 @@ function generateColumns(data) {
|
|
|
140
257
|
};
|
|
141
258
|
});
|
|
142
259
|
}
|
|
143
|
-
function sortRows(rows, sort, columns = []) {
|
|
260
|
+
function sortRows(rows, sort, columns = [], collator) {
|
|
144
261
|
if (sort.length === 0) return [...rows];
|
|
145
262
|
const comparators = /* @__PURE__ */ new Map();
|
|
146
263
|
for (const column of columns) {
|
|
@@ -152,19 +269,21 @@ function sortRows(rows, sort, columns = []) {
|
|
|
152
269
|
copy.sort((a, b) => {
|
|
153
270
|
for (const entry of sort) {
|
|
154
271
|
const custom = comparators.get(entry.sortKey);
|
|
155
|
-
const result = custom ? custom(a, b) : compareValues(a[entry.sortKey], b[entry.sortKey]);
|
|
272
|
+
const result = custom ? custom(a, b) : compareValues(a[entry.sortKey], b[entry.sortKey], collator);
|
|
156
273
|
if (result !== 0) return entry.direction === "ascending" ? result : -result;
|
|
157
274
|
}
|
|
158
275
|
return 0;
|
|
159
276
|
});
|
|
160
277
|
return copy;
|
|
161
278
|
}
|
|
162
|
-
function compareValues(a, b) {
|
|
279
|
+
function compareValues(a, b, collator) {
|
|
163
280
|
if (a == null && b == null) return 0;
|
|
164
281
|
if (a == null) return 1;
|
|
165
282
|
if (b == null) return -1;
|
|
166
283
|
if (typeof a === "number" && typeof b === "number") return a - b;
|
|
167
|
-
|
|
284
|
+
const left = String(a);
|
|
285
|
+
const right = String(b);
|
|
286
|
+
return collator ? collator.compare(left, right) : left.localeCompare(right);
|
|
168
287
|
}
|
|
169
288
|
//#endregion
|
|
170
289
|
//#region src/Table/plugins/columnResize.ts
|
|
@@ -588,8 +707,8 @@ function useTablePagination(config) {
|
|
|
588
707
|
}
|
|
589
708
|
//#endregion
|
|
590
709
|
//#region src/Table/TableExpansionChevron.vue
|
|
591
|
-
const _hoisted_1$
|
|
592
|
-
const _sfc_main$
|
|
710
|
+
const _hoisted_1$11 = ["aria-expanded", "aria-label"];
|
|
711
|
+
const _sfc_main$14 = /*@__PURE__*/ defineComponent({
|
|
593
712
|
name: "AstryxTableExpansionChevron",
|
|
594
713
|
__name: "TableExpansionChevron",
|
|
595
714
|
props: { expanded: { type: Boolean } },
|
|
@@ -607,7 +726,7 @@ const _sfc_main$13 = /*@__PURE__*/ defineComponent({
|
|
|
607
726
|
}, [createElementVNode("span", { class: normalizeClass(["astryx-table__chevron-icon", { "is-expanded": __props.expanded }]) }, [createVNode(_sfc_main$18, {
|
|
608
727
|
icon: "chevronRight",
|
|
609
728
|
size: "xsm"
|
|
610
|
-
})], 2)], 8, _hoisted_1$
|
|
729
|
+
})], 2)], 8, _hoisted_1$11);
|
|
611
730
|
};
|
|
612
731
|
}
|
|
613
732
|
});
|
|
@@ -628,7 +747,7 @@ function useTableRowExpansion(config) {
|
|
|
628
747
|
const current = toValue(config);
|
|
629
748
|
if (!(current.getIsItemExpandable?.(item) ?? true)) return null;
|
|
630
749
|
const key = current.getRowKey(item);
|
|
631
|
-
return h(_sfc_main$
|
|
750
|
+
return h(_sfc_main$14, {
|
|
632
751
|
expanded: current.expandedKeys.has(key),
|
|
633
752
|
onToggle: () => current.onToggle(key)
|
|
634
753
|
});
|
|
@@ -871,9 +990,10 @@ function useTableSelection(config) {
|
|
|
871
990
|
//#endregion
|
|
872
991
|
//#region src/Table/plugins/sortable.ts
|
|
873
992
|
function useTableSortableState(options) {
|
|
874
|
-
const sort = ref(options.defaultSort ?? []);
|
|
993
|
+
const sort = ref(toValue(options.defaultSort) ?? []);
|
|
994
|
+
const collator = useCollator({ numeric: true });
|
|
875
995
|
return {
|
|
876
|
-
sortedData: computed(() => sortRows(toValue(options.data), sort.value, toValue(options.columns) ?? [])),
|
|
996
|
+
sortedData: computed(() => sortRows(toValue(options.data), sort.value, toValue(options.columns) ?? [], collator.value)),
|
|
877
997
|
sort,
|
|
878
998
|
sortConfig: {
|
|
879
999
|
get sort() {
|
|
@@ -1053,13 +1173,13 @@ function selectColumn() {
|
|
|
1053
1173
|
}
|
|
1054
1174
|
//#endregion
|
|
1055
1175
|
//#region src/Table/TableTreeCell.vue
|
|
1056
|
-
const _hoisted_1$
|
|
1057
|
-
const _hoisted_2$
|
|
1176
|
+
const _hoisted_1$10 = ["aria-expanded", "aria-label"];
|
|
1177
|
+
const _hoisted_2$3 = {
|
|
1058
1178
|
key: 1,
|
|
1059
1179
|
class: "astryx-table__tree-spacer"
|
|
1060
1180
|
};
|
|
1061
1181
|
const _hoisted_3$3 = { class: "astryx-table__tree-label" };
|
|
1062
|
-
const _sfc_main$
|
|
1182
|
+
const _sfc_main$13 = /*@__PURE__*/ defineComponent({
|
|
1063
1183
|
name: "AstryxTableTreeCell",
|
|
1064
1184
|
__name: "TableTreeCell",
|
|
1065
1185
|
props: {
|
|
@@ -1096,12 +1216,19 @@ const _sfc_main$12 = /*@__PURE__*/ defineComponent({
|
|
|
1096
1216
|
}, [createElementVNode("span", { class: normalizeClass(["astryx-table__chevron-icon", { "is-expanded": __props.expanded }]) }, [createVNode(_sfc_main$18, {
|
|
1097
1217
|
icon: "chevronRight",
|
|
1098
1218
|
size: "xsm"
|
|
1099
|
-
})], 2)], 8, _hoisted_1$
|
|
1219
|
+
})], 2)], 8, _hoisted_1$10)) : (openBlock(), createElementBlock("span", _hoisted_2$3)), createElementVNode("span", _hoisted_3$3, [renderSlot(_ctx.$slots, "default")])], 4);
|
|
1100
1220
|
};
|
|
1101
1221
|
}
|
|
1102
1222
|
});
|
|
1103
1223
|
//#endregion
|
|
1104
1224
|
//#region src/Table/plugins/tree.ts
|
|
1225
|
+
/**
|
|
1226
|
+
* config 本身和里面的字段都可能是 ref 或 getter,两层都要解开。
|
|
1227
|
+
* 只解数据类字段:`idKey` 这类回调字段是函数,`toValue` 会把它当 getter 调用掉。
|
|
1228
|
+
*/
|
|
1229
|
+
function fieldValue(value) {
|
|
1230
|
+
return value === void 0 ? void 0 : toValue(value);
|
|
1231
|
+
}
|
|
1105
1232
|
function itemId(item, idKey) {
|
|
1106
1233
|
return typeof idKey === "function" ? String(idKey(item)) : String(item[idKey]);
|
|
1107
1234
|
}
|
|
@@ -1125,7 +1252,7 @@ function flattenTree(config, expandedIds) {
|
|
|
1125
1252
|
expandablePath.delete(id);
|
|
1126
1253
|
}
|
|
1127
1254
|
};
|
|
1128
|
-
walkAll(config.data);
|
|
1255
|
+
walkAll(fieldValue(config.data) ?? []);
|
|
1129
1256
|
const path = /* @__PURE__ */ new Set();
|
|
1130
1257
|
const walk = (items, level) => {
|
|
1131
1258
|
const siblings = config.sortSiblings ? config.sortSiblings([...items]) : items;
|
|
@@ -1148,7 +1275,7 @@ function flattenTree(config, expandedIds) {
|
|
|
1148
1275
|
}
|
|
1149
1276
|
}
|
|
1150
1277
|
};
|
|
1151
|
-
walk(config.data, 0);
|
|
1278
|
+
walk(fieldValue(config.data) ?? [], 0);
|
|
1152
1279
|
return {
|
|
1153
1280
|
rows,
|
|
1154
1281
|
meta,
|
|
@@ -1185,7 +1312,7 @@ function useTableTreeData(config) {
|
|
|
1185
1312
|
const meta = live.getRowMeta(item);
|
|
1186
1313
|
const body = original?.(item, index) ?? cellText(item[column.key]);
|
|
1187
1314
|
if (meta == null) return body;
|
|
1188
|
-
return h(_sfc_main$
|
|
1315
|
+
return h(_sfc_main$13, {
|
|
1189
1316
|
level: meta.level,
|
|
1190
1317
|
hasChildren: meta.hasChildren,
|
|
1191
1318
|
expanded: meta.isExpanded,
|
|
@@ -1238,8 +1365,8 @@ function useTableTreeData(config) {
|
|
|
1238
1365
|
}
|
|
1239
1366
|
function useTableTreeState(config) {
|
|
1240
1367
|
const initial = toValue(config);
|
|
1241
|
-
const internal = ref(new Set(initial.defaultExpandedIds ?? []));
|
|
1242
|
-
const expandedIds = computed(() => toValue(config).expandedIds ?? internal.value);
|
|
1368
|
+
const internal = ref(new Set(fieldValue(initial.defaultExpandedIds) ?? []));
|
|
1369
|
+
const expandedIds = computed(() => fieldValue(toValue(config).expandedIds) ?? internal.value);
|
|
1243
1370
|
const flat = computed(() => flattenTree(toValue(config), expandedIds.value));
|
|
1244
1371
|
const isAllExpanded = computed(() => expansionState(flat.value.expandableIds, expandedIds.value));
|
|
1245
1372
|
function commit(next) {
|
|
@@ -1284,6 +1411,72 @@ function useTableTreeState(config) {
|
|
|
1284
1411
|
};
|
|
1285
1412
|
}
|
|
1286
1413
|
//#endregion
|
|
1414
|
+
//#region src/Table/rowPatch.ts
|
|
1415
|
+
/**
|
|
1416
|
+
* 把多个插件的行事件合成一个处理器,按插件顺序依次调用。
|
|
1417
|
+
* 每个事件单独合并,插件只给其中一个事件时其余事件不受影响。
|
|
1418
|
+
*/
|
|
1419
|
+
function mergeListeners(sources) {
|
|
1420
|
+
if (sources.length === 0) return void 0;
|
|
1421
|
+
const enters = sources.map((source) => source.onMouseenter).filter((handler) => handler != null);
|
|
1422
|
+
const leaves = sources.map((source) => source.onMouseleave).filter((handler) => handler != null);
|
|
1423
|
+
const focuses = sources.map((source) => source.onFocus).filter((handler) => handler != null);
|
|
1424
|
+
const blurs = sources.map((source) => source.onBlur).filter((handler) => handler != null);
|
|
1425
|
+
const merged = {};
|
|
1426
|
+
if (enters.length > 0) merged.onMouseenter = (event) => {
|
|
1427
|
+
for (const handler of enters) handler(event);
|
|
1428
|
+
};
|
|
1429
|
+
if (leaves.length > 0) merged.onMouseleave = (event) => {
|
|
1430
|
+
for (const handler of leaves) handler(event);
|
|
1431
|
+
};
|
|
1432
|
+
if (focuses.length > 0) merged.onFocus = (event) => {
|
|
1433
|
+
for (const handler of focuses) handler(event);
|
|
1434
|
+
};
|
|
1435
|
+
if (blurs.length > 0) merged.onBlur = (event) => {
|
|
1436
|
+
for (const handler of blurs) handler(event);
|
|
1437
|
+
};
|
|
1438
|
+
return merged;
|
|
1439
|
+
}
|
|
1440
|
+
/**
|
|
1441
|
+
* 收集所有插件对这一行的贡献。分组头、展开面板、是否参与选择这类二选一的字段以第一个给出
|
|
1442
|
+
* 结果的插件为准,类名、属性、事件、行元素回调、右键菜单则依次叠加。
|
|
1443
|
+
*/
|
|
1444
|
+
function mergeRowPatches(plugins, row, index, columnCount) {
|
|
1445
|
+
const classes = [];
|
|
1446
|
+
const clicks = [];
|
|
1447
|
+
const refs = [];
|
|
1448
|
+
const menus = [];
|
|
1449
|
+
const listeners = [];
|
|
1450
|
+
const merged = {};
|
|
1451
|
+
for (const plugin of plugins) {
|
|
1452
|
+
const patch = plugin.rowPatch?.(row, index, columnCount);
|
|
1453
|
+
if (patch == null) continue;
|
|
1454
|
+
if (patch.group && merged.group == null) merged.group = patch.group;
|
|
1455
|
+
if (patch.panel && merged.panel == null) merged.panel = patch.panel;
|
|
1456
|
+
if (patch.suppressSelection) merged.suppressSelection = true;
|
|
1457
|
+
if (patch.skipRowIndex) merged.skipRowIndex = true;
|
|
1458
|
+
if (patch.class) classes.push(patch.class);
|
|
1459
|
+
if (patch.attrs) merged.attrs = {
|
|
1460
|
+
...merged.attrs,
|
|
1461
|
+
...patch.attrs
|
|
1462
|
+
};
|
|
1463
|
+
if (patch.onClick) clicks.push(patch.onClick);
|
|
1464
|
+
if (patch.ref) refs.push(patch.ref);
|
|
1465
|
+
if (patch.listeners) listeners.push(patch.listeners);
|
|
1466
|
+
if (patch.menu) menus.push(...patch.menu);
|
|
1467
|
+
}
|
|
1468
|
+
merged.class = classes.join(" ") || void 0;
|
|
1469
|
+
merged.menu = menus;
|
|
1470
|
+
merged.listeners = mergeListeners(listeners);
|
|
1471
|
+
if (clicks.length > 0) merged.onClick = (event) => {
|
|
1472
|
+
for (const click of clicks) click(event);
|
|
1473
|
+
};
|
|
1474
|
+
if (refs.length > 0) merged.ref = (element) => {
|
|
1475
|
+
for (const callback of refs) callback(element);
|
|
1476
|
+
};
|
|
1477
|
+
return merged;
|
|
1478
|
+
}
|
|
1479
|
+
//#endregion
|
|
1287
1480
|
//#region src/Table/TableDataRenderers.ts
|
|
1288
1481
|
/**
|
|
1289
1482
|
* 渲染单元格内容:优先走列自己的 renderCell,没给就回退成纯文本。
|
|
@@ -1378,10 +1571,11 @@ const PluginFooter = defineComponent({
|
|
|
1378
1571
|
});
|
|
1379
1572
|
//#endregion
|
|
1380
1573
|
//#region src/Table/TableFilterControl.vue
|
|
1381
|
-
const _hoisted_1$
|
|
1382
|
-
const _hoisted_2$
|
|
1383
|
-
const _hoisted_3$2 = { class: "astryx-table__filter-
|
|
1384
|
-
const
|
|
1574
|
+
const _hoisted_1$9 = ["data-variant"];
|
|
1575
|
+
const _hoisted_2$2 = ["aria-label", "data-active"];
|
|
1576
|
+
const _hoisted_3$2 = { class: "astryx-table__filter-popover" };
|
|
1577
|
+
const _hoisted_4$2 = { class: "astryx-table__filter-actions" };
|
|
1578
|
+
const _sfc_main$12 = /*@__PURE__*/ defineComponent({
|
|
1385
1579
|
__name: "TableFilterControl",
|
|
1386
1580
|
props: { filter: {} },
|
|
1387
1581
|
setup(__props) {
|
|
@@ -1389,6 +1583,11 @@ const _sfc_main$11 = /*@__PURE__*/ defineComponent({
|
|
|
1389
1583
|
const messages = useAstryxMessages();
|
|
1390
1584
|
const draft = ref(props.filter.value);
|
|
1391
1585
|
const isCompact = computed(() => props.filter.variant === "inline-compact");
|
|
1586
|
+
/** 有生效的筛选值时漏斗用强调色,一眼看出这一列被筛过。 */
|
|
1587
|
+
const hasValue = computed(() => {
|
|
1588
|
+
const value = props.filter.value;
|
|
1589
|
+
return value != null && value !== "" && !(Array.isArray(value) && value.length === 0);
|
|
1590
|
+
});
|
|
1392
1591
|
watch(() => props.filter.value, (value) => {
|
|
1393
1592
|
draft.value = value;
|
|
1394
1593
|
});
|
|
@@ -1522,7 +1721,7 @@ const _sfc_main$11 = /*@__PURE__*/ defineComponent({
|
|
|
1522
1721
|
"has-close-button": false,
|
|
1523
1722
|
width: 240
|
|
1524
1723
|
}, {
|
|
1525
|
-
content: withCtx(() => [createElementVNode("div",
|
|
1724
|
+
content: withCtx(() => [createElementVNode("div", _hoisted_3$2, [__props.filter.field.type === "string" ? (openBlock(), createBlock(_sfc_main$26, {
|
|
1526
1725
|
key: 0,
|
|
1527
1726
|
"model-value": textValue(draft.value),
|
|
1528
1727
|
label: __props.filter.field.label,
|
|
@@ -1595,7 +1794,7 @@ const _sfc_main$11 = /*@__PURE__*/ defineComponent({
|
|
|
1595
1794
|
"label",
|
|
1596
1795
|
"placeholder",
|
|
1597
1796
|
"options"
|
|
1598
|
-
])), createElementVNode("div",
|
|
1797
|
+
])), createElementVNode("div", _hoisted_4$2, [createVNode(_sfc_main$16, {
|
|
1599
1798
|
variant: "ghost",
|
|
1600
1799
|
size: "sm",
|
|
1601
1800
|
label: unref(messages).table.reset,
|
|
@@ -1606,7 +1805,7 @@ const _sfc_main$11 = /*@__PURE__*/ defineComponent({
|
|
|
1606
1805
|
}, {
|
|
1607
1806
|
default: withCtx(() => [createTextVNode(toDisplayString(unref(messages).table.reset), 1)]),
|
|
1608
1807
|
_: 1
|
|
1609
|
-
}, 8, ["label"]), createVNode(_sfc_main$
|
|
1808
|
+
}, 8, ["label"]), createVNode(_sfc_main$16, {
|
|
1610
1809
|
variant: "primary",
|
|
1611
1810
|
size: "sm",
|
|
1612
1811
|
label: unref(messages).table.apply,
|
|
@@ -1615,33 +1814,32 @@ const _sfc_main$11 = /*@__PURE__*/ defineComponent({
|
|
|
1615
1814
|
default: withCtx(() => [createTextVNode(toDisplayString(unref(messages).table.apply), 1)]),
|
|
1616
1815
|
_: 1
|
|
1617
1816
|
}, 8, ["label"])])])]),
|
|
1618
|
-
default: withCtx(() => [
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
label: __props.filter.field.label
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
}, 8, ["label"])]),
|
|
1817
|
+
default: withCtx(() => [createElementVNode("button", {
|
|
1818
|
+
type: "button",
|
|
1819
|
+
class: "astryx-table__filter-trigger",
|
|
1820
|
+
"aria-label": __props.filter.field.label,
|
|
1821
|
+
"data-active": hasValue.value || void 0
|
|
1822
|
+
}, [createVNode(_sfc_main$18, {
|
|
1823
|
+
icon: "funnel",
|
|
1824
|
+
size: "xsm",
|
|
1825
|
+
color: hasValue.value ? "accent" : "secondary"
|
|
1826
|
+
}, null, 8, ["color"])], 8, _hoisted_2$2)]),
|
|
1629
1827
|
_: 1
|
|
1630
|
-
}, 8, ["label"]))], 8, _hoisted_1$
|
|
1828
|
+
}, 8, ["label"]))], 8, _hoisted_1$9);
|
|
1631
1829
|
};
|
|
1632
1830
|
}
|
|
1633
1831
|
});
|
|
1634
1832
|
//#endregion
|
|
1635
1833
|
//#region src/Table/TableGroupHeader.vue
|
|
1636
|
-
const _hoisted_1$
|
|
1637
|
-
const _hoisted_2$
|
|
1834
|
+
const _hoisted_1$8 = ["data-pinned"];
|
|
1835
|
+
const _hoisted_2$1 = [
|
|
1638
1836
|
"data-pinned",
|
|
1639
1837
|
"aria-expanded",
|
|
1640
1838
|
"aria-label"
|
|
1641
1839
|
];
|
|
1642
1840
|
const _hoisted_3$1 = { class: "astryx-table__group-label" };
|
|
1643
1841
|
const _hoisted_4$1 = { class: "astryx-table__group-count" };
|
|
1644
|
-
const _sfc_main$
|
|
1842
|
+
const _sfc_main$11 = /*@__PURE__*/ defineComponent({
|
|
1645
1843
|
name: "AstryxTableGroupHeader",
|
|
1646
1844
|
__name: "TableGroupHeader",
|
|
1647
1845
|
props: {
|
|
@@ -1668,19 +1866,19 @@ const _sfc_main$10 = /*@__PURE__*/ defineComponent({
|
|
|
1668
1866
|
}, [createElementVNode("span", { class: normalizeClass(["astryx-table__chevron-icon", { "is-expanded": !__props.collapsed }]) }, [createVNode(_sfc_main$18, {
|
|
1669
1867
|
icon: "chevronRight",
|
|
1670
1868
|
size: "sm"
|
|
1671
|
-
})], 2)], 8, _hoisted_2$
|
|
1869
|
+
})], 2)], 8, _hoisted_2$1), renderSlot(_ctx.$slots, "default", {}, () => [createElementVNode("span", _hoisted_3$1, [createTextVNode(toDisplayString(__props.groupKey) + " ", 1), createElementVNode("span", _hoisted_4$1, "(" + toDisplayString(__props.count) + ")", 1)])])], 8, _hoisted_1$8);
|
|
1672
1870
|
};
|
|
1673
1871
|
}
|
|
1674
1872
|
});
|
|
1675
1873
|
//#endregion
|
|
1676
1874
|
//#region src/Table/TableRowMenu.vue
|
|
1677
|
-
const _hoisted_1$
|
|
1875
|
+
const _hoisted_1$7 = [
|
|
1678
1876
|
"tabindex",
|
|
1679
1877
|
"onClick",
|
|
1680
1878
|
"onFocusin",
|
|
1681
1879
|
"onMouseenter"
|
|
1682
1880
|
];
|
|
1683
|
-
const _sfc_main$
|
|
1881
|
+
const _sfc_main$10 = /*@__PURE__*/ defineComponent({
|
|
1684
1882
|
name: "AstryxTableRowMenu",
|
|
1685
1883
|
__name: "TableRowMenu",
|
|
1686
1884
|
props: {
|
|
@@ -1692,6 +1890,7 @@ const _sfc_main$9 = /*@__PURE__*/ defineComponent({
|
|
|
1692
1890
|
setup(__props, { emit: __emit }) {
|
|
1693
1891
|
const props = __props;
|
|
1694
1892
|
const emit = __emit;
|
|
1893
|
+
const teleportTarget = useLayerTeleportTarget();
|
|
1695
1894
|
const root = ref(null);
|
|
1696
1895
|
const active = ref(0);
|
|
1697
1896
|
function focusItem(index) {
|
|
@@ -1739,10 +1938,10 @@ const _sfc_main$9 = /*@__PURE__*/ defineComponent({
|
|
|
1739
1938
|
document.removeEventListener("pointerdown", onPointerDown);
|
|
1740
1939
|
});
|
|
1741
1940
|
return (_ctx, _cache) => {
|
|
1742
|
-
return openBlock(),
|
|
1941
|
+
return openBlock(), createBlock(Teleport, { to: unref(teleportTarget) }, [createElementVNode("div", {
|
|
1743
1942
|
ref_key: "root",
|
|
1744
1943
|
ref: root,
|
|
1745
|
-
class: "astryx-table-menu",
|
|
1944
|
+
class: "astryx-table-menu astryx-layer",
|
|
1746
1945
|
role: "menu",
|
|
1747
1946
|
tabindex: "-1",
|
|
1748
1947
|
style: normalizeStyle({
|
|
@@ -1764,15 +1963,208 @@ const _sfc_main$9 = /*@__PURE__*/ defineComponent({
|
|
|
1764
1963
|
key: 0,
|
|
1765
1964
|
icon: item.icon,
|
|
1766
1965
|
size: "xsm"
|
|
1767
|
-
}, null, 8, ["icon"])) : createCommentVNode("v-if", true), createElementVNode("span", null, toDisplayString(item.label), 1)], 40, _hoisted_1$
|
|
1768
|
-
}), 128))], 36);
|
|
1966
|
+
}, null, 8, ["icon"])) : createCommentVNode("v-if", true), createElementVNode("span", null, toDisplayString(item.label), 1)], 40, _hoisted_1$7);
|
|
1967
|
+
}), 128))], 36)], 8, ["to"]);
|
|
1769
1968
|
};
|
|
1770
1969
|
}
|
|
1771
1970
|
});
|
|
1772
1971
|
//#endregion
|
|
1972
|
+
//#region src/Table/TableScroll.vue
|
|
1973
|
+
const _hoisted_1$6 = ["aria-label", "tabindex"];
|
|
1974
|
+
const _sfc_main$9 = /*@__PURE__*/ defineComponent({
|
|
1975
|
+
inheritAttrs: false,
|
|
1976
|
+
__name: "TableScroll",
|
|
1977
|
+
props: { label: {} },
|
|
1978
|
+
emits: ["viewport"],
|
|
1979
|
+
setup(__props, { emit: __emit }) {
|
|
1980
|
+
const emit = __emit;
|
|
1981
|
+
const attrs = useAttrs();
|
|
1982
|
+
const scroll = useScrollableArea({
|
|
1983
|
+
axis: "inline",
|
|
1984
|
+
overscroll: "contain",
|
|
1985
|
+
keyboardAccess: { owner: "content" }
|
|
1986
|
+
});
|
|
1987
|
+
const viewportEl = shallowRef(null);
|
|
1988
|
+
function bindViewport(element) {
|
|
1989
|
+
scroll.viewport(element);
|
|
1990
|
+
const node = element instanceof HTMLElement ? element : null;
|
|
1991
|
+
viewportEl.value = node;
|
|
1992
|
+
emit("viewport", node);
|
|
1993
|
+
}
|
|
1994
|
+
useScrollbars(viewportEl);
|
|
1995
|
+
const tabindex = computed(() => scroll.state.value.inline.isScrollable ? 0 : void 0);
|
|
1996
|
+
const rootClass = computed(() => ["astryx-table-scroll", attrs.class]);
|
|
1997
|
+
const rootStyle = computed(() => [attrs.style, scroll.viewportStyle.value]);
|
|
1998
|
+
return (_ctx, _cache) => {
|
|
1999
|
+
return openBlock(), createElementBlock("div", mergeProps({
|
|
2000
|
+
ref: bindViewport,
|
|
2001
|
+
class: rootClass.value,
|
|
2002
|
+
role: "group",
|
|
2003
|
+
"aria-label": __props.label,
|
|
2004
|
+
tabindex: tabindex.value
|
|
2005
|
+
}, unref(scroll).viewportAttrs.value, { style: rootStyle.value }), [createElementVNode("div", {
|
|
2006
|
+
ref: unref(scroll).content,
|
|
2007
|
+
"data-scroll-content": ""
|
|
2008
|
+
}, [renderSlot(_ctx.$slots, "default")], 512)], 16, _hoisted_1$6);
|
|
2009
|
+
};
|
|
2010
|
+
}
|
|
2011
|
+
});
|
|
2012
|
+
//#endregion
|
|
2013
|
+
//#region src/Table/useTableColumnResizeSession.ts
|
|
2014
|
+
/**
|
|
2015
|
+
* 表头列宽把手的指针拖动和键盘步进。
|
|
2016
|
+
* 宽度怎么分给相邻列由 `resizeColumnWidths` 决定,这里只负责会话和预览。
|
|
2017
|
+
*/
|
|
2018
|
+
function useTableColumnResizeSession(options) {
|
|
2019
|
+
function buildResizeState(cell, column) {
|
|
2020
|
+
const row = cell.parentElement;
|
|
2021
|
+
if (row == null) return null;
|
|
2022
|
+
const table = cell.closest("table");
|
|
2023
|
+
const contributions = options.contributions();
|
|
2024
|
+
const dragged = contributions.get(column.key);
|
|
2025
|
+
const snapshots = [];
|
|
2026
|
+
const elements = /* @__PURE__ */ new Map();
|
|
2027
|
+
for (const child of Array.from(row.children)) {
|
|
2028
|
+
if (!(child instanceof HTMLElement)) continue;
|
|
2029
|
+
const key = child.dataset.column;
|
|
2030
|
+
if (key == null) continue;
|
|
2031
|
+
const contribution = contributions.get(key);
|
|
2032
|
+
if (contribution == null) continue;
|
|
2033
|
+
const measured = child.getBoundingClientRect().width;
|
|
2034
|
+
snapshots.push({
|
|
2035
|
+
key,
|
|
2036
|
+
initialWidth: contribution.currentWidth ?? (measured > 0 ? measured : 0),
|
|
2037
|
+
minWidth: contribution.minWidth,
|
|
2038
|
+
maxWidth: contribution.maxWidth
|
|
2039
|
+
});
|
|
2040
|
+
elements.set(key, child);
|
|
2041
|
+
}
|
|
2042
|
+
const resizeIndex = snapshots.findIndex((item) => item.key === column.key);
|
|
2043
|
+
if (resizeIndex < 0) return null;
|
|
2044
|
+
return {
|
|
2045
|
+
snapshots,
|
|
2046
|
+
resizeIndex,
|
|
2047
|
+
neighborIndex: dragged?.neighborKey == null ? null : snapshots.findIndex((item) => item.key === dragged.neighborKey),
|
|
2048
|
+
tableWidth: table?.getBoundingClientRect().width ?? 0,
|
|
2049
|
+
direction: columnResizeDirectionSign(getComputedStyle(cell).direction),
|
|
2050
|
+
elements
|
|
2051
|
+
};
|
|
2052
|
+
}
|
|
2053
|
+
function applyResize(widths, state) {
|
|
2054
|
+
state.snapshots.forEach((snapshot, index) => {
|
|
2055
|
+
const element = state.elements.get(snapshot.key);
|
|
2056
|
+
const width = widths[index];
|
|
2057
|
+
if (element == null || width == null) return;
|
|
2058
|
+
const pixels = `${width}px`;
|
|
2059
|
+
element.style.width = pixels;
|
|
2060
|
+
element.style.minWidth = pixels;
|
|
2061
|
+
element.style.maxWidth = pixels;
|
|
2062
|
+
});
|
|
2063
|
+
}
|
|
2064
|
+
function resetResizeStyles(state) {
|
|
2065
|
+
for (const element of state.elements.values()) {
|
|
2066
|
+
element.style.width = "";
|
|
2067
|
+
element.style.minWidth = "";
|
|
2068
|
+
element.style.maxWidth = "";
|
|
2069
|
+
}
|
|
2070
|
+
}
|
|
2071
|
+
/** 算一次拖动结果:先把预览写到表头,再把变了的列交给插件。 */
|
|
2072
|
+
function commitResize(state, delta) {
|
|
2073
|
+
const widths = resizeColumnWidths(state, delta);
|
|
2074
|
+
applyResize(widths, state);
|
|
2075
|
+
const last = state.snapshots.length - 1;
|
|
2076
|
+
const updates = {};
|
|
2077
|
+
state.snapshots.forEach((snapshot, index) => {
|
|
2078
|
+
const width = widths[index];
|
|
2079
|
+
if (index !== last && width != null) updates[snapshot.key] = width;
|
|
2080
|
+
});
|
|
2081
|
+
if (Object.keys(updates).length === 0) return;
|
|
2082
|
+
for (const plugin of options.plugins()) plugin.onColumnResizeEnd?.(updates);
|
|
2083
|
+
}
|
|
2084
|
+
function resizeLabel(column) {
|
|
2085
|
+
const header = typeof column.header === "string" && column.header.length > 0 ? column.header : column.key;
|
|
2086
|
+
return options.resizeColumnLabel(header);
|
|
2087
|
+
}
|
|
2088
|
+
function resizeMax(contribution) {
|
|
2089
|
+
const max = contribution?.maxWidth;
|
|
2090
|
+
return max == null || !Number.isFinite(max) ? void 0 : max;
|
|
2091
|
+
}
|
|
2092
|
+
function startResize(event, column) {
|
|
2093
|
+
const target = event.currentTarget;
|
|
2094
|
+
if (!(target instanceof HTMLElement) || event.button !== 0) return;
|
|
2095
|
+
const cell = target.closest("th");
|
|
2096
|
+
const state = cell == null ? null : buildResizeState(cell, column);
|
|
2097
|
+
if (state == null || cell == null) return;
|
|
2098
|
+
event.preventDefault();
|
|
2099
|
+
const pointerId = event.pointerId;
|
|
2100
|
+
const startX = event.clientX;
|
|
2101
|
+
const table = cell.closest("table");
|
|
2102
|
+
const previousUserSelect = table?.style.userSelect ?? "";
|
|
2103
|
+
if (table != null) table.style.userSelect = "none";
|
|
2104
|
+
target.setAttribute("data-resizing", "true");
|
|
2105
|
+
target.setPointerCapture(pointerId);
|
|
2106
|
+
const listeners = new AbortController();
|
|
2107
|
+
const move = (moveEvent) => {
|
|
2108
|
+
if (moveEvent.pointerId !== pointerId) return;
|
|
2109
|
+
applyResize(resizeColumnWidths(state, (moveEvent.clientX - startX) * state.direction), state);
|
|
2110
|
+
};
|
|
2111
|
+
const finish = () => {
|
|
2112
|
+
listeners.abort();
|
|
2113
|
+
target.removeAttribute("data-resizing");
|
|
2114
|
+
if (target.hasPointerCapture(pointerId)) target.releasePointerCapture(pointerId);
|
|
2115
|
+
if (table != null) table.style.userSelect = previousUserSelect;
|
|
2116
|
+
};
|
|
2117
|
+
const stop = (upEvent) => {
|
|
2118
|
+
if (upEvent.pointerId !== pointerId) return;
|
|
2119
|
+
finish();
|
|
2120
|
+
commitResize(state, (upEvent.clientX - startX) * state.direction);
|
|
2121
|
+
};
|
|
2122
|
+
const cancel = (cancelEvent) => {
|
|
2123
|
+
if (cancelEvent.pointerId !== pointerId) return;
|
|
2124
|
+
finish();
|
|
2125
|
+
resetResizeStyles(state);
|
|
2126
|
+
};
|
|
2127
|
+
const listenerOptions = { signal: listeners.signal };
|
|
2128
|
+
target.addEventListener("pointermove", move, listenerOptions);
|
|
2129
|
+
target.addEventListener("pointerup", stop, listenerOptions);
|
|
2130
|
+
target.addEventListener("pointercancel", cancel, listenerOptions);
|
|
2131
|
+
}
|
|
2132
|
+
function onResizeKeydown(event, column) {
|
|
2133
|
+
const handle = event.currentTarget;
|
|
2134
|
+
if (!(handle instanceof HTMLElement)) return;
|
|
2135
|
+
const cell = handle.closest("th");
|
|
2136
|
+
const state = cell == null ? null : buildResizeState(cell, column);
|
|
2137
|
+
if (state == null) return;
|
|
2138
|
+
const self = state.snapshots[state.resizeIndex];
|
|
2139
|
+
if (self == null) return;
|
|
2140
|
+
const step = columnResizeStep(event.shiftKey);
|
|
2141
|
+
let delta = null;
|
|
2142
|
+
switch (event.key) {
|
|
2143
|
+
case "ArrowRight":
|
|
2144
|
+
delta = step * state.direction;
|
|
2145
|
+
break;
|
|
2146
|
+
case "ArrowLeft":
|
|
2147
|
+
delta = -step * state.direction;
|
|
2148
|
+
break;
|
|
2149
|
+
case "Home":
|
|
2150
|
+
delta = self.minWidth - self.initialWidth;
|
|
2151
|
+
break;
|
|
2152
|
+
case "End": if (Number.isFinite(self.maxWidth)) delta = self.maxWidth - self.initialWidth;
|
|
2153
|
+
}
|
|
2154
|
+
if (delta == null) return;
|
|
2155
|
+
event.preventDefault();
|
|
2156
|
+
commitResize(state, delta);
|
|
2157
|
+
}
|
|
2158
|
+
return {
|
|
2159
|
+
startResize,
|
|
2160
|
+
onResizeKeydown,
|
|
2161
|
+
resizeLabel,
|
|
2162
|
+
resizeMax
|
|
2163
|
+
};
|
|
2164
|
+
}
|
|
2165
|
+
//#endregion
|
|
1773
2166
|
//#region src/Table/TableData.vue
|
|
1774
|
-
const _hoisted_1$5 = [
|
|
1775
|
-
const _hoisted_2$1 = [
|
|
2167
|
+
const _hoisted_1$5 = [
|
|
1776
2168
|
"data-density",
|
|
1777
2169
|
"data-dividers",
|
|
1778
2170
|
"data-striped",
|
|
@@ -1782,26 +2174,26 @@ const _hoisted_2$1 = [
|
|
|
1782
2174
|
"data-row-highlight",
|
|
1783
2175
|
"aria-rowcount"
|
|
1784
2176
|
];
|
|
1785
|
-
const
|
|
2177
|
+
const _hoisted_2 = [
|
|
1786
2178
|
"data-column",
|
|
1787
2179
|
"data-align",
|
|
1788
2180
|
"aria-sort"
|
|
1789
2181
|
];
|
|
1790
|
-
const
|
|
1791
|
-
const
|
|
1792
|
-
const
|
|
2182
|
+
const _hoisted_3 = { class: "astryx-table__header" };
|
|
2183
|
+
const _hoisted_4 = { class: "astryx-table__header-line" };
|
|
2184
|
+
const _hoisted_5 = [
|
|
1793
2185
|
"data-align",
|
|
1794
2186
|
"aria-label",
|
|
1795
2187
|
"onClick"
|
|
1796
2188
|
];
|
|
1797
|
-
const
|
|
1798
|
-
const
|
|
1799
|
-
const
|
|
2189
|
+
const _hoisted_6 = { key: 1 };
|
|
2190
|
+
const _hoisted_7 = ["data-active"];
|
|
2191
|
+
const _hoisted_8 = {
|
|
1800
2192
|
key: 2,
|
|
1801
2193
|
class: "astryx-table__sort-rank"
|
|
1802
2194
|
};
|
|
1803
|
-
const
|
|
1804
|
-
const
|
|
2195
|
+
const _hoisted_9 = { key: 2 };
|
|
2196
|
+
const _hoisted_10 = [
|
|
1805
2197
|
"aria-label",
|
|
1806
2198
|
"aria-valuenow",
|
|
1807
2199
|
"aria-valuemin",
|
|
@@ -1809,20 +2201,24 @@ const _hoisted_11 = [
|
|
|
1809
2201
|
"onPointerdown",
|
|
1810
2202
|
"onKeydown"
|
|
1811
2203
|
];
|
|
1812
|
-
const
|
|
1813
|
-
const
|
|
1814
|
-
const
|
|
2204
|
+
const _hoisted_11 = { key: 0 };
|
|
2205
|
+
const _hoisted_12 = ["colspan"];
|
|
2206
|
+
const _hoisted_13 = [
|
|
1815
2207
|
"aria-selected",
|
|
1816
2208
|
"aria-rowindex",
|
|
2209
|
+
"onBlur",
|
|
1817
2210
|
"onClick",
|
|
1818
|
-
"onContextmenu"
|
|
2211
|
+
"onContextmenu",
|
|
2212
|
+
"onFocus",
|
|
2213
|
+
"onMouseenter",
|
|
2214
|
+
"onMouseleave"
|
|
1819
2215
|
];
|
|
1820
|
-
const
|
|
1821
|
-
const
|
|
1822
|
-
const
|
|
1823
|
-
const
|
|
1824
|
-
/** 收集这一行表头的宽度快照,用来算拖动后的宽度。 */
|
|
2216
|
+
const _hoisted_14 = ["colspan"];
|
|
2217
|
+
const _hoisted_15 = ["data-column", "data-align"];
|
|
2218
|
+
const _hoisted_16 = ["data-variant"];
|
|
2219
|
+
const _hoisted_17 = ["colspan"];
|
|
1825
2220
|
const _sfc_main$8 = /*@__PURE__*/ defineComponent({
|
|
2221
|
+
inheritAttrs: false,
|
|
1826
2222
|
__name: "TableData",
|
|
1827
2223
|
props: {
|
|
1828
2224
|
rows: {},
|
|
@@ -1837,15 +2233,15 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
|
|
|
1837
2233
|
textOverflow: {},
|
|
1838
2234
|
verticalAlign: {},
|
|
1839
2235
|
rowIndexStart: {},
|
|
1840
|
-
rowCount: {}
|
|
1841
|
-
minWidth: {}
|
|
2236
|
+
rowCount: {}
|
|
1842
2237
|
},
|
|
1843
2238
|
setup(__props) {
|
|
1844
2239
|
const props = __props;
|
|
2240
|
+
const attrs = useAttrs();
|
|
1845
2241
|
const messages = useAstryxMessages();
|
|
1846
2242
|
const scrollRoot = ref(null);
|
|
1847
|
-
useScrollbars(scrollRoot);
|
|
1848
2243
|
const menu = ref(null);
|
|
2244
|
+
const scrollStyle = computed(() => splitStyleMinWidth(attrs.style).style);
|
|
1849
2245
|
const resolvedColumns = computed(() => props.plugins.reduce((columns, plugin) => plugin.transformColumns?.(columns) ?? columns, [...props.columns]));
|
|
1850
2246
|
const widths = computed(() => resolveColumnWidths(resolvedColumns.value));
|
|
1851
2247
|
const selection = computed(() => props.plugins.find((plugin) => plugin.selection)?.selection);
|
|
@@ -1868,6 +2264,12 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
|
|
|
1868
2264
|
};
|
|
1869
2265
|
}
|
|
1870
2266
|
const resizeContributions = computed(() => new Map(resolvedColumns.value.map((column) => [column.key, resizeContribution(column)])));
|
|
2267
|
+
const { startResize, onResizeKeydown, resizeLabel, resizeMax } = useTableColumnResizeSession({
|
|
2268
|
+
plugins: () => props.plugins,
|
|
2269
|
+
contributions: () => resizeContributions.value,
|
|
2270
|
+
resizeColumnLabel: (header) => messages.value.table.resizeColumn(header)
|
|
2271
|
+
});
|
|
2272
|
+
const tableStyle = computed(() => ({ minWidth: resolveTableMinWidth(splitStyleMinWidth(attrs.style).minWidth, widths.value.tableMinWidth) }));
|
|
1871
2273
|
const layoutColumns = computed(() => selection.value ? [selectColumn(), ...resolvedColumns.value] : resolvedColumns.value);
|
|
1872
2274
|
const columnCount = computed(() => layoutColumns.value.length);
|
|
1873
2275
|
const trackRows = computed(() => props.rowCount != null || props.rowIndexStart != null);
|
|
@@ -1878,10 +2280,12 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
|
|
|
1878
2280
|
function bindScroll(element) {
|
|
1879
2281
|
for (const plugin of props.plugins) plugin.bindScrollRoot?.(element);
|
|
1880
2282
|
}
|
|
1881
|
-
|
|
1882
|
-
if (
|
|
1883
|
-
if (
|
|
1884
|
-
|
|
2283
|
+
function onViewport(element) {
|
|
2284
|
+
if (scrollRoot.value === element) return;
|
|
2285
|
+
if (scrollRoot.value != null) bindScroll(null);
|
|
2286
|
+
scrollRoot.value = element;
|
|
2287
|
+
if (element != null) bindScroll(element);
|
|
2288
|
+
}
|
|
1885
2289
|
onBeforeUnmount(() => {
|
|
1886
2290
|
bindScroll(null);
|
|
1887
2291
|
});
|
|
@@ -1908,6 +2312,16 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
|
|
|
1908
2312
|
}
|
|
1909
2313
|
return null;
|
|
1910
2314
|
}
|
|
2315
|
+
const filterContributions = computed(() => new Map(resolvedColumns.value.map((column) => [column.key, filterFor(column)])));
|
|
2316
|
+
/**
|
|
2317
|
+
* 取某一列落在指定位置的筛选控件。
|
|
2318
|
+
* `popover` 是一个漏斗按钮,跟标题、排序图标同一行;`inline` 系列是输入框,垫在标题下面。
|
|
2319
|
+
*/
|
|
2320
|
+
function filterAt(column, place) {
|
|
2321
|
+
const filter = filterContributions.value.get(column.key) ?? null;
|
|
2322
|
+
if (filter == null) return null;
|
|
2323
|
+
return (filter.variant === "popover" ? "line" : "below") === place ? filter : null;
|
|
2324
|
+
}
|
|
1911
2325
|
function rowKey(row, index) {
|
|
1912
2326
|
if (typeof props.idKey === "function") return props.idKey(row);
|
|
1913
2327
|
const id = row[props.idKey];
|
|
@@ -1946,38 +2360,19 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
|
|
|
1946
2360
|
if (column.verticalAlign) style.verticalAlign = column.verticalAlign;
|
|
1947
2361
|
return style;
|
|
1948
2362
|
}
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
const
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
const patch = plugin.rowPatch?.(row, index, columnCount.value);
|
|
1956
|
-
if (patch == null) continue;
|
|
1957
|
-
if (patch.group && merged.group == null) merged.group = patch.group;
|
|
1958
|
-
if (patch.panel && merged.panel == null) merged.panel = patch.panel;
|
|
1959
|
-
if (patch.suppressSelection) merged.suppressSelection = true;
|
|
1960
|
-
if (patch.skipRowIndex) merged.skipRowIndex = true;
|
|
1961
|
-
if (patch.class) classes.push(patch.class);
|
|
1962
|
-
if (patch.attrs) merged.attrs = {
|
|
1963
|
-
...merged.attrs,
|
|
1964
|
-
...patch.attrs
|
|
1965
|
-
};
|
|
1966
|
-
if (patch.onClick) clicks.push(patch.onClick);
|
|
1967
|
-
if (patch.menu) menus.push(...patch.menu);
|
|
1968
|
-
}
|
|
1969
|
-
merged.class = classes.join(" ") || void 0;
|
|
1970
|
-
merged.menu = menus;
|
|
1971
|
-
if (clicks.length > 0) merged.onClick = (event) => {
|
|
1972
|
-
for (const click of clicks) click(event);
|
|
2363
|
+
/** Vue 的 ref 回调拿到的是更宽的 `Element`,收窄成 `<tr>` 再交给插件。 */
|
|
2364
|
+
function rowRefBinding(patch) {
|
|
2365
|
+
const callback = patch.ref;
|
|
2366
|
+
if (callback == null) return void 0;
|
|
2367
|
+
return (element) => {
|
|
2368
|
+
callback(element);
|
|
1973
2369
|
};
|
|
1974
|
-
return merged;
|
|
1975
2370
|
}
|
|
1976
2371
|
const entries = computed(() => {
|
|
1977
2372
|
let ordinal = 0;
|
|
1978
2373
|
const start = props.rowIndexStart ?? 1;
|
|
1979
2374
|
return props.rows.map((row, index) => {
|
|
1980
|
-
const patch =
|
|
2375
|
+
const patch = mergeRowPatches(props.plugins, row, index, columnCount.value);
|
|
1981
2376
|
let rowIndex;
|
|
1982
2377
|
if (trackRows.value && !patch.skipRowIndex) {
|
|
1983
2378
|
rowIndex = start + ordinal;
|
|
@@ -1988,6 +2383,7 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
|
|
|
1988
2383
|
row,
|
|
1989
2384
|
index,
|
|
1990
2385
|
patch,
|
|
2386
|
+
ref: rowRefBinding(patch),
|
|
1991
2387
|
rowIndex
|
|
1992
2388
|
};
|
|
1993
2389
|
});
|
|
@@ -2001,144 +2397,6 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
|
|
|
2001
2397
|
items
|
|
2002
2398
|
};
|
|
2003
2399
|
}
|
|
2004
|
-
function buildResizeState(cell, column) {
|
|
2005
|
-
const row = cell.parentElement;
|
|
2006
|
-
if (row == null) return null;
|
|
2007
|
-
const table = cell.closest("table");
|
|
2008
|
-
const dragged = resizeContributions.value.get(column.key);
|
|
2009
|
-
const snapshots = [];
|
|
2010
|
-
const elements = /* @__PURE__ */ new Map();
|
|
2011
|
-
for (const child of Array.from(row.children)) {
|
|
2012
|
-
if (!(child instanceof HTMLElement)) continue;
|
|
2013
|
-
const key = child.dataset.column;
|
|
2014
|
-
if (key == null) continue;
|
|
2015
|
-
const contribution = resizeContributions.value.get(key);
|
|
2016
|
-
if (contribution == null) continue;
|
|
2017
|
-
const measured = child.getBoundingClientRect().width;
|
|
2018
|
-
snapshots.push({
|
|
2019
|
-
key,
|
|
2020
|
-
initialWidth: contribution.currentWidth ?? (measured > 0 ? measured : 0),
|
|
2021
|
-
minWidth: contribution.minWidth,
|
|
2022
|
-
maxWidth: contribution.maxWidth
|
|
2023
|
-
});
|
|
2024
|
-
elements.set(key, child);
|
|
2025
|
-
}
|
|
2026
|
-
const resizeIndex = snapshots.findIndex((item) => item.key === column.key);
|
|
2027
|
-
if (resizeIndex < 0) return null;
|
|
2028
|
-
return {
|
|
2029
|
-
snapshots,
|
|
2030
|
-
resizeIndex,
|
|
2031
|
-
neighborIndex: dragged?.neighborKey == null ? null : snapshots.findIndex((item) => item.key === dragged.neighborKey),
|
|
2032
|
-
tableWidth: table?.getBoundingClientRect().width ?? 0,
|
|
2033
|
-
direction: columnResizeDirectionSign(getComputedStyle(cell).direction),
|
|
2034
|
-
elements
|
|
2035
|
-
};
|
|
2036
|
-
}
|
|
2037
|
-
function applyResize(widths, state) {
|
|
2038
|
-
state.snapshots.forEach((snapshot, index) => {
|
|
2039
|
-
const element = state.elements.get(snapshot.key);
|
|
2040
|
-
const width = widths[index];
|
|
2041
|
-
if (element == null || width == null) return;
|
|
2042
|
-
const pixels = `${width}px`;
|
|
2043
|
-
element.style.width = pixels;
|
|
2044
|
-
element.style.minWidth = pixels;
|
|
2045
|
-
element.style.maxWidth = pixels;
|
|
2046
|
-
});
|
|
2047
|
-
}
|
|
2048
|
-
function resetResizeStyles(state) {
|
|
2049
|
-
for (const element of state.elements.values()) {
|
|
2050
|
-
element.style.width = "";
|
|
2051
|
-
element.style.minWidth = "";
|
|
2052
|
-
element.style.maxWidth = "";
|
|
2053
|
-
}
|
|
2054
|
-
}
|
|
2055
|
-
/** 算一次拖动结果:先把预览写到表头,再把变了的列交给插件。 */
|
|
2056
|
-
function commitResize(state, delta) {
|
|
2057
|
-
const widths = resizeColumnWidths(state, delta);
|
|
2058
|
-
applyResize(widths, state);
|
|
2059
|
-
const last = state.snapshots.length - 1;
|
|
2060
|
-
const updates = {};
|
|
2061
|
-
state.snapshots.forEach((snapshot, index) => {
|
|
2062
|
-
const width = widths[index];
|
|
2063
|
-
if (index !== last && width != null) updates[snapshot.key] = width;
|
|
2064
|
-
});
|
|
2065
|
-
if (Object.keys(updates).length === 0) return;
|
|
2066
|
-
for (const plugin of props.plugins) plugin.onColumnResizeEnd?.(updates);
|
|
2067
|
-
}
|
|
2068
|
-
function resizeLabel(column) {
|
|
2069
|
-
const header = typeof column.header === "string" && column.header.length > 0 ? column.header : column.key;
|
|
2070
|
-
return messages.value.table.resizeColumn(header);
|
|
2071
|
-
}
|
|
2072
|
-
function resizeMax(contribution) {
|
|
2073
|
-
const max = contribution?.maxWidth;
|
|
2074
|
-
return max == null || !Number.isFinite(max) ? void 0 : max;
|
|
2075
|
-
}
|
|
2076
|
-
function startResize(event, column) {
|
|
2077
|
-
const target = event.currentTarget;
|
|
2078
|
-
if (!(target instanceof HTMLElement) || event.button !== 0) return;
|
|
2079
|
-
const cell = target.closest("th");
|
|
2080
|
-
const state = cell == null ? null : buildResizeState(cell, column);
|
|
2081
|
-
if (state == null || cell == null) return;
|
|
2082
|
-
event.preventDefault();
|
|
2083
|
-
const pointerId = event.pointerId;
|
|
2084
|
-
const startX = event.clientX;
|
|
2085
|
-
const table = cell.closest("table");
|
|
2086
|
-
const previousUserSelect = table?.style.userSelect ?? "";
|
|
2087
|
-
if (table != null) table.style.userSelect = "none";
|
|
2088
|
-
target.setAttribute("data-resizing", "true");
|
|
2089
|
-
target.setPointerCapture(pointerId);
|
|
2090
|
-
const listeners = new AbortController();
|
|
2091
|
-
const move = (moveEvent) => {
|
|
2092
|
-
if (moveEvent.pointerId !== pointerId) return;
|
|
2093
|
-
applyResize(resizeColumnWidths(state, (moveEvent.clientX - startX) * state.direction), state);
|
|
2094
|
-
};
|
|
2095
|
-
const finish = () => {
|
|
2096
|
-
listeners.abort();
|
|
2097
|
-
target.removeAttribute("data-resizing");
|
|
2098
|
-
if (target.hasPointerCapture(pointerId)) target.releasePointerCapture(pointerId);
|
|
2099
|
-
if (table != null) table.style.userSelect = previousUserSelect;
|
|
2100
|
-
};
|
|
2101
|
-
const stop = (upEvent) => {
|
|
2102
|
-
if (upEvent.pointerId !== pointerId) return;
|
|
2103
|
-
finish();
|
|
2104
|
-
commitResize(state, (upEvent.clientX - startX) * state.direction);
|
|
2105
|
-
};
|
|
2106
|
-
const cancel = (cancelEvent) => {
|
|
2107
|
-
if (cancelEvent.pointerId !== pointerId) return;
|
|
2108
|
-
finish();
|
|
2109
|
-
resetResizeStyles(state);
|
|
2110
|
-
};
|
|
2111
|
-
const options = { signal: listeners.signal };
|
|
2112
|
-
target.addEventListener("pointermove", move, options);
|
|
2113
|
-
target.addEventListener("pointerup", stop, options);
|
|
2114
|
-
target.addEventListener("pointercancel", cancel, options);
|
|
2115
|
-
}
|
|
2116
|
-
function onResizeKeydown(event, column) {
|
|
2117
|
-
const handle = event.currentTarget;
|
|
2118
|
-
if (!(handle instanceof HTMLElement)) return;
|
|
2119
|
-
const cell = handle.closest("th");
|
|
2120
|
-
const state = cell == null ? null : buildResizeState(cell, column);
|
|
2121
|
-
if (state == null) return;
|
|
2122
|
-
const self = state.snapshots[state.resizeIndex];
|
|
2123
|
-
if (self == null) return;
|
|
2124
|
-
const step = columnResizeStep(event.shiftKey);
|
|
2125
|
-
let delta = null;
|
|
2126
|
-
switch (event.key) {
|
|
2127
|
-
case "ArrowRight":
|
|
2128
|
-
delta = step * state.direction;
|
|
2129
|
-
break;
|
|
2130
|
-
case "ArrowLeft":
|
|
2131
|
-
delta = -step * state.direction;
|
|
2132
|
-
break;
|
|
2133
|
-
case "Home":
|
|
2134
|
-
delta = self.minWidth - self.initialWidth;
|
|
2135
|
-
break;
|
|
2136
|
-
case "End": if (Number.isFinite(self.maxWidth)) delta = self.maxWidth - self.initialWidth;
|
|
2137
|
-
}
|
|
2138
|
-
if (delta == null) return;
|
|
2139
|
-
event.preventDefault();
|
|
2140
|
-
commitResize(state, delta);
|
|
2141
|
-
}
|
|
2142
2400
|
function selectCellPatch(kind, row) {
|
|
2143
2401
|
return mergeCell(selectColumn(), row, kind);
|
|
2144
2402
|
}
|
|
@@ -2149,197 +2407,215 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
|
|
|
2149
2407
|
return selection.value?.isEnabled?.(row) ?? true;
|
|
2150
2408
|
}
|
|
2151
2409
|
return (_ctx, _cache) => {
|
|
2152
|
-
return openBlock(),
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
key: 0,
|
|
2179
|
-
class: ["astryx-table__select", selectCellPatch("header", null).class],
|
|
2180
|
-
scope: "col"
|
|
2181
|
-
}, selectCellPatch("header", null).attrs, { style: selectCellPatch("header", null).style }), [createVNode(_sfc_main$19, {
|
|
2182
|
-
"model-value": selection.value.isIndeterminate() ? "indeterminate" : selection.value.isAllSelected(),
|
|
2183
|
-
label: unref(messages).table.selectAllRows,
|
|
2184
|
-
"is-label-hidden": "",
|
|
2185
|
-
size: "sm",
|
|
2186
|
-
"onUpdate:modelValue": _cache[0] || (_cache[0] = (value) => selection.value?.selectAll(value === true))
|
|
2187
|
-
}, null, 8, ["model-value", "label"])], 16)) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(resolvedColumns.value, (column) => {
|
|
2188
|
-
return openBlock(), createElementBlock("th", mergeProps({
|
|
2189
|
-
key: column.key,
|
|
2190
|
-
scope: "col",
|
|
2191
|
-
"data-column": column.key,
|
|
2192
|
-
"data-align": column.align,
|
|
2193
|
-
class: mergeCell(column, null, "header").class
|
|
2194
|
-
}, { ref_for: true }, mergeCell(column, null, "header").attrs, {
|
|
2195
|
-
style: headerStyle(column),
|
|
2196
|
-
"aria-sort": sortFor(column)?.direction ?? void 0
|
|
2197
|
-
}), [
|
|
2198
|
-
createElementVNode("div", _hoisted_4, [createElementVNode("div", _hoisted_5, [createVNode(unref(HeaderAddon), {
|
|
2199
|
-
column,
|
|
2200
|
-
plugins: __props.plugins
|
|
2201
|
-
}, null, 8, ["column", "plugins"]), sortFor(column) ? (openBlock(), createElementBlock("button", {
|
|
2202
|
-
key: 0,
|
|
2203
|
-
type: "button",
|
|
2204
|
-
class: "astryx-table__sort",
|
|
2205
|
-
"data-align": column.align,
|
|
2206
|
-
"aria-label": sortFor(column)?.label,
|
|
2207
|
-
onClick: ($event) => sortFor(column)?.onClick($event)
|
|
2208
|
-
}, [
|
|
2209
|
-
column.headerHidden ? (openBlock(), createBlock(_sfc_main$14, { key: 0 }, {
|
|
2210
|
-
default: withCtx(() => [createTextVNode(toDisplayString(column.header ?? column.key), 1)]),
|
|
2211
|
-
_: 2
|
|
2212
|
-
}, 1024)) : (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString(column.header ?? column.key), 1)),
|
|
2213
|
-
createElementVNode("span", {
|
|
2214
|
-
class: "astryx-table__sort-icon",
|
|
2215
|
-
"data-active": sortFor(column)?.direction != null || void 0
|
|
2216
|
-
}, [createVNode(_sfc_main$18, {
|
|
2217
|
-
icon: sortFor(column)?.direction === "descending" ? "arrowDown" : "arrowUp",
|
|
2218
|
-
size: "sm"
|
|
2219
|
-
}, null, 8, ["icon"])], 8, _hoisted_8),
|
|
2220
|
-
sortFor(column)?.rank ? (openBlock(), createElementBlock("span", _hoisted_9, toDisplayString(sortFor(column)?.rank), 1)) : createCommentVNode("v-if", true)
|
|
2221
|
-
], 8, _hoisted_6)) : column.headerHidden ? (openBlock(), createBlock(_sfc_main$14, { key: 1 }, {
|
|
2222
|
-
default: withCtx(() => [createTextVNode(toDisplayString(column.header ?? column.key), 1)]),
|
|
2223
|
-
_: 2
|
|
2224
|
-
}, 1024)) : (openBlock(), createElementBlock("span", _hoisted_10, toDisplayString(column.header ?? column.key), 1))]), filterFor(column) ? (openBlock(), createBlock(_sfc_main$11, {
|
|
2225
|
-
key: 0,
|
|
2226
|
-
filter: filterFor(column)
|
|
2227
|
-
}, null, 8, ["filter"])) : createCommentVNode("v-if", true)]),
|
|
2228
|
-
createCommentVNode(" eslint-disable-next-line vue-a11y/no-static-element-interactions -- role=\"separator\" 是 WAI-ARIA 的分隔条:自己可聚焦,方向键也归它处理。 "),
|
|
2229
|
-
resizeContributions.value.get(column.key)?.hasHandle ? (openBlock(), createElementBlock("span", {
|
|
2230
|
-
key: 0,
|
|
2231
|
-
class: "astryx-table__resize",
|
|
2232
|
-
role: "separator",
|
|
2233
|
-
"aria-orientation": "vertical",
|
|
2234
|
-
"aria-label": resizeLabel(column),
|
|
2235
|
-
"aria-valuenow": resizeContributions.value.get(column.key)?.currentWidth ?? resizeContributions.value.get(column.key)?.minWidth,
|
|
2236
|
-
"aria-valuemin": resizeContributions.value.get(column.key)?.minWidth,
|
|
2237
|
-
"aria-valuemax": resizeMax(resizeContributions.value.get(column.key)),
|
|
2238
|
-
tabindex: "0",
|
|
2239
|
-
onPointerdown: ($event) => startResize($event, column),
|
|
2240
|
-
onKeydown: ($event) => onResizeKeydown($event, column)
|
|
2241
|
-
}, null, 40, _hoisted_11)) : createCommentVNode("v-if", true)
|
|
2242
|
-
], 16, _hoisted_3);
|
|
2243
|
-
}), 128))])]), createElementVNode("tbody", null, [__props.rows.length === 0 ? (openBlock(), createElementBlock("tr", _hoisted_12, [createElementVNode("td", {
|
|
2244
|
-
class: "astryx-table__empty",
|
|
2245
|
-
colspan: columnCount.value
|
|
2246
|
-
}, [renderSlot(_ctx.$slots, "empty", {}, () => [createTextVNode(toDisplayString(unref(messages).table.noData), 1)])], 8, _hoisted_13)])) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(entries.value, (entry) => {
|
|
2247
|
-
return openBlock(), createElementBlock(Fragment, { key: entry.key }, [createElementVNode("tr", mergeProps({
|
|
2248
|
-
"aria-selected": !entry.patch.group && isSelected(entry.row) ? "true" : void 0,
|
|
2249
|
-
"aria-rowindex": entry.rowIndex,
|
|
2250
|
-
class: entry.patch.class
|
|
2251
|
-
}, { ref_for: true }, entry.patch.attrs, {
|
|
2252
|
-
onClick: ($event) => entry.patch.onClick?.($event),
|
|
2253
|
-
onContextmenu: ($event) => openMenu($event, entry.patch.menu)
|
|
2254
|
-
}), [entry.patch.group ? (openBlock(), createElementBlock("td", {
|
|
2255
|
-
key: 0,
|
|
2256
|
-
class: "astryx-table__group",
|
|
2257
|
-
colspan: columnCount.value
|
|
2258
|
-
}, [createVNode(_sfc_main$10, {
|
|
2259
|
-
"group-key": entry.patch.group.groupKey,
|
|
2260
|
-
count: entry.patch.group.count,
|
|
2261
|
-
collapsed: entry.patch.group.collapsed,
|
|
2262
|
-
custom: entry.patch.group.render != null,
|
|
2263
|
-
onToggle: ($event) => entry.patch.group.onToggle()
|
|
2264
|
-
}, {
|
|
2265
|
-
default: withCtx(() => [entry.patch.group.render ? (openBlock(), createBlock(unref(RenderFn), {
|
|
2266
|
-
key: 0,
|
|
2267
|
-
render: entry.patch.group.render
|
|
2268
|
-
}, null, 8, ["render"])) : createCommentVNode("v-if", true)]),
|
|
2269
|
-
_: 2
|
|
2270
|
-
}, 1032, [
|
|
2271
|
-
"group-key",
|
|
2272
|
-
"count",
|
|
2273
|
-
"collapsed",
|
|
2274
|
-
"custom",
|
|
2275
|
-
"onToggle"
|
|
2276
|
-
])], 8, _hoisted_15)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [selection.value && !entry.patch.suppressSelection ? (openBlock(), createElementBlock("td", mergeProps({
|
|
2277
|
-
key: 0,
|
|
2278
|
-
class: ["astryx-table__select", selectCellPatch("body", entry.row).class]
|
|
2279
|
-
}, { ref_for: true }, selectCellPatch("body", entry.row).attrs, { style: selectCellPatch("body", entry.row).style }), [selection.value.isSelectable?.(entry.row) !== false ? (openBlock(), createBlock(_sfc_main$19, {
|
|
2410
|
+
return openBlock(), createBlock(_sfc_main$9, {
|
|
2411
|
+
class: normalizeClass(unref(attrs).class),
|
|
2412
|
+
style: normalizeStyle(scrollStyle.value),
|
|
2413
|
+
label: __props.label,
|
|
2414
|
+
onViewport
|
|
2415
|
+
}, {
|
|
2416
|
+
default: withCtx(() => [
|
|
2417
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.plugins.filter((item) => item.above), (plugin, index) => {
|
|
2418
|
+
return openBlock(), createBlock(unref(PluginFooter), {
|
|
2419
|
+
key: `above-${index}`,
|
|
2420
|
+
plugin,
|
|
2421
|
+
place: "above"
|
|
2422
|
+
}, null, 8, ["plugin"]);
|
|
2423
|
+
}), 128)),
|
|
2424
|
+
createElementVNode("table", {
|
|
2425
|
+
class: "astryx-table",
|
|
2426
|
+
"data-density": __props.density,
|
|
2427
|
+
"data-dividers": __props.dividers,
|
|
2428
|
+
"data-striped": __props.isStriped || void 0,
|
|
2429
|
+
"data-hover": __props.hasHover || void 0,
|
|
2430
|
+
"data-overflow": __props.textOverflow,
|
|
2431
|
+
"data-valign": __props.verticalAlign,
|
|
2432
|
+
"data-row-highlight": selection.value?.hasRowHighlight === false ? "off" : void 0,
|
|
2433
|
+
"aria-rowcount": ariaRowCount.value,
|
|
2434
|
+
style: normalizeStyle(tableStyle.value)
|
|
2435
|
+
}, [createElementVNode("thead", null, [createElementVNode("tr", null, [selection.value ? (openBlock(), createElementBlock("th", mergeProps({
|
|
2280
2436
|
key: 0,
|
|
2281
|
-
"
|
|
2282
|
-
|
|
2437
|
+
class: ["astryx-table__select", selectCellPatch("header", null).class],
|
|
2438
|
+
scope: "col"
|
|
2439
|
+
}, selectCellPatch("header", null).attrs, { style: selectCellPatch("header", null).style }), [createVNode(_sfc_main$19, {
|
|
2440
|
+
"model-value": selection.value.isIndeterminate() ? "indeterminate" : selection.value.isAllSelected(),
|
|
2441
|
+
label: unref(messages).table.selectAllRows,
|
|
2283
2442
|
"is-label-hidden": "",
|
|
2284
2443
|
size: "sm",
|
|
2285
|
-
"
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
"model-value",
|
|
2289
|
-
"label",
|
|
2290
|
-
"is-disabled",
|
|
2291
|
-
"onUpdate:modelValue"
|
|
2292
|
-
])) : createCommentVNode("v-if", true)], 16)) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(resolvedColumns.value, (column) => {
|
|
2293
|
-
return openBlock(), createElementBlock("td", mergeProps({
|
|
2444
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = (value) => selection.value?.selectAll(value === true))
|
|
2445
|
+
}, null, 8, ["model-value", "label"])], 16)) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(resolvedColumns.value, (column) => {
|
|
2446
|
+
return openBlock(), createElementBlock("th", mergeProps({
|
|
2294
2447
|
key: column.key,
|
|
2448
|
+
scope: "col",
|
|
2295
2449
|
"data-column": column.key,
|
|
2296
2450
|
"data-align": column.align,
|
|
2297
|
-
class: mergeCell(column,
|
|
2298
|
-
}, { ref_for: true }, mergeCell(column,
|
|
2299
|
-
column,
|
|
2300
|
-
|
|
2301
|
-
|
|
2451
|
+
class: mergeCell(column, null, "header").class
|
|
2452
|
+
}, { ref_for: true }, mergeCell(column, null, "header").attrs, {
|
|
2453
|
+
style: headerStyle(column),
|
|
2454
|
+
"aria-sort": sortFor(column)?.direction ?? void 0
|
|
2455
|
+
}), [
|
|
2456
|
+
createElementVNode("div", _hoisted_3, [createElementVNode("div", _hoisted_4, [
|
|
2457
|
+
createVNode(unref(HeaderAddon), {
|
|
2458
|
+
column,
|
|
2459
|
+
plugins: __props.plugins
|
|
2460
|
+
}, null, 8, ["column", "plugins"]),
|
|
2461
|
+
sortFor(column) ? (openBlock(), createElementBlock("button", {
|
|
2462
|
+
key: 0,
|
|
2463
|
+
type: "button",
|
|
2464
|
+
class: "astryx-table__sort",
|
|
2465
|
+
"data-align": column.align,
|
|
2466
|
+
"aria-label": sortFor(column)?.label,
|
|
2467
|
+
onClick: ($event) => sortFor(column)?.onClick($event)
|
|
2468
|
+
}, [
|
|
2469
|
+
column.headerHidden ? (openBlock(), createBlock(_sfc_main$15, { key: 0 }, {
|
|
2470
|
+
default: withCtx(() => [createTextVNode(toDisplayString(column.header ?? column.key), 1)]),
|
|
2471
|
+
_: 2
|
|
2472
|
+
}, 1024)) : (openBlock(), createElementBlock("span", _hoisted_6, toDisplayString(column.header ?? column.key), 1)),
|
|
2473
|
+
createElementVNode("span", {
|
|
2474
|
+
class: "astryx-table__sort-icon",
|
|
2475
|
+
"data-active": sortFor(column)?.direction != null || void 0
|
|
2476
|
+
}, [createVNode(_sfc_main$18, {
|
|
2477
|
+
icon: sortFor(column)?.direction === "descending" ? "arrowDown" : "arrowUp",
|
|
2478
|
+
size: "sm"
|
|
2479
|
+
}, null, 8, ["icon"])], 8, _hoisted_7),
|
|
2480
|
+
sortFor(column)?.rank ? (openBlock(), createElementBlock("span", _hoisted_8, toDisplayString(sortFor(column)?.rank), 1)) : createCommentVNode("v-if", true)
|
|
2481
|
+
], 8, _hoisted_5)) : column.headerHidden ? (openBlock(), createBlock(_sfc_main$15, { key: 1 }, {
|
|
2482
|
+
default: withCtx(() => [createTextVNode(toDisplayString(column.header ?? column.key), 1)]),
|
|
2483
|
+
_: 2
|
|
2484
|
+
}, 1024)) : (openBlock(), createElementBlock("span", _hoisted_9, toDisplayString(column.header ?? column.key), 1)),
|
|
2485
|
+
filterAt(column, "line") ? (openBlock(), createBlock(_sfc_main$12, {
|
|
2486
|
+
key: 3,
|
|
2487
|
+
filter: filterAt(column, "line")
|
|
2488
|
+
}, null, 8, ["filter"])) : createCommentVNode("v-if", true)
|
|
2489
|
+
]), filterAt(column, "below") ? (openBlock(), createBlock(_sfc_main$12, {
|
|
2490
|
+
key: 0,
|
|
2491
|
+
filter: filterAt(column, "below")
|
|
2492
|
+
}, null, 8, ["filter"])) : createCommentVNode("v-if", true)]),
|
|
2493
|
+
createCommentVNode(" eslint-disable-next-line vue-a11y/no-static-element-interactions -- role=\"separator\" 是 WAI-ARIA 的分隔条:自己可聚焦,方向键也归它处理。 "),
|
|
2494
|
+
resizeContributions.value.get(column.key)?.hasHandle ? (openBlock(), createElementBlock("span", {
|
|
2495
|
+
key: 0,
|
|
2496
|
+
class: "astryx-table__resize",
|
|
2497
|
+
role: "separator",
|
|
2498
|
+
"aria-orientation": "vertical",
|
|
2499
|
+
"aria-label": unref(resizeLabel)(column),
|
|
2500
|
+
"aria-valuenow": resizeContributions.value.get(column.key)?.currentWidth ?? resizeContributions.value.get(column.key)?.minWidth,
|
|
2501
|
+
"aria-valuemin": resizeContributions.value.get(column.key)?.minWidth,
|
|
2502
|
+
"aria-valuemax": unref(resizeMax)(resizeContributions.value.get(column.key)),
|
|
2503
|
+
tabindex: "0",
|
|
2504
|
+
onPointerdown: ($event) => unref(startResize)($event, column),
|
|
2505
|
+
onKeydown: ($event) => unref(onResizeKeydown)($event, column)
|
|
2506
|
+
}, null, 40, _hoisted_10)) : createCommentVNode("v-if", true)
|
|
2507
|
+
], 16, _hoisted_2);
|
|
2508
|
+
}), 128))])]), createElementVNode("tbody", null, [__props.rows.length === 0 ? (openBlock(), createElementBlock("tr", _hoisted_11, [createElementVNode("td", {
|
|
2509
|
+
class: "astryx-table__empty",
|
|
2510
|
+
colspan: columnCount.value
|
|
2511
|
+
}, [renderSlot(_ctx.$slots, "empty", {}, () => [createTextVNode(toDisplayString(unref(messages).table.noData), 1)])], 8, _hoisted_12)])) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(entries.value, (entry) => {
|
|
2512
|
+
return openBlock(), createElementBlock(Fragment, { key: entry.key }, [createElementVNode("tr", mergeProps({
|
|
2513
|
+
ref_for: true,
|
|
2514
|
+
ref: entry.ref,
|
|
2515
|
+
"aria-selected": !entry.patch.group && isSelected(entry.row) ? "true" : void 0,
|
|
2516
|
+
"aria-rowindex": entry.rowIndex,
|
|
2517
|
+
class: entry.patch.class
|
|
2518
|
+
}, { ref_for: true }, entry.patch.attrs, {
|
|
2519
|
+
onBlur: ($event) => entry.patch.listeners?.onBlur?.($event),
|
|
2520
|
+
onClick: ($event) => entry.patch.onClick?.($event),
|
|
2521
|
+
onContextmenu: ($event) => openMenu($event, entry.patch.menu),
|
|
2522
|
+
onFocus: ($event) => entry.patch.listeners?.onFocus?.($event),
|
|
2523
|
+
onMouseenter: ($event) => entry.patch.listeners?.onMouseenter?.($event),
|
|
2524
|
+
onMouseleave: ($event) => entry.patch.listeners?.onMouseleave?.($event)
|
|
2525
|
+
}), [entry.patch.group ? (openBlock(), createElementBlock("td", {
|
|
2526
|
+
key: 0,
|
|
2527
|
+
class: "astryx-table__group",
|
|
2528
|
+
colspan: columnCount.value
|
|
2529
|
+
}, [createVNode(_sfc_main$11, {
|
|
2530
|
+
"group-key": entry.patch.group.groupKey,
|
|
2531
|
+
count: entry.patch.group.count,
|
|
2532
|
+
collapsed: entry.patch.group.collapsed,
|
|
2533
|
+
custom: entry.patch.group.render != null,
|
|
2534
|
+
onToggle: ($event) => entry.patch.group.onToggle()
|
|
2535
|
+
}, {
|
|
2536
|
+
default: withCtx(() => [entry.patch.group.render ? (openBlock(), createBlock(unref(RenderFn), {
|
|
2537
|
+
key: 0,
|
|
2538
|
+
render: entry.patch.group.render
|
|
2539
|
+
}, null, 8, ["render"])) : createCommentVNode("v-if", true)]),
|
|
2540
|
+
_: 2
|
|
2541
|
+
}, 1032, [
|
|
2542
|
+
"group-key",
|
|
2543
|
+
"count",
|
|
2544
|
+
"collapsed",
|
|
2545
|
+
"custom",
|
|
2546
|
+
"onToggle"
|
|
2547
|
+
])], 8, _hoisted_14)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [selection.value && !entry.patch.suppressSelection ? (openBlock(), createElementBlock("td", mergeProps({
|
|
2548
|
+
key: 0,
|
|
2549
|
+
class: ["astryx-table__select", selectCellPatch("body", entry.row).class]
|
|
2550
|
+
}, { ref_for: true }, selectCellPatch("body", entry.row).attrs, { style: selectCellPatch("body", entry.row).style }), [selection.value.isSelectable?.(entry.row) !== false ? (openBlock(), createBlock(_sfc_main$19, {
|
|
2551
|
+
key: 0,
|
|
2552
|
+
"model-value": selection.value.isSelected(entry.row),
|
|
2553
|
+
label: selection.value.rowLabel?.(entry.row) ? unref(messages).table.selectRowNamed(selection.value.rowLabel(entry.row)) : unref(messages).table.selectRow,
|
|
2554
|
+
"is-label-hidden": "",
|
|
2555
|
+
size: "sm",
|
|
2556
|
+
"is-disabled": !isEnabled(entry.row),
|
|
2557
|
+
"onUpdate:modelValue": (value) => selection.value?.selectRow(entry.row, value === true)
|
|
2302
2558
|
}, null, 8, [
|
|
2303
|
-
"
|
|
2304
|
-
"
|
|
2305
|
-
"
|
|
2306
|
-
|
|
2307
|
-
|
|
2559
|
+
"model-value",
|
|
2560
|
+
"label",
|
|
2561
|
+
"is-disabled",
|
|
2562
|
+
"onUpdate:modelValue"
|
|
2563
|
+
])) : createCommentVNode("v-if", true)], 16)) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(resolvedColumns.value, (column) => {
|
|
2564
|
+
return openBlock(), createElementBlock("td", mergeProps({
|
|
2565
|
+
key: column.key,
|
|
2566
|
+
"data-column": column.key,
|
|
2567
|
+
"data-align": column.align,
|
|
2568
|
+
class: mergeCell(column, entry.row, "body").class
|
|
2569
|
+
}, { ref_for: true }, mergeCell(column, entry.row, "body").attrs, { style: bodyStyle(column, entry.row) }), [createVNode(unref(CellContent), {
|
|
2570
|
+
column,
|
|
2571
|
+
row: entry.row,
|
|
2572
|
+
index: entry.index
|
|
2573
|
+
}, null, 8, [
|
|
2574
|
+
"column",
|
|
2575
|
+
"row",
|
|
2576
|
+
"index"
|
|
2577
|
+
])], 16, _hoisted_15);
|
|
2578
|
+
}), 128))], 64))], 16, _hoisted_13), entry.patch.panel ? (openBlock(), createElementBlock("tr", {
|
|
2579
|
+
key: 0,
|
|
2580
|
+
"data-expansion-panel": "",
|
|
2581
|
+
class: "astryx-table__panel-row",
|
|
2582
|
+
"data-variant": entry.patch.panel.variant
|
|
2583
|
+
}, [createElementVNode("td", {
|
|
2584
|
+
class: "astryx-table__panel",
|
|
2585
|
+
colspan: columnCount.value
|
|
2586
|
+
}, [createVNode(unref(RenderFn), { render: entry.patch.panel.render }, null, 8, ["render"])], 8, _hoisted_17)], 8, _hoisted_16)) : createCommentVNode("v-if", true)], 64);
|
|
2587
|
+
}), 128))])], 12, _hoisted_1$5),
|
|
2588
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.plugins.filter((item) => item.below), (plugin, index) => {
|
|
2589
|
+
return openBlock(), createBlock(unref(PluginFooter), {
|
|
2590
|
+
key: `below-${index}`,
|
|
2591
|
+
plugin,
|
|
2592
|
+
place: "below"
|
|
2593
|
+
}, null, 8, ["plugin"]);
|
|
2594
|
+
}), 128)),
|
|
2595
|
+
menu.value ? (openBlock(), createBlock(_sfc_main$10, {
|
|
2308
2596
|
key: 0,
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
key: 0,
|
|
2326
|
-
x: menu.value.x,
|
|
2327
|
-
y: menu.value.y,
|
|
2328
|
-
items: menu.value.items,
|
|
2329
|
-
onClose: _cache[1] || (_cache[1] = ($event) => menu.value = null)
|
|
2330
|
-
}, null, 8, [
|
|
2331
|
-
"x",
|
|
2332
|
-
"y",
|
|
2333
|
-
"items"
|
|
2334
|
-
])) : createCommentVNode("v-if", true)]))
|
|
2335
|
-
], 8, _hoisted_1$5);
|
|
2597
|
+
x: menu.value.x,
|
|
2598
|
+
y: menu.value.y,
|
|
2599
|
+
items: menu.value.items,
|
|
2600
|
+
onClose: _cache[1] || (_cache[1] = ($event) => menu.value = null)
|
|
2601
|
+
}, null, 8, [
|
|
2602
|
+
"x",
|
|
2603
|
+
"y",
|
|
2604
|
+
"items"
|
|
2605
|
+
])) : createCommentVNode("v-if", true)
|
|
2606
|
+
]),
|
|
2607
|
+
_: 3
|
|
2608
|
+
}, 8, [
|
|
2609
|
+
"class",
|
|
2610
|
+
"style",
|
|
2611
|
+
"label"
|
|
2612
|
+
]);
|
|
2336
2613
|
};
|
|
2337
2614
|
}
|
|
2338
2615
|
});
|
|
2339
2616
|
//#endregion
|
|
2340
2617
|
//#region src/Table/Table.vue
|
|
2341
|
-
const _hoisted_1$4 = [
|
|
2342
|
-
const _hoisted_2 = [
|
|
2618
|
+
const _hoisted_1$4 = [
|
|
2343
2619
|
"data-density",
|
|
2344
2620
|
"data-dividers",
|
|
2345
2621
|
"data-striped",
|
|
@@ -2386,8 +2662,6 @@ const _sfc_main$7 = /*@__PURE__*/ defineComponent({
|
|
|
2386
2662
|
const plugins = computed(() => Object.values(props.plugins ?? {}).filter((plugin) => plugin != null));
|
|
2387
2663
|
const dataMode = computed(() => props.data != null);
|
|
2388
2664
|
const columns = computed(() => props.columns ?? []);
|
|
2389
|
-
const scrollEl = useTemplateRef("scroll");
|
|
2390
|
-
useScrollbars(scrollEl);
|
|
2391
2665
|
return (_ctx, _cache) => {
|
|
2392
2666
|
return dataMode.value ? (openBlock(), createBlock(_sfc_main$8, {
|
|
2393
2667
|
key: 0,
|
|
@@ -2426,22 +2700,22 @@ const _sfc_main$7 = /*@__PURE__*/ defineComponent({
|
|
|
2426
2700
|
"vertical-align",
|
|
2427
2701
|
"row-index-start",
|
|
2428
2702
|
"row-count"
|
|
2429
|
-
])) : (openBlock(),
|
|
2703
|
+
])) : (openBlock(), createBlock(_sfc_main$9, {
|
|
2430
2704
|
key: 1,
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
"
|
|
2443
|
-
|
|
2444
|
-
},
|
|
2705
|
+
label: __props.label ?? unref(messages).table.label
|
|
2706
|
+
}, {
|
|
2707
|
+
default: withCtx(() => [createElementVNode("table", {
|
|
2708
|
+
class: normalizeClass(["astryx-table", _ctx.$attrs.class]),
|
|
2709
|
+
style: normalizeStyle(_ctx.$attrs.style),
|
|
2710
|
+
"data-density": __props.density,
|
|
2711
|
+
"data-dividers": __props.dividers,
|
|
2712
|
+
"data-striped": __props.isStriped || void 0,
|
|
2713
|
+
"data-hover": __props.hasHover || void 0,
|
|
2714
|
+
"data-overflow": __props.textOverflow,
|
|
2715
|
+
"data-valign": __props.verticalAlign
|
|
2716
|
+
}, [renderSlot(_ctx.$slots, "default")], 14, _hoisted_1$4)]),
|
|
2717
|
+
_: 3
|
|
2718
|
+
}, 8, ["label"]));
|
|
2445
2719
|
};
|
|
2446
2720
|
}
|
|
2447
2721
|
});
|
|
@@ -2586,7 +2860,7 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
|
|
|
2586
2860
|
size: __props.size,
|
|
2587
2861
|
variant: toolbarVariant.value
|
|
2588
2862
|
}, createSlots({
|
|
2589
|
-
end: withCtx(() => [createElementVNode("span", _hoisted_1, [renderSlot(_ctx.$slots, "label", { count: effectiveCount.value }, () => [createTextVNode(toDisplayString(resolvedCountLabel.value), 1)])]), createVNode(_sfc_main$
|
|
2863
|
+
end: withCtx(() => [createElementVNode("span", _hoisted_1, [renderSlot(_ctx.$slots, "label", { count: effectiveCount.value }, () => [createTextVNode(toDisplayString(resolvedCountLabel.value), 1)])]), createVNode(_sfc_main$16, {
|
|
2590
2864
|
class: "astryx-table-selection-toolbar__clear",
|
|
2591
2865
|
label: resolvedClearLabel.value,
|
|
2592
2866
|
size: __props.size,
|