@greypan/web-ui 11.2.0 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.CN.md +79 -68
- package/README.md +81 -72
- package/dist/_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js +8 -0
- package/dist/assets/menu-portal.js +3 -4
- package/dist/assets/menu-portal.js.map +1 -1
- package/dist/assets/modal-surface.js +3 -4
- package/dist/assets/modal-surface.js.map +1 -1
- package/dist/assets/overlay-motion.js +3 -4
- package/dist/assets/overlay-motion.js.map +1 -1
- package/dist/assets/scrollbar.js +5 -0
- package/dist/assets/scrollbar.js.map +1 -0
- package/dist/assets/selection-control.js +3 -4
- package/dist/assets/selection-control.js.map +1 -1
- package/dist/assets/toast-containers.js +3 -4
- package/dist/assets/toast-containers.js.map +1 -1
- package/dist/classes/glass.js +3 -4
- package/dist/classes/glass.js.map +1 -1
- package/dist/classes/glow.js +3 -4
- package/dist/classes/glow.js.map +1 -1
- package/dist/components/autocomplete/index.d.ts +485 -483
- package/dist/components/autocomplete/index.d.ts.map +1 -0
- package/dist/components/autocomplete/index.js +475 -267
- package/dist/components/autocomplete/index.js.map +1 -1
- package/dist/components/autocomplete/style.js +3 -4
- package/dist/components/autocomplete/style.js.map +1 -1
- package/dist/components/avatar/index.d.ts +26 -24
- package/dist/components/avatar/index.d.ts.map +1 -0
- package/dist/components/avatar/index.js +72 -52
- package/dist/components/avatar/index.js.map +1 -1
- package/dist/components/avatar/style.js +3 -4
- package/dist/components/avatar/style.js.map +1 -1
- package/dist/components/back-top/index.d.ts +30 -27
- package/dist/components/back-top/index.d.ts.map +1 -0
- package/dist/components/back-top/index.js +96 -62
- package/dist/components/back-top/index.js.map +1 -1
- package/dist/components/back-top/style.js +3 -4
- package/dist/components/back-top/style.js.map +1 -1
- package/dist/components/badge/index.d.ts +32 -26
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/badge/index.js +116 -74
- package/dist/components/badge/index.js.map +1 -1
- package/dist/components/badge/style.js +3 -4
- package/dist/components/badge/style.js.map +1 -1
- package/dist/components/button/index.d.ts +392 -390
- package/dist/components/button/index.d.ts.map +1 -0
- package/dist/components/button/index.js +108 -74
- package/dist/components/button/index.js.map +1 -1
- package/dist/components/button/style.js +3 -4
- package/dist/components/button/style.js.map +1 -1
- package/dist/components/button-group/index.d.ts +14 -13
- package/dist/components/button-group/index.d.ts.map +1 -0
- package/dist/components/button-group/index.js +43 -33
- package/dist/components/button-group/index.js.map +1 -1
- package/dist/components/button-group/style.js +3 -4
- package/dist/components/button-group/style.js.map +1 -1
- package/dist/components/checkbox/index.d.ts +399 -397
- package/dist/components/checkbox/index.d.ts.map +1 -0
- package/dist/components/checkbox/index.js +103 -74
- package/dist/components/checkbox/index.js.map +1 -1
- package/dist/components/checkbox/style.js +3 -4
- package/dist/components/checkbox/style.js.map +1 -1
- package/dist/components/checkbox-group/index.d.ts +397 -396
- package/dist/components/checkbox-group/index.d.ts.map +1 -0
- package/dist/components/checkbox-group/index.js +92 -70
- package/dist/components/checkbox-group/index.js.map +1 -1
- package/dist/components/checkbox-group/style.js +3 -4
- package/dist/components/checkbox-group/style.js.map +1 -1
- package/dist/components/collapse/index.d.ts +72 -71
- package/dist/components/collapse/index.d.ts.map +1 -0
- package/dist/components/collapse/index.js +225 -130
- package/dist/components/collapse/index.js.map +1 -1
- package/dist/components/collapse/style.js +3 -4
- package/dist/components/collapse/style.js.map +1 -1
- package/dist/components/context-menu/index.d.ts +307 -310
- package/dist/components/context-menu/index.d.ts.map +1 -0
- package/dist/components/context-menu/index.js +685 -270
- package/dist/components/context-menu/index.js.map +1 -1
- package/dist/components/context-menu/scrim.js +3 -4
- package/dist/components/context-menu/scrim.js.map +1 -1
- package/dist/components/context-menu/style.js +3 -4
- package/dist/components/context-menu/style.js.map +1 -1
- package/dist/components/dialog/index.d.ts +87 -78
- package/dist/components/dialog/index.d.ts.map +1 -0
- package/dist/components/dialog/index.js +183 -88
- package/dist/components/dialog/index.js.map +1 -1
- package/dist/components/dialog/style.js +3 -4
- package/dist/components/dialog/style.js.map +1 -1
- package/dist/components/drawer/index.d.ts +159 -150
- package/dist/components/drawer/index.d.ts.map +1 -0
- package/dist/components/drawer/index.js +503 -242
- package/dist/components/drawer/index.js.map +1 -1
- package/dist/components/drawer/style.js +3 -4
- package/dist/components/drawer/style.js.map +1 -1
- package/dist/components/dropdown/index.d.ts +125 -124
- package/dist/components/dropdown/index.d.ts.map +1 -0
- package/dist/components/dropdown/index.js +556 -328
- package/dist/components/dropdown/index.js.map +1 -1
- package/dist/components/dropdown/style.js +3 -4
- package/dist/components/dropdown/style.js.map +1 -1
- package/dist/components/dropdown-divider/index.d.ts +7 -6
- package/dist/components/dropdown-divider/index.d.ts.map +1 -0
- package/dist/components/dropdown-divider/index.js +10 -11
- package/dist/components/dropdown-divider/index.js.map +1 -1
- package/dist/components/dropdown-divider/style.js +3 -4
- package/dist/components/dropdown-divider/style.js.map +1 -1
- package/dist/components/dropdown-header/index.d.ts +7 -6
- package/dist/components/dropdown-header/index.d.ts.map +1 -0
- package/dist/components/dropdown-header/index.js +10 -11
- package/dist/components/dropdown-header/index.js.map +1 -1
- package/dist/components/dropdown-header/style.js +3 -4
- package/dist/components/dropdown-header/style.js.map +1 -1
- package/dist/components/dropdown-item/index.d.ts +13 -11
- package/dist/components/dropdown-item/index.d.ts.map +1 -0
- package/dist/components/dropdown-item/index.js +32 -25
- package/dist/components/dropdown-item/index.js.map +1 -1
- package/dist/components/dropdown-item/style.js +3 -4
- package/dist/components/dropdown-item/style.js.map +1 -1
- package/dist/components/editable-text/index.d.ts +506 -505
- package/dist/components/editable-text/index.d.ts.map +1 -0
- package/dist/components/editable-text/index.js +281 -127
- package/dist/components/editable-text/index.js.map +1 -1
- package/dist/components/editable-text/style.js +3 -4
- package/dist/components/editable-text/style.js.map +1 -1
- package/dist/components/empty/index.d.ts +17 -15
- package/dist/components/empty/index.d.ts.map +1 -0
- package/dist/components/empty/index.js +66 -37
- package/dist/components/empty/index.js.map +1 -1
- package/dist/components/empty/style.js +3 -4
- package/dist/components/empty/style.js.map +1 -1
- package/dist/components/icon/index.d.ts +12 -11
- package/dist/components/icon/index.d.ts.map +1 -0
- package/dist/components/icon/index.js +34 -27
- package/dist/components/icon/index.js.map +1 -1
- package/dist/components/icon/style.js +3 -4
- package/dist/components/icon/style.js.map +1 -1
- package/dist/components/image-preview/index.d.ts +58 -44
- package/dist/components/image-preview/index.d.ts.map +1 -0
- package/dist/components/image-preview/index.js +536 -265
- package/dist/components/image-preview/index.js.map +1 -1
- package/dist/components/image-preview/style.js +3 -4
- package/dist/components/image-preview/style.js.map +1 -1
- package/dist/components/index.d.ts +46 -43
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +41 -41
- package/dist/components/input/index.d.ts +418 -413
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/input/index.js +148 -84
- package/dist/components/input/index.js.map +1 -1
- package/dist/components/input/style.js +3 -4
- package/dist/components/input/style.js.map +1 -1
- package/dist/components/input-number/index.d.ts +453 -447
- package/dist/components/input-number/index.d.ts.map +1 -0
- package/dist/components/input-number/index.js +484 -292
- package/dist/components/input-number/index.js.map +1 -1
- package/dist/components/input-number/style.js +3 -4
- package/dist/components/input-number/style.js.map +1 -1
- package/dist/components/layout/index.d.ts +110 -87
- package/dist/components/layout/index.d.ts.map +1 -0
- package/dist/components/layout/index.js +238 -144
- package/dist/components/layout/index.js.map +1 -1
- package/dist/components/layout/style.js +3 -4
- package/dist/components/layout/style.js.map +1 -1
- package/dist/components/middle-ellipsis/index.d.ts +93 -92
- package/dist/components/middle-ellipsis/index.d.ts.map +1 -0
- package/dist/components/middle-ellipsis/index.js +261 -107
- package/dist/components/middle-ellipsis/index.js.map +1 -1
- package/dist/components/middle-ellipsis/style.js +3 -4
- package/dist/components/middle-ellipsis/style.js.map +1 -1
- package/dist/components/middle-ellipsis/truncate.js +60 -30
- package/dist/components/middle-ellipsis/truncate.js.map +1 -1
- package/dist/components/option/index.d.ts +20 -18
- package/dist/components/option/index.d.ts.map +1 -0
- package/dist/components/option/index.js +53 -40
- package/dist/components/option/index.js.map +1 -1
- package/dist/components/option/style.js +3 -4
- package/dist/components/option/style.js.map +1 -1
- package/dist/components/popover/index.d.ts +69 -68
- package/dist/components/popover/index.d.ts.map +1 -0
- package/dist/components/popover/index.js +221 -104
- package/dist/components/popover/index.js.map +1 -1
- package/dist/components/popover/style.js +3 -4
- package/dist/components/popover/style.js.map +1 -1
- package/dist/components/radio/index.d.ts +396 -395
- package/dist/components/radio/index.d.ts.map +1 -0
- package/dist/components/radio/index.js +91 -62
- package/dist/components/radio/index.js.map +1 -1
- package/dist/components/radio/interaction.js +10 -11
- package/dist/components/radio/interaction.js.map +1 -1
- package/dist/components/radio/style.js +3 -4
- package/dist/components/radio/style.js.map +1 -1
- package/dist/components/radio-group/index.d.ts +417 -416
- package/dist/components/radio-group/index.d.ts.map +1 -0
- package/dist/components/radio-group/index.js +307 -207
- package/dist/components/radio-group/index.js.map +1 -1
- package/dist/components/radio-group/style.js +3 -4
- package/dist/components/radio-group/style.js.map +1 -1
- package/dist/components/segmented/index.d.ts +408 -402
- package/dist/components/segmented/index.d.ts.map +1 -0
- package/dist/components/segmented/index.js +267 -158
- package/dist/components/segmented/index.js.map +1 -1
- package/dist/components/segmented/style.js +3 -4
- package/dist/components/segmented/style.js.map +1 -1
- package/dist/components/segmented-trigger/index.d.ts +18 -17
- package/dist/components/segmented-trigger/index.d.ts.map +1 -0
- package/dist/components/segmented-trigger/index.js +45 -36
- package/dist/components/segmented-trigger/index.js.map +1 -1
- package/dist/components/segmented-trigger/style.js +3 -4
- package/dist/components/segmented-trigger/style.js.map +1 -1
- package/dist/components/select/index.d.ts +450 -448
- package/dist/components/select/index.d.ts.map +1 -0
- package/dist/components/select/index.js +342 -188
- package/dist/components/select/index.js.map +1 -1
- package/dist/components/select/style.js +3 -4
- package/dist/components/select/style.js.map +1 -1
- package/dist/components/slider/index.d.ts +428 -427
- package/dist/components/slider/index.d.ts.map +1 -0
- package/dist/components/slider/index.js +308 -216
- package/dist/components/slider/index.js.map +1 -1
- package/dist/components/slider/style.js +3 -4
- package/dist/components/slider/style.js.map +1 -1
- package/dist/components/spinner/index.d.ts +39 -38
- package/dist/components/spinner/index.d.ts.map +1 -0
- package/dist/components/spinner/index.js +118 -65
- package/dist/components/spinner/index.js.map +1 -1
- package/dist/components/spinner/style.js +3 -4
- package/dist/components/spinner/style.js.map +1 -1
- package/dist/components/svg-draw-lines/index.d.ts +40 -39
- package/dist/components/svg-draw-lines/index.d.ts.map +1 -0
- package/dist/components/svg-draw-lines/index.js +189 -106
- package/dist/components/svg-draw-lines/index.js.map +1 -1
- package/dist/components/svg-draw-lines/style.js +3 -4
- package/dist/components/svg-draw-lines/style.js.map +1 -1
- package/dist/components/switch/index.d.ts +411 -409
- package/dist/components/switch/index.d.ts.map +1 -0
- package/dist/components/switch/index.js +193 -106
- package/dist/components/switch/index.js.map +1 -1
- package/dist/components/switch/style.js +3 -4
- package/dist/components/switch/style.js.map +1 -1
- package/dist/components/textarea/index.d.ts +430 -425
- package/dist/components/textarea/index.d.ts.map +1 -0
- package/dist/components/textarea/index.js +187 -100
- package/dist/components/textarea/index.js.map +1 -1
- package/dist/components/textarea/style.js +3 -4
- package/dist/components/textarea/style.js.map +1 -1
- package/dist/components/theme/index.d.ts +45 -44
- package/dist/components/theme/index.d.ts.map +1 -0
- package/dist/components/theme/index.js +268 -161
- package/dist/components/theme/index.js.map +1 -1
- package/dist/components/theme/style.js +3 -4
- package/dist/components/theme/style.js.map +1 -1
- package/dist/components/toast/index.d.ts +4 -3
- package/dist/components/toast/index.js +3 -3
- package/dist/components/toast/manager.d.ts +9 -8
- package/dist/components/toast/manager.d.ts.map +1 -0
- package/dist/components/toast/manager.js +215 -119
- package/dist/components/toast/manager.js.map +1 -1
- package/dist/components/toast/style.js +3 -4
- package/dist/components/toast/style.js.map +1 -1
- package/dist/components/toast/toast.d.ts +75 -71
- package/dist/components/toast/toast.d.ts.map +1 -0
- package/dist/components/toast/toast.js +203 -96
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/toast/types.d.ts +10 -9
- package/dist/components/toast/types.d.ts.map +1 -0
- package/dist/components/tooltip/index.d.ts +72 -62
- package/dist/components/tooltip/index.d.ts.map +1 -0
- package/dist/components/tooltip/index.js +251 -93
- package/dist/components/tooltip/index.js.map +1 -1
- package/dist/components/tooltip/style.js +3 -4
- package/dist/components/tooltip/style.js.map +1 -1
- package/dist/icons/generated/akar-icons-check.d.ts +5 -4
- package/dist/icons/generated/akar-icons-check.d.ts.map +1 -0
- package/dist/icons/generated/akar-icons-check.js +3 -4
- package/dist/icons/generated/akar-icons-check.js.map +1 -1
- package/dist/icons/generated/akar-icons-circle-check.d.ts +5 -4
- package/dist/icons/generated/akar-icons-circle-check.d.ts.map +1 -0
- package/dist/icons/generated/akar-icons-circle-check.js +3 -4
- package/dist/icons/generated/akar-icons-circle-check.js.map +1 -1
- package/dist/icons/generated/andrsrxn-inbox.d.ts +5 -4
- package/dist/icons/generated/andrsrxn-inbox.d.ts.map +1 -0
- package/dist/icons/generated/andrsrxn-inbox.js +3 -4
- package/dist/icons/generated/andrsrxn-inbox.js.map +1 -1
- package/dist/icons/generated/bi-check-lg.d.ts +5 -4
- package/dist/icons/generated/bi-check-lg.d.ts.map +1 -0
- package/dist/icons/generated/bi-check-lg.js +3 -4
- package/dist/icons/generated/bi-check-lg.js.map +1 -1
- package/dist/icons/generated/bi-check.d.ts +5 -4
- package/dist/icons/generated/bi-check.d.ts.map +1 -0
- package/dist/icons/generated/bi-check.js +3 -4
- package/dist/icons/generated/bi-check.js.map +1 -1
- package/dist/icons/generated/fluent-tag-search-24-regular.d.ts +5 -4
- package/dist/icons/generated/fluent-tag-search-24-regular.d.ts.map +1 -0
- package/dist/icons/generated/fluent-tag-search-24-regular.js +3 -4
- package/dist/icons/generated/fluent-tag-search-24-regular.js.map +1 -1
- package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.d.ts +5 -4
- package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.d.ts.map +1 -0
- package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.js +3 -4
- package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.js.map +1 -1
- package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.d.ts +5 -4
- package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.d.ts.map +1 -0
- package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.js +3 -4
- package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.js.map +1 -1
- package/dist/icons/generated/heroicons-check-16-solid.d.ts +5 -4
- package/dist/icons/generated/heroicons-check-16-solid.d.ts.map +1 -0
- package/dist/icons/generated/heroicons-check-16-solid.js +3 -4
- package/dist/icons/generated/heroicons-check-16-solid.js.map +1 -1
- package/dist/icons/generated/heroicons-x-mark-16-solid.d.ts +5 -4
- package/dist/icons/generated/heroicons-x-mark-16-solid.d.ts.map +1 -0
- package/dist/icons/generated/heroicons-x-mark-16-solid.js +3 -4
- package/dist/icons/generated/heroicons-x-mark-16-solid.js.map +1 -1
- package/dist/icons/generated/jam-close-circle-f.d.ts +7 -6
- package/dist/icons/generated/jam-close-circle-f.d.ts.map +1 -0
- package/dist/icons/generated/jam-close-circle-f.js +3 -4
- package/dist/icons/generated/jam-close-circle-f.js.map +1 -1
- package/dist/icons/generated/lucide-arrow-down-to-line.d.ts +5 -4
- package/dist/icons/generated/lucide-arrow-down-to-line.d.ts.map +1 -0
- package/dist/icons/generated/lucide-arrow-down-to-line.js +3 -4
- package/dist/icons/generated/lucide-arrow-down-to-line.js.map +1 -1
- package/dist/icons/generated/lucide-arrow-up-to-line.d.ts +5 -4
- package/dist/icons/generated/lucide-arrow-up-to-line.d.ts.map +1 -0
- package/dist/icons/generated/lucide-arrow-up-to-line.js +3 -4
- package/dist/icons/generated/lucide-arrow-up-to-line.js.map +1 -1
- package/dist/icons/generated/lucide-bell.d.ts +5 -4
- package/dist/icons/generated/lucide-bell.d.ts.map +1 -0
- package/dist/icons/generated/lucide-bell.js +3 -4
- package/dist/icons/generated/lucide-bell.js.map +1 -1
- package/dist/icons/generated/lucide-check.d.ts +5 -4
- package/dist/icons/generated/lucide-check.d.ts.map +1 -0
- package/dist/icons/generated/lucide-check.js +3 -4
- package/dist/icons/generated/lucide-check.js.map +1 -1
- package/dist/icons/generated/lucide-chevron-down.d.ts +5 -4
- package/dist/icons/generated/lucide-chevron-down.d.ts.map +1 -0
- package/dist/icons/generated/lucide-chevron-down.js +3 -4
- package/dist/icons/generated/lucide-chevron-down.js.map +1 -1
- package/dist/icons/generated/lucide-chevron-left.d.ts +5 -4
- package/dist/icons/generated/lucide-chevron-left.d.ts.map +1 -0
- package/dist/icons/generated/lucide-chevron-left.js +3 -4
- package/dist/icons/generated/lucide-chevron-left.js.map +1 -1
- package/dist/icons/generated/lucide-chevron-right.d.ts +5 -4
- package/dist/icons/generated/lucide-chevron-right.d.ts.map +1 -0
- package/dist/icons/generated/lucide-chevron-right.js +3 -4
- package/dist/icons/generated/lucide-chevron-right.js.map +1 -1
- package/dist/icons/generated/lucide-chevron-up.d.ts +5 -4
- package/dist/icons/generated/lucide-chevron-up.d.ts.map +1 -0
- package/dist/icons/generated/lucide-chevron-up.js +3 -4
- package/dist/icons/generated/lucide-chevron-up.js.map +1 -1
- package/dist/icons/generated/lucide-circle-alert.d.ts +5 -4
- package/dist/icons/generated/lucide-circle-alert.d.ts.map +1 -0
- package/dist/icons/generated/lucide-circle-alert.js +3 -4
- package/dist/icons/generated/lucide-circle-alert.js.map +1 -1
- package/dist/icons/generated/lucide-clapperboard.d.ts +5 -4
- package/dist/icons/generated/lucide-clapperboard.d.ts.map +1 -0
- package/dist/icons/generated/lucide-clapperboard.js +3 -4
- package/dist/icons/generated/lucide-clapperboard.js.map +1 -1
- package/dist/icons/generated/lucide-clipboard-paste.d.ts +5 -4
- package/dist/icons/generated/lucide-clipboard-paste.d.ts.map +1 -0
- package/dist/icons/generated/lucide-clipboard-paste.js +3 -4
- package/dist/icons/generated/lucide-clipboard-paste.js.map +1 -1
- package/dist/icons/generated/lucide-code.d.ts +5 -4
- package/dist/icons/generated/lucide-code.d.ts.map +1 -0
- package/dist/icons/generated/lucide-code.js +3 -4
- package/dist/icons/generated/lucide-code.js.map +1 -1
- package/dist/icons/generated/lucide-copy.d.ts +5 -4
- package/dist/icons/generated/lucide-copy.d.ts.map +1 -0
- package/dist/icons/generated/lucide-copy.js +3 -4
- package/dist/icons/generated/lucide-copy.js.map +1 -1
- package/dist/icons/generated/lucide-download.d.ts +5 -4
- package/dist/icons/generated/lucide-download.d.ts.map +1 -0
- package/dist/icons/generated/lucide-download.js +3 -4
- package/dist/icons/generated/lucide-download.js.map +1 -1
- package/dist/icons/generated/lucide-ellipsis-vertical.d.ts +5 -4
- package/dist/icons/generated/lucide-ellipsis-vertical.d.ts.map +1 -0
- package/dist/icons/generated/lucide-ellipsis-vertical.js +3 -4
- package/dist/icons/generated/lucide-ellipsis-vertical.js.map +1 -1
- package/dist/icons/generated/lucide-external-link.d.ts +5 -4
- package/dist/icons/generated/lucide-external-link.d.ts.map +1 -0
- package/dist/icons/generated/lucide-external-link.js +3 -4
- package/dist/icons/generated/lucide-external-link.js.map +1 -1
- package/dist/icons/generated/lucide-eye.d.ts +5 -4
- package/dist/icons/generated/lucide-eye.d.ts.map +1 -0
- package/dist/icons/generated/lucide-eye.js +3 -4
- package/dist/icons/generated/lucide-eye.js.map +1 -1
- package/dist/icons/generated/lucide-file-text.d.ts +5 -4
- package/dist/icons/generated/lucide-file-text.d.ts.map +1 -0
- package/dist/icons/generated/lucide-file-text.js +3 -4
- package/dist/icons/generated/lucide-file-text.js.map +1 -1
- package/dist/icons/generated/lucide-file.d.ts +5 -4
- package/dist/icons/generated/lucide-file.d.ts.map +1 -0
- package/dist/icons/generated/lucide-file.js +3 -4
- package/dist/icons/generated/lucide-file.js.map +1 -1
- package/dist/icons/generated/lucide-film.d.ts +5 -4
- package/dist/icons/generated/lucide-film.d.ts.map +1 -0
- package/dist/icons/generated/lucide-film.js +3 -4
- package/dist/icons/generated/lucide-film.js.map +1 -1
- package/dist/icons/generated/lucide-folder-open.d.ts +5 -4
- package/dist/icons/generated/lucide-folder-open.d.ts.map +1 -0
- package/dist/icons/generated/lucide-folder-open.js +3 -4
- package/dist/icons/generated/lucide-folder-open.js.map +1 -1
- package/dist/icons/generated/lucide-folder.d.ts +5 -4
- package/dist/icons/generated/lucide-folder.d.ts.map +1 -0
- package/dist/icons/generated/lucide-folder.js +3 -4
- package/dist/icons/generated/lucide-folder.js.map +1 -1
- package/dist/icons/generated/lucide-globe.d.ts +5 -4
- package/dist/icons/generated/lucide-globe.d.ts.map +1 -0
- package/dist/icons/generated/lucide-globe.js +3 -4
- package/dist/icons/generated/lucide-globe.js.map +1 -1
- package/dist/icons/generated/lucide-headphones.d.ts +5 -4
- package/dist/icons/generated/lucide-headphones.d.ts.map +1 -0
- package/dist/icons/generated/lucide-headphones.js +3 -4
- package/dist/icons/generated/lucide-headphones.js.map +1 -1
- package/dist/icons/generated/lucide-heart.d.ts +5 -4
- package/dist/icons/generated/lucide-heart.d.ts.map +1 -0
- package/dist/icons/generated/lucide-heart.js +3 -4
- package/dist/icons/generated/lucide-heart.js.map +1 -1
- package/dist/icons/generated/lucide-image.d.ts +5 -4
- package/dist/icons/generated/lucide-image.d.ts.map +1 -0
- package/dist/icons/generated/lucide-image.js +3 -4
- package/dist/icons/generated/lucide-image.js.map +1 -1
- package/dist/icons/generated/lucide-inbox.d.ts +5 -4
- package/dist/icons/generated/lucide-inbox.d.ts.map +1 -0
- package/dist/icons/generated/lucide-inbox.js +3 -4
- package/dist/icons/generated/lucide-inbox.js.map +1 -1
- package/dist/icons/generated/lucide-info.d.ts +5 -4
- package/dist/icons/generated/lucide-info.d.ts.map +1 -0
- package/dist/icons/generated/lucide-info.js +3 -4
- package/dist/icons/generated/lucide-info.js.map +1 -1
- package/dist/icons/generated/lucide-layout-grid.d.ts +5 -4
- package/dist/icons/generated/lucide-layout-grid.d.ts.map +1 -0
- package/dist/icons/generated/lucide-layout-grid.js +3 -4
- package/dist/icons/generated/lucide-layout-grid.js.map +1 -1
- package/dist/icons/generated/lucide-link.d.ts +5 -4
- package/dist/icons/generated/lucide-link.d.ts.map +1 -0
- package/dist/icons/generated/lucide-link.js +3 -4
- package/dist/icons/generated/lucide-link.js.map +1 -1
- package/dist/icons/generated/lucide-list-filter.d.ts +5 -4
- package/dist/icons/generated/lucide-list-filter.d.ts.map +1 -0
- package/dist/icons/generated/lucide-list-filter.js +3 -4
- package/dist/icons/generated/lucide-list-filter.js.map +1 -1
- package/dist/icons/generated/lucide-list-restart.d.ts +5 -4
- package/dist/icons/generated/lucide-list-restart.d.ts.map +1 -0
- package/dist/icons/generated/lucide-list-restart.js +3 -4
- package/dist/icons/generated/lucide-list-restart.js.map +1 -1
- package/dist/icons/generated/lucide-loader-circle.d.ts +5 -4
- package/dist/icons/generated/lucide-loader-circle.d.ts.map +1 -0
- package/dist/icons/generated/lucide-loader-circle.js +3 -4
- package/dist/icons/generated/lucide-loader-circle.js.map +1 -1
- package/dist/icons/generated/lucide-mail.d.ts +5 -4
- package/dist/icons/generated/lucide-mail.d.ts.map +1 -0
- package/dist/icons/generated/lucide-mail.js +3 -4
- package/dist/icons/generated/lucide-mail.js.map +1 -1
- package/dist/icons/generated/lucide-minus.d.ts +5 -4
- package/dist/icons/generated/lucide-minus.d.ts.map +1 -0
- package/dist/icons/generated/lucide-minus.js +3 -4
- package/dist/icons/generated/lucide-minus.js.map +1 -1
- package/dist/icons/generated/lucide-music.d.ts +5 -4
- package/dist/icons/generated/lucide-music.d.ts.map +1 -0
- package/dist/icons/generated/lucide-music.js +3 -4
- package/dist/icons/generated/lucide-music.js.map +1 -1
- package/dist/icons/generated/lucide-package.d.ts +5 -4
- package/dist/icons/generated/lucide-package.d.ts.map +1 -0
- package/dist/icons/generated/lucide-package.js +3 -4
- package/dist/icons/generated/lucide-package.js.map +1 -1
- package/dist/icons/generated/lucide-pen-line.d.ts +5 -4
- package/dist/icons/generated/lucide-pen-line.d.ts.map +1 -0
- package/dist/icons/generated/lucide-pen-line.js +3 -4
- package/dist/icons/generated/lucide-pen-line.js.map +1 -1
- package/dist/icons/generated/lucide-pencil.d.ts +5 -4
- package/dist/icons/generated/lucide-pencil.d.ts.map +1 -0
- package/dist/icons/generated/lucide-pencil.js +3 -4
- package/dist/icons/generated/lucide-pencil.js.map +1 -1
- package/dist/icons/generated/lucide-play.d.ts +5 -4
- package/dist/icons/generated/lucide-play.d.ts.map +1 -0
- package/dist/icons/generated/lucide-play.js +3 -4
- package/dist/icons/generated/lucide-play.js.map +1 -1
- package/dist/icons/generated/lucide-plus.d.ts +5 -4
- package/dist/icons/generated/lucide-plus.d.ts.map +1 -0
- package/dist/icons/generated/lucide-plus.js +3 -4
- package/dist/icons/generated/lucide-plus.js.map +1 -1
- package/dist/icons/generated/lucide-printer.d.ts +5 -4
- package/dist/icons/generated/lucide-printer.d.ts.map +1 -0
- package/dist/icons/generated/lucide-printer.js +3 -4
- package/dist/icons/generated/lucide-printer.js.map +1 -1
- package/dist/icons/generated/lucide-redo-2.d.ts +5 -4
- package/dist/icons/generated/lucide-redo-2.d.ts.map +1 -0
- package/dist/icons/generated/lucide-redo-2.js +3 -4
- package/dist/icons/generated/lucide-redo-2.js.map +1 -1
- package/dist/icons/generated/lucide-refresh-cw.d.ts +5 -4
- package/dist/icons/generated/lucide-refresh-cw.d.ts.map +1 -0
- package/dist/icons/generated/lucide-refresh-cw.js +3 -4
- package/dist/icons/generated/lucide-refresh-cw.js.map +1 -1
- package/dist/icons/generated/lucide-scissors.d.ts +5 -4
- package/dist/icons/generated/lucide-scissors.d.ts.map +1 -0
- package/dist/icons/generated/lucide-scissors.js +3 -4
- package/dist/icons/generated/lucide-scissors.js.map +1 -1
- package/dist/icons/generated/lucide-search.d.ts +5 -4
- package/dist/icons/generated/lucide-search.d.ts.map +1 -0
- package/dist/icons/generated/lucide-search.js +3 -4
- package/dist/icons/generated/lucide-search.js.map +1 -1
- package/dist/icons/generated/lucide-settings.d.ts +5 -4
- package/dist/icons/generated/lucide-settings.d.ts.map +1 -0
- package/dist/icons/generated/lucide-settings.js +3 -4
- package/dist/icons/generated/lucide-settings.js.map +1 -1
- package/dist/icons/generated/lucide-sliders-horizontal.d.ts +5 -4
- package/dist/icons/generated/lucide-sliders-horizontal.d.ts.map +1 -0
- package/dist/icons/generated/lucide-sliders-horizontal.js +3 -4
- package/dist/icons/generated/lucide-sliders-horizontal.js.map +1 -1
- package/dist/icons/generated/lucide-star.d.ts +5 -4
- package/dist/icons/generated/lucide-star.d.ts.map +1 -0
- package/dist/icons/generated/lucide-star.js +3 -4
- package/dist/icons/generated/lucide-star.js.map +1 -1
- package/dist/icons/generated/lucide-tag.d.ts +5 -4
- package/dist/icons/generated/lucide-tag.d.ts.map +1 -0
- package/dist/icons/generated/lucide-tag.js +3 -4
- package/dist/icons/generated/lucide-tag.js.map +1 -1
- package/dist/icons/generated/lucide-tags.d.ts +5 -4
- package/dist/icons/generated/lucide-tags.d.ts.map +1 -0
- package/dist/icons/generated/lucide-tags.js +3 -4
- package/dist/icons/generated/lucide-tags.js.map +1 -1
- package/dist/icons/generated/lucide-trash-2.d.ts +5 -4
- package/dist/icons/generated/lucide-trash-2.d.ts.map +1 -0
- package/dist/icons/generated/lucide-trash-2.js +3 -4
- package/dist/icons/generated/lucide-trash-2.js.map +1 -1
- package/dist/icons/generated/lucide-triangle-alert.d.ts +5 -4
- package/dist/icons/generated/lucide-triangle-alert.d.ts.map +1 -0
- package/dist/icons/generated/lucide-triangle-alert.js +3 -4
- package/dist/icons/generated/lucide-triangle-alert.js.map +1 -1
- package/dist/icons/generated/lucide-undo-2.d.ts +5 -4
- package/dist/icons/generated/lucide-undo-2.d.ts.map +1 -0
- package/dist/icons/generated/lucide-undo-2.js +3 -4
- package/dist/icons/generated/lucide-undo-2.js.map +1 -1
- package/dist/icons/generated/lucide-upload.d.ts +5 -4
- package/dist/icons/generated/lucide-upload.d.ts.map +1 -0
- package/dist/icons/generated/lucide-upload.js +3 -4
- package/dist/icons/generated/lucide-upload.js.map +1 -1
- package/dist/icons/generated/lucide-user.d.ts +5 -4
- package/dist/icons/generated/lucide-user.d.ts.map +1 -0
- package/dist/icons/generated/lucide-user.js +3 -4
- package/dist/icons/generated/lucide-user.js.map +1 -1
- package/dist/icons/generated/lucide-wrench.d.ts +5 -4
- package/dist/icons/generated/lucide-wrench.d.ts.map +1 -0
- package/dist/icons/generated/lucide-wrench.js +3 -4
- package/dist/icons/generated/lucide-wrench.js.map +1 -1
- package/dist/icons/generated/lucide-x.d.ts +5 -4
- package/dist/icons/generated/lucide-x.d.ts.map +1 -0
- package/dist/icons/generated/lucide-x.js +3 -4
- package/dist/icons/generated/lucide-x.js.map +1 -1
- package/dist/icons/generated/mdi-tag-search-outline.d.ts +5 -4
- package/dist/icons/generated/mdi-tag-search-outline.d.ts.map +1 -0
- package/dist/icons/generated/mdi-tag-search-outline.js +3 -4
- package/dist/icons/generated/mdi-tag-search-outline.js.map +1 -1
- package/dist/icons/generated/ooui-close.d.ts +5 -4
- package/dist/icons/generated/ooui-close.d.ts.map +1 -0
- package/dist/icons/generated/ooui-close.js +3 -4
- package/dist/icons/generated/ooui-close.js.map +1 -1
- package/dist/icons/generated/radix-icons-panel-left-minimized.d.ts +5 -4
- package/dist/icons/generated/radix-icons-panel-left-minimized.d.ts.map +1 -0
- package/dist/icons/generated/radix-icons-panel-left-minimized.js +3 -4
- package/dist/icons/generated/radix-icons-panel-left-minimized.js.map +1 -1
- package/dist/icons/generated/radix-icons-reset.d.ts +5 -4
- package/dist/icons/generated/radix-icons-reset.d.ts.map +1 -0
- package/dist/icons/generated/radix-icons-reset.js +3 -4
- package/dist/icons/generated/radix-icons-reset.js.map +1 -1
- package/dist/icons/generated/tabler-sort-ascending-letters.d.ts +5 -4
- package/dist/icons/generated/tabler-sort-ascending-letters.d.ts.map +1 -0
- package/dist/icons/generated/tabler-sort-ascending-letters.js +3 -4
- package/dist/icons/generated/tabler-sort-ascending-letters.js.map +1 -1
- package/dist/icons/index.d.ts +75 -74
- package/dist/icons/index.js +75 -75
- package/dist/shared/element-height/index.js +51 -25
- package/dist/shared/element-height/index.js.map +1 -1
- package/dist/shared/element-width/index.js +39 -24
- package/dist/shared/element-width/index.js.map +1 -1
- package/dist/shared/events/user-change.js +14 -8
- package/dist/shared/events/user-change.js.map +1 -1
- package/dist/shared/focus/pointer-focus.js +56 -30
- package/dist/shared/focus/pointer-focus.js.map +1 -1
- package/dist/shared/focus/tabbable.js +96 -0
- package/dist/shared/focus/tabbable.js.map +1 -0
- package/dist/shared/form-association/field-id.js +13 -6
- package/dist/shared/form-association/field-id.js.map +1 -1
- package/dist/shared/form-association/index.js +75 -42
- package/dist/shared/form-association/index.js.map +1 -1
- package/dist/shared/gesture/drag-gesture.js +239 -99
- package/dist/shared/gesture/drag-gesture.js.map +1 -1
- package/dist/shared/gesture/physics.js +49 -16
- package/dist/shared/gesture/physics.js.map +1 -1
- package/dist/shared/gesture/pinch-gesture.js +111 -60
- package/dist/shared/gesture/pinch-gesture.js.map +1 -1
- package/dist/shared/group-management/index.js +181 -84
- package/dist/shared/group-management/index.js.map +1 -1
- package/dist/shared/label-emptiness/index.js +45 -26
- package/dist/shared/label-emptiness/index.js.map +1 -1
- package/dist/shared/locale/builtin-labels.js +38 -0
- package/dist/shared/locale/builtin-labels.js.map +1 -0
- package/dist/shared/menu-behavior/index.js +113 -60
- package/dist/shared/menu-behavior/index.js.map +1 -1
- package/dist/shared/menu-portal/menu-portal.js +47 -26
- package/dist/shared/menu-portal/menu-portal.js.map +1 -1
- package/dist/shared/menu-portal/menu-tree.js +132 -75
- package/dist/shared/menu-portal/menu-tree.js.map +1 -1
- package/dist/shared/normalize/index.js +16 -7
- package/dist/shared/normalize/index.js.map +1 -1
- package/dist/shared/open-state/index.js +7 -8
- package/dist/shared/open-state/index.js.map +1 -1
- package/dist/shared/option-portal/combobox-shell.js +121 -56
- package/dist/shared/option-portal/combobox-shell.js.map +1 -1
- package/dist/shared/option-portal/index.js +65 -44
- package/dist/shared/option-portal/index.js.map +1 -1
- package/dist/shared/overlay/anchored-panel.js +75 -40
- package/dist/shared/overlay/anchored-panel.js.map +1 -1
- package/dist/shared/overlay/native-dialog-presence.js +116 -52
- package/dist/shared/overlay/native-dialog-presence.js.map +1 -1
- package/dist/shared/overlay/nested-drawer-layers.js +76 -46
- package/dist/shared/overlay/nested-drawer-layers.js.map +1 -1
- package/dist/shared/overlay/open-overlay.js +240 -136
- package/dist/shared/overlay/open-overlay.js.map +1 -1
- package/dist/shared/overlay/overlay-root.js +33 -24
- package/dist/shared/overlay/overlay-root.js.map +1 -1
- package/dist/shared/overlay/overlay.js +109 -66
- package/dist/shared/overlay/overlay.js.map +1 -1
- package/dist/shared/overlay/placement-props.js +9 -4
- package/dist/shared/overlay/placement-props.js.map +1 -1
- package/dist/shared/overlay/portal.d.ts +2 -0
- package/dist/shared/overlay/portal.d.ts.map +1 -0
- package/dist/shared/overlay/portal.js +202 -117
- package/dist/shared/overlay/portal.js.map +1 -1
- package/dist/shared/overlay/positioning-generation.js +9 -10
- package/dist/shared/overlay/positioning-generation.js.map +1 -1
- package/dist/shared/overlay/presence.js +43 -21
- package/dist/shared/overlay/presence.js.map +1 -1
- package/dist/shared/overlay/theme-overlay-scope.js +22 -19
- package/dist/shared/overlay/theme-overlay-scope.js.map +1 -1
- package/dist/shared/scroll-lock/scroll-lock.js +49 -15
- package/dist/shared/scroll-lock/scroll-lock.js.map +1 -1
- package/dist/shared/theme/duration.js +13 -6
- package/dist/shared/theme/duration.js.map +1 -1
- package/dist/shared/theme/reduced-motion.js +14 -9
- package/dist/shared/theme/reduced-motion.js.map +1 -1
- package/dist/shared/theme/root-sync.js +85 -32
- package/dist/shared/theme/root-sync.js.map +1 -1
- package/dist/shared/visible-area/index.js +81 -37
- package/dist/shared/visible-area/index.js.map +1 -1
- package/dist/types/iconify.d.ts +1 -1
- package/dist/types/iconify.js +0 -0
- package/dist/types/react.d.ts +8 -10
- package/dist/types/react.d.ts.map +1 -0
- package/dist/types/react.js +0 -0
- package/dist/types/utils.d.ts +8 -13
- package/dist/types/utils.d.ts.map +1 -0
- package/dist/types/utils.js +0 -0
- package/dist/types/vue.d.ts +9 -13
- package/dist/types/vue.d.ts.map +1 -0
- package/dist/types/vue.js +0 -0
- package/dist/vite/index.d.ts +1 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +30 -4
- package/dist/vite/index.js.map +1 -1
- package/package.json +10 -23
- package/dist/_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js +0 -9
- package/dist/components/middle-ellipsis/truncate.d.ts +0 -62
- package/dist/components/radio/interaction.d.ts +0 -4
- package/dist/scrollbars/index.d.ts +0 -33
- package/dist/scrollbars/index.js +0 -18
- package/dist/scrollbars/index.js.map +0 -1
- package/dist/scrollbars/internal.js +0 -6
- package/dist/scrollbars/internal.js.map +0 -1
- package/dist/scrollbars/style.css +0 -10
|
@@ -1,211 +1,296 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import { FormAssociated
|
|
4
|
-
import { normalizeLiteral
|
|
1
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
|
|
2
|
+
import glass_default from "../../classes/glass.js";
|
|
3
|
+
import { FormAssociated, FormAssociationController, defineFormAssociation } from "../../shared/form-association/index.js";
|
|
4
|
+
import { normalizeLiteral } from "../../shared/normalize/index.js";
|
|
5
5
|
import "../input/index.js";
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import { dispatchOpenChangeEvent
|
|
9
|
-
import { createComboboxOpenController
|
|
10
|
-
import { defineOptionPortal
|
|
11
|
-
import { defineAnchoredPanel
|
|
12
|
-
import { defineOpenOverlay
|
|
13
|
-
import { applyOverlayVariables
|
|
14
|
-
import { defineScrollLockLease
|
|
15
|
-
import
|
|
16
|
-
import { LitElement
|
|
17
|
-
import { customElement
|
|
18
|
-
import { ifDefined
|
|
19
|
-
|
|
20
|
-
var
|
|
6
|
+
import overlay_motion_default from "../../assets/overlay-motion.js";
|
|
7
|
+
import scrollbar_default from "../../assets/scrollbar.js";
|
|
8
|
+
import { dispatchOpenChangeEvent } from "../../shared/open-state/index.js";
|
|
9
|
+
import { createComboboxOpenController, createOptionListenerBinding, defineComboboxTrigger, handleComboboxFocusOut, nextWrappingIndex } from "../../shared/option-portal/combobox-shell.js";
|
|
10
|
+
import { defineOptionPortal } from "../../shared/option-portal/index.js";
|
|
11
|
+
import { defineAnchoredPanel } from "../../shared/overlay/anchored-panel.js";
|
|
12
|
+
import { defineOpenOverlay } from "../../shared/overlay/open-overlay.js";
|
|
13
|
+
import { applyOverlayVariables, defineOverlayPortal } from "../../shared/overlay/portal.js";
|
|
14
|
+
import { defineScrollLockLease } from "../../shared/scroll-lock/scroll-lock.js";
|
|
15
|
+
import style_default from "./style.js";
|
|
16
|
+
import { LitElement, html, nothing, unsafeCSS } from "lit";
|
|
17
|
+
import { customElement, property, state } from "lit/decorators.js";
|
|
18
|
+
import { ifDefined } from "lit/directives/if-defined.js";
|
|
19
|
+
// src/components/autocomplete/index.ts
|
|
20
|
+
var _WebUiAutocomplete;
|
|
21
|
+
const FILTER_MODES = [
|
|
21
22
|
"none",
|
|
22
23
|
"prefix",
|
|
23
24
|
"contains"
|
|
24
25
|
];
|
|
25
|
-
function
|
|
26
|
-
return
|
|
26
|
+
function isTriggerSlotNode(node) {
|
|
27
|
+
return node instanceof Element && node.slot === "trigger";
|
|
27
28
|
}
|
|
28
|
-
function
|
|
29
|
-
return
|
|
29
|
+
function isEmptySlotNode(node) {
|
|
30
|
+
return node instanceof Element && node.slot === "empty";
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
+
let WebUiAutocomplete = class WebUiAutocomplete extends FormAssociated(LitElement) {
|
|
32
33
|
static {
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
constructor(...
|
|
36
|
-
super(...
|
|
34
|
+
_WebUiAutocomplete = this;
|
|
35
|
+
}
|
|
36
|
+
constructor(..._args) {
|
|
37
|
+
super(..._args);
|
|
38
|
+
this.placeholder = "";
|
|
39
|
+
this.borderless = false;
|
|
40
|
+
this.disabled = false;
|
|
41
|
+
this.readonly = false;
|
|
42
|
+
this.required = false;
|
|
43
|
+
this.portal = false;
|
|
44
|
+
this.noScrollLock = false;
|
|
45
|
+
this.allowCustomValue = false;
|
|
46
|
+
this.name = "";
|
|
47
|
+
this.ariaLabel = null;
|
|
48
|
+
this._filter = "contains";
|
|
49
|
+
this._value = "";
|
|
50
|
+
this._selectedValue = "";
|
|
51
|
+
this._formAssociation = defineFormAssociation({
|
|
37
52
|
host: this,
|
|
38
53
|
initialize: () => {
|
|
39
|
-
|
|
40
|
-
|
|
54
|
+
const attrValue = this.getAttribute("value");
|
|
55
|
+
if (attrValue !== null) this._value = attrValue;
|
|
41
56
|
},
|
|
42
57
|
getState: () => this._value,
|
|
43
|
-
setState: (
|
|
44
|
-
this.value =
|
|
58
|
+
setState: (value) => {
|
|
59
|
+
this.value = value;
|
|
45
60
|
},
|
|
46
61
|
getFormValue: () => this._value,
|
|
47
62
|
getFormState: () => this._value,
|
|
48
|
-
restoreState: (
|
|
49
|
-
typeof
|
|
63
|
+
restoreState: (state) => {
|
|
64
|
+
if (typeof state === "string") this.value = state;
|
|
50
65
|
},
|
|
51
66
|
syncValidity: () => this._syncValidity()
|
|
52
|
-
}).make()
|
|
67
|
+
}).make();
|
|
68
|
+
this._formAssociationController = new FormAssociationController(this, this._formAssociation);
|
|
69
|
+
this._isOpen = false;
|
|
70
|
+
this._activeIndex = -1;
|
|
71
|
+
this._focused = false;
|
|
72
|
+
this._hasTriggerSlot = false;
|
|
73
|
+
this._idPrefix = `web-ui-autocomplete-${++_WebUiAutocomplete._nextInstanceId}`;
|
|
74
|
+
this._a11yOptionIds = /* @__PURE__ */ new WeakMap();
|
|
75
|
+
this._nextA11yOptionId = 0;
|
|
76
|
+
this._options = [];
|
|
77
|
+
this._keyboardNavigationActive = false;
|
|
78
|
+
this._scrollLock = defineScrollLockLease().make();
|
|
79
|
+
this._optionPortal = defineOptionPortal().make({
|
|
53
80
|
element: this,
|
|
54
81
|
idPrefix: `${this._idPrefix}-option`,
|
|
55
82
|
getPortal: () => this._portal,
|
|
56
83
|
getPortalContent: () => this._portalContent,
|
|
57
84
|
isOpen: () => this.portal && this._isOpen,
|
|
58
|
-
getMigratableNodes: () => Array.from(this.childNodes).filter((
|
|
85
|
+
getMigratableNodes: () => Array.from(this.childNodes).filter((node) => !isTriggerSlotNode(node) && !isEmptySlotNode(node)),
|
|
59
86
|
hasUpdated: () => this.hasUpdated,
|
|
60
87
|
requestUpdate: () => this.requestUpdate(),
|
|
61
|
-
bindOption: (
|
|
62
|
-
unbindOption: (
|
|
63
|
-
})
|
|
88
|
+
bindOption: (option) => this._bindOption(option),
|
|
89
|
+
unbindOption: (option) => this._unbindOption(option)
|
|
90
|
+
});
|
|
91
|
+
this._trigger = defineComboboxTrigger().make({
|
|
64
92
|
getWrapper: () => this.shadowRoot?.querySelector(".autocomplete-trigger") ?? null,
|
|
65
93
|
getCustomTrigger: () => {
|
|
66
|
-
|
|
67
|
-
return
|
|
94
|
+
const assigned = this.shadowRoot?.querySelector("slot[name=\"trigger\"]")?.assignedElements()[0];
|
|
95
|
+
return assigned instanceof HTMLElement ? assigned : null;
|
|
68
96
|
},
|
|
69
97
|
getFallbackTrigger: () => this.shadowRoot?.querySelector(".autocomplete-input") ?? null,
|
|
70
|
-
onInput: (
|
|
98
|
+
onInput: (value) => this._onTriggerInput(value),
|
|
71
99
|
onClick: () => this._onTriggerClick(),
|
|
72
|
-
onFocusIn: (
|
|
73
|
-
onFocusOut: (
|
|
74
|
-
})
|
|
100
|
+
onFocusIn: (event) => this._onTriggerFocusIn(event),
|
|
101
|
+
onFocusOut: (event) => this._onTriggerFocusOut(event)
|
|
102
|
+
});
|
|
103
|
+
this._overlay = defineOpenOverlay().make({
|
|
75
104
|
requestClose: () => this._close(),
|
|
76
105
|
isConnected: () => this.isConnected
|
|
77
|
-
})
|
|
106
|
+
});
|
|
107
|
+
this._panel = defineAnchoredPanel().make({
|
|
78
108
|
getAnchor: () => this._trigger.getTrigger() ?? this.shadowRoot?.querySelector(".autocomplete-trigger") ?? null,
|
|
79
109
|
getLocalPanel: () => this.shadowRoot?.querySelector(".autocomplete-overlay") ?? null,
|
|
80
110
|
getPositioning: () => ({
|
|
81
111
|
placement: "bottom-start",
|
|
82
112
|
offset: 4,
|
|
83
|
-
minAnchorWidth:
|
|
113
|
+
minAnchorWidth: true,
|
|
84
114
|
strategy: this.portal ? "fixed" : "absolute"
|
|
85
115
|
}),
|
|
86
116
|
isPortal: () => this.portal,
|
|
87
117
|
createPortal: () => this._createPortal(),
|
|
88
118
|
openOverlay: this._overlay
|
|
89
|
-
})
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
119
|
+
});
|
|
120
|
+
this._onClickOutside = (e) => {
|
|
121
|
+
if (!this._isOpen) return;
|
|
122
|
+
if (!(e.composedPath().includes(this) || !!this._panel.getHandle()?.containsEvent(e))) this._close();
|
|
123
|
+
};
|
|
124
|
+
this._onFocusOut = () => {
|
|
125
|
+
handleComboboxFocusOut(this, () => this._panel.getHandle(), () => this._isOpen, () => this._close());
|
|
126
|
+
};
|
|
127
|
+
this._handlePanelPointerDown = (e) => {
|
|
94
128
|
e.preventDefault();
|
|
95
|
-
}
|
|
129
|
+
};
|
|
130
|
+
this._onTriggerSlotChange = () => {
|
|
96
131
|
this._syncTriggerSlot();
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
132
|
+
};
|
|
133
|
+
this._optionListeners = createOptionListenerBinding({
|
|
134
|
+
onClick: (event) => this._handleOptionClick(event),
|
|
135
|
+
onPointerOver: (event) => this._handleOptionPointerOver(event),
|
|
136
|
+
onPointerDown: (event) => this._handleOptionPointerDown(event),
|
|
101
137
|
onUpdate: () => this._onOptionUpdate()
|
|
102
|
-
})
|
|
138
|
+
});
|
|
139
|
+
this._bindOption = (option) => this._optionListeners.bind(option);
|
|
140
|
+
this._unbindOption = (option) => this._optionListeners.unbind(option);
|
|
141
|
+
this._handleOptionClick = (e) => {
|
|
103
142
|
if (!(e.currentTarget instanceof HTMLElement)) return;
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
143
|
+
const option = e.currentTarget;
|
|
144
|
+
if (option.disabled) return;
|
|
145
|
+
this._selectOption(option);
|
|
146
|
+
};
|
|
147
|
+
this._onOptionUpdate = () => {
|
|
107
148
|
this._optionPortal.scheduleRefresh();
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
this._isOpen
|
|
112
|
-
|
|
113
|
-
this.
|
|
114
|
-
|
|
149
|
+
};
|
|
150
|
+
this._handleOptionPointerOver = (e) => {
|
|
151
|
+
if (e.pointerType === "touch") return;
|
|
152
|
+
if (!this._isOpen || !(e.currentTarget instanceof HTMLElement)) return;
|
|
153
|
+
if (this._keyboardNavigationActive) return;
|
|
154
|
+
this._activeIndex = -1;
|
|
155
|
+
this._syncActiveOption();
|
|
156
|
+
};
|
|
157
|
+
this._handleListPointerMove = () => {
|
|
158
|
+
if (!this._isOpen) return;
|
|
159
|
+
this._clearKeyboardNavigation();
|
|
160
|
+
};
|
|
161
|
+
this._handleListWheel = () => {
|
|
162
|
+
if (!this._isOpen) return;
|
|
163
|
+
this._clearKeyboardNavigation();
|
|
164
|
+
};
|
|
165
|
+
this._handleOptionPointerDown = (e) => {
|
|
115
166
|
e.preventDefault();
|
|
116
|
-
}
|
|
167
|
+
};
|
|
168
|
+
this._onSlotChange = () => {
|
|
117
169
|
this._optionPortal.scheduleRefresh();
|
|
118
|
-
}
|
|
119
|
-
|
|
170
|
+
};
|
|
171
|
+
this._onKeydown = (e) => {
|
|
172
|
+
if (this._isDisabled || this.readonly) return;
|
|
173
|
+
this._applyFilter();
|
|
174
|
+
this._syncOpenWithMatches();
|
|
175
|
+
switch (e.key) {
|
|
120
176
|
case "ArrowDown":
|
|
121
177
|
case "ArrowUp":
|
|
122
178
|
if (this._isOpen && this._trigger.isMultilineEdit(e)) break;
|
|
123
|
-
e.preventDefault()
|
|
179
|
+
e.preventDefault();
|
|
180
|
+
if (!this._isOpen) this._open(true);
|
|
181
|
+
else this._navigateActive(e.key === "ArrowDown" ? 1 : -1);
|
|
124
182
|
break;
|
|
125
183
|
case "Enter": {
|
|
126
|
-
|
|
127
|
-
if (!this._trigger.isMultilineEdit(e) && (this._isOpen || !this._hasMatchingOptions() &&
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
184
|
+
const canSubmitCustomValue = this._canSubmitCustomValue();
|
|
185
|
+
if (!this._trigger.isMultilineEdit(e) && (this._isOpen || !this._hasMatchingOptions() && canSubmitCustomValue)) {
|
|
186
|
+
e.preventDefault();
|
|
187
|
+
if (this._isOpen) {
|
|
188
|
+
const option = this._options[this._activeIndex];
|
|
189
|
+
if (option && !option.disabled && !option.hasAttribute("data-filtered")) {
|
|
190
|
+
this._selectOption(option);
|
|
132
191
|
return;
|
|
133
192
|
}
|
|
134
|
-
|
|
135
|
-
if (
|
|
136
|
-
this._selectOption(
|
|
193
|
+
const exactOption = this._findExactOption(this._value);
|
|
194
|
+
if (exactOption) {
|
|
195
|
+
this._selectOption(exactOption);
|
|
137
196
|
return;
|
|
138
197
|
}
|
|
139
198
|
}
|
|
140
|
-
|
|
199
|
+
if (canSubmitCustomValue) this._selectCustomValue();
|
|
141
200
|
}
|
|
142
201
|
break;
|
|
143
202
|
}
|
|
144
203
|
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
this.
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
204
|
+
};
|
|
205
|
+
this._onTriggerInput = (value) => {
|
|
206
|
+
if (this._isDisabled || this.readonly) return;
|
|
207
|
+
if (value === this._value) return;
|
|
208
|
+
this.value = value;
|
|
209
|
+
this._keyboardNavigationActive = false;
|
|
210
|
+
this._activeIndex = -1;
|
|
211
|
+
this._syncActiveOption();
|
|
212
|
+
this._open();
|
|
213
|
+
};
|
|
214
|
+
this._onTriggerClick = () => {
|
|
215
|
+
if (this._isDisabled || this.readonly) return;
|
|
216
|
+
this._open();
|
|
217
|
+
};
|
|
218
|
+
this._onTriggerFocusIn = (event) => {
|
|
219
|
+
if (this._isDisabled) return;
|
|
220
|
+
this._focused = true;
|
|
221
|
+
if (this._isSlottedFocus(event)) this.dispatchEvent(new FocusEvent("focus", {
|
|
222
|
+
composed: true,
|
|
223
|
+
relatedTarget: event.relatedTarget
|
|
224
|
+
}));
|
|
225
|
+
};
|
|
226
|
+
this._onTriggerFocusOut = (event) => {
|
|
227
|
+
this._focused = false;
|
|
228
|
+
if (this._isSlottedFocus(event)) this.dispatchEvent(new FocusEvent("blur", {
|
|
229
|
+
composed: true,
|
|
230
|
+
relatedTarget: event.relatedTarget
|
|
158
231
|
}));
|
|
159
|
-
}
|
|
232
|
+
};
|
|
233
|
+
this._openController = createComboboxOpenController({
|
|
160
234
|
canOpen: () => !this._isDisabled && !this.readonly,
|
|
161
235
|
getIsOpen: () => this._isOpen,
|
|
162
|
-
setIsOpen: (
|
|
163
|
-
this._isOpen =
|
|
236
|
+
setIsOpen: (open) => {
|
|
237
|
+
this._isOpen = open;
|
|
164
238
|
},
|
|
165
239
|
dispatchOpenChange: () => this._dispatchOpenChange(),
|
|
166
|
-
syncScrollLock: (
|
|
240
|
+
syncScrollLock: (open) => this._syncScrollLock(open),
|
|
167
241
|
isPortal: () => this.portal,
|
|
168
|
-
openOverlay: (
|
|
242
|
+
openOverlay: (isKeyboardNavigation) => this._openOverlay(isKeyboardNavigation),
|
|
169
243
|
closeOverlay: () => void this._closeOverlay(),
|
|
170
|
-
onOpen: (
|
|
171
|
-
this._keyboardNavigationActive =
|
|
244
|
+
onOpen: (isKeyboardNavigation) => {
|
|
245
|
+
this._keyboardNavigationActive = isKeyboardNavigation;
|
|
246
|
+
if (isKeyboardNavigation) this._setInitialActiveOption();
|
|
247
|
+
else this._syncActiveOption();
|
|
172
248
|
},
|
|
173
249
|
onBeforeClose: () => {
|
|
174
250
|
this._optionPortal.syncPortalContent();
|
|
175
251
|
},
|
|
176
252
|
onAfterClose: () => {
|
|
177
|
-
this._keyboardNavigationActive =
|
|
253
|
+
this._keyboardNavigationActive = false;
|
|
254
|
+
this._activeIndex = -1;
|
|
255
|
+
this._options.forEach((o) => o.removeAttribute("active"));
|
|
256
|
+
this._syncScrollInteractionListeners();
|
|
178
257
|
}
|
|
179
258
|
});
|
|
180
259
|
}
|
|
181
260
|
static {
|
|
182
261
|
this.styles = [
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
262
|
+
unsafeCSS(glass_default),
|
|
263
|
+
unsafeCSS(overlay_motion_default),
|
|
264
|
+
unsafeCSS(scrollbar_default),
|
|
265
|
+
unsafeCSS(style_default)
|
|
187
266
|
];
|
|
188
267
|
}
|
|
189
268
|
get filter() {
|
|
190
269
|
return this._filter;
|
|
191
270
|
}
|
|
192
|
-
set filter(
|
|
193
|
-
|
|
194
|
-
this._filter =
|
|
271
|
+
set filter(v) {
|
|
272
|
+
const old = this._filter;
|
|
273
|
+
this._filter = normalizeLiteral(v, FILTER_MODES, "contains");
|
|
274
|
+
this.requestUpdate("filter", old);
|
|
195
275
|
}
|
|
196
276
|
get value() {
|
|
197
277
|
return this._value;
|
|
198
278
|
}
|
|
199
|
-
set value(
|
|
200
|
-
|
|
201
|
-
this._value =
|
|
279
|
+
set value(v) {
|
|
280
|
+
const old = this._value;
|
|
281
|
+
this._value = v;
|
|
282
|
+
this._formAssociation.sync();
|
|
283
|
+
this.requestUpdate("value", old);
|
|
202
284
|
}
|
|
203
285
|
get selectedValue() {
|
|
204
286
|
return this._selectedValue;
|
|
205
287
|
}
|
|
206
|
-
_setSelectedValue(
|
|
207
|
-
|
|
208
|
-
(
|
|
288
|
+
_setSelectedValue(value) {
|
|
289
|
+
const old = this._selectedValue;
|
|
290
|
+
if (old === value && this.getAttribute("selected-value") === value) return;
|
|
291
|
+
this._selectedValue = value;
|
|
292
|
+
this.setAttribute("selected-value", value);
|
|
293
|
+
if (old !== value) this.requestUpdate("selectedValue", old);
|
|
209
294
|
}
|
|
210
295
|
get _isDisabled() {
|
|
211
296
|
return this.disabled || this._formAssociation.isFormDisabled();
|
|
@@ -219,44 +304,81 @@ var N = class extends n(x) {
|
|
|
219
304
|
get open() {
|
|
220
305
|
return this._isOpen;
|
|
221
306
|
}
|
|
222
|
-
focus(
|
|
223
|
-
this._trigger.focusTrigger(
|
|
307
|
+
focus(options) {
|
|
308
|
+
this._trigger.focusTrigger(options);
|
|
224
309
|
}
|
|
225
310
|
blur() {
|
|
226
311
|
this._trigger.blurTrigger();
|
|
227
312
|
}
|
|
228
313
|
connectedCallback() {
|
|
229
|
-
super.connectedCallback()
|
|
314
|
+
super.connectedCallback();
|
|
315
|
+
this._optionPortal.bindHost();
|
|
316
|
+
this._trigger.bind();
|
|
317
|
+
this.addEventListener("keydown", this._onKeydown);
|
|
318
|
+
this.addEventListener("focusout", this._onFocusOut);
|
|
319
|
+
document.addEventListener("click", this._onClickOutside);
|
|
230
320
|
}
|
|
231
321
|
_syncTriggerSlot() {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
322
|
+
const hasTriggerSlot = Array.from(this.children).some(isTriggerSlotNode);
|
|
323
|
+
if (this._hasTriggerSlot === hasTriggerSlot) return;
|
|
324
|
+
this._hasTriggerSlot = hasTriggerSlot;
|
|
325
|
+
if (this.hasUpdated) this._reconfigureOverlay();
|
|
326
|
+
}
|
|
327
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
328
|
+
super.attributeChangedCallback(name, oldValue, newValue);
|
|
329
|
+
if (name === "selected-value" && this.isConnected && newValue !== this._selectedValue) queueMicrotask(() => {
|
|
330
|
+
if (this.isConnected) this._syncSelectedValue();
|
|
238
331
|
});
|
|
239
332
|
}
|
|
240
333
|
disconnectedCallback() {
|
|
241
|
-
super.disconnectedCallback()
|
|
334
|
+
super.disconnectedCallback();
|
|
335
|
+
this._optionPortal.dispose();
|
|
336
|
+
this._trigger.dispose();
|
|
337
|
+
this.removeEventListener("keydown", this._onKeydown);
|
|
338
|
+
this.removeEventListener("focusout", this._onFocusOut);
|
|
339
|
+
document.removeEventListener("click", this._onClickOutside);
|
|
340
|
+
this._options.forEach(this._unbindOption);
|
|
341
|
+
this._close();
|
|
342
|
+
this._syncScrollInteractionListeners();
|
|
343
|
+
this._portal = void 0;
|
|
344
|
+
this._portalContent = void 0;
|
|
345
|
+
this._panel.dispose();
|
|
346
|
+
this._scrollLock.release();
|
|
242
347
|
}
|
|
243
348
|
firstUpdated() {
|
|
244
|
-
this._trigger.bind()
|
|
245
|
-
|
|
349
|
+
this._trigger.bind();
|
|
350
|
+
requestAnimationFrame(() => {
|
|
351
|
+
if (this.isConnected) this._optionPortal.scheduleRefresh();
|
|
246
352
|
});
|
|
247
353
|
}
|
|
248
354
|
willUpdate() {
|
|
249
|
-
this._syncTriggerSlot()
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
this.
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
this.
|
|
355
|
+
this._syncTriggerSlot();
|
|
356
|
+
this._refreshOptions();
|
|
357
|
+
this._optionPortal.ensureOptionIds(this._options);
|
|
358
|
+
this._syncSelectedValue();
|
|
359
|
+
this._applyFilter();
|
|
360
|
+
this._syncOptionA11y();
|
|
361
|
+
this._syncActiveOption();
|
|
362
|
+
}
|
|
363
|
+
updated(changed) {
|
|
364
|
+
this._trigger.setValue(this._value);
|
|
365
|
+
if (changed.has("portal") || changed.has("overlayContainer")) requestAnimationFrame(() => this._reconfigureOverlay());
|
|
366
|
+
if (changed.has("noScrollLock")) this._syncScrollLock();
|
|
367
|
+
this.toggleAttribute("focused", this._focused);
|
|
368
|
+
this._syncOpenAttribute();
|
|
369
|
+
this._syncOverlayInert();
|
|
370
|
+
this._syncValidity();
|
|
371
|
+
this._syncOpenWithMatches();
|
|
372
|
+
}
|
|
373
|
+
formDisabledCallback(disabled) {
|
|
374
|
+
this._formAssociation.setDisabled(disabled);
|
|
375
|
+
if (disabled && this._isOpen) this._close();
|
|
256
376
|
}
|
|
257
377
|
_syncValidity() {
|
|
258
|
-
|
|
259
|
-
|
|
378
|
+
const internals = this._formAssociation.getInternals();
|
|
379
|
+
if (!internals || typeof internals.setValidity !== "function") return;
|
|
380
|
+
if (this._isDisabled || this.readonly || !this.required || this._value) internals.setValidity({});
|
|
381
|
+
else internals.setValidity({ valueMissing: true }, "Enter a value");
|
|
260
382
|
}
|
|
261
383
|
_syncOpenAttribute() {
|
|
262
384
|
this.toggleAttribute("open", this._isOpen);
|
|
@@ -265,159 +387,227 @@ var N = class extends n(x) {
|
|
|
265
387
|
this._panel.getHandle()?.setInert(this._isDisabled || this.readonly);
|
|
266
388
|
}
|
|
267
389
|
_syncSelectedValue() {
|
|
268
|
-
|
|
269
|
-
this.
|
|
390
|
+
const query = this._value.trim().toLowerCase();
|
|
391
|
+
const next = query ? this._options.find((o) => !o.disabled && o.label.trim().toLowerCase() === query)?.value ?? "" : "";
|
|
392
|
+
this._setSelectedValue(next);
|
|
270
393
|
}
|
|
271
394
|
_syncOptionA11y() {
|
|
272
|
-
this._options.forEach((
|
|
273
|
-
|
|
395
|
+
this._options.forEach((o) => {
|
|
396
|
+
o.setAttribute("role", "option");
|
|
397
|
+
o.setAttribute("aria-selected", o.value === this._selectedValue ? "true" : "false");
|
|
398
|
+
o.setAttribute("aria-hidden", "true");
|
|
274
399
|
});
|
|
275
400
|
}
|
|
276
|
-
_getA11yOptionId(
|
|
277
|
-
let
|
|
278
|
-
|
|
401
|
+
_getA11yOptionId(option) {
|
|
402
|
+
let id = this._a11yOptionIds.get(option);
|
|
403
|
+
if (!id) {
|
|
404
|
+
id = `${this._idPrefix}-a11y-option-${++this._nextA11yOptionId}`;
|
|
405
|
+
this._a11yOptionIds.set(option, id);
|
|
406
|
+
}
|
|
407
|
+
return id;
|
|
279
408
|
}
|
|
280
409
|
_applyFilter() {
|
|
281
|
-
|
|
282
|
-
this.
|
|
283
|
-
|
|
284
|
-
|
|
410
|
+
const query = this._value.trim().toLowerCase();
|
|
411
|
+
const mode = this._filter;
|
|
412
|
+
this._options.forEach((o) => {
|
|
413
|
+
const label = o.label.trim().toLowerCase();
|
|
414
|
+
const match = mode === "none" || !query || (mode === "prefix" ? label.startsWith(query) : label.includes(query));
|
|
415
|
+
o.toggleAttribute("data-filtered", !match);
|
|
285
416
|
});
|
|
286
|
-
|
|
287
|
-
this._activeIndex >= 0 && (!
|
|
417
|
+
const active = this._options[this._activeIndex];
|
|
418
|
+
if (this._activeIndex >= 0 && (!active || active.hasAttribute("data-filtered") || active.disabled)) {
|
|
419
|
+
this._activeIndex = -1;
|
|
420
|
+
this._syncActiveOption();
|
|
421
|
+
}
|
|
288
422
|
}
|
|
289
423
|
_hasMatchingOptions() {
|
|
290
|
-
return this._options.some((
|
|
424
|
+
return this._options.some((option) => !option.hasAttribute("data-filtered"));
|
|
291
425
|
}
|
|
292
426
|
_syncOpenWithMatches() {
|
|
293
|
-
this._isOpen && !this._hasMatchingOptions()
|
|
427
|
+
if (this._isOpen && !this._hasMatchingOptions()) this._close();
|
|
294
428
|
}
|
|
295
429
|
_refreshOptions() {
|
|
296
|
-
|
|
297
|
-
|
|
430
|
+
const activeOption = this._options[this._activeIndex];
|
|
431
|
+
const next = this._optionPortal.refresh(this._options, activeOption);
|
|
432
|
+
this._options = next.options;
|
|
433
|
+
this._activeIndex = next.activeIndex;
|
|
298
434
|
}
|
|
299
435
|
_syncScrollInteractionListeners() {
|
|
300
|
-
|
|
301
|
-
|
|
436
|
+
const next = this._isOpen ? this._panel.getPanel()?.querySelector(".autocomplete-scroll") : void 0;
|
|
437
|
+
if (next === this._scrollInteractionElement) return;
|
|
438
|
+
this._scrollInteractionElement?.removeEventListener("pointermove", this._handleListPointerMove);
|
|
439
|
+
this._scrollInteractionElement?.removeEventListener("wheel", this._handleListWheel);
|
|
440
|
+
this._scrollInteractionElement = next ?? void 0;
|
|
441
|
+
this._scrollInteractionElement?.addEventListener("pointermove", this._handleListPointerMove);
|
|
442
|
+
this._scrollInteractionElement?.addEventListener("wheel", this._handleListWheel);
|
|
302
443
|
}
|
|
303
444
|
_clearKeyboardNavigation() {
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
445
|
+
if (!this._keyboardNavigationActive) return;
|
|
446
|
+
this._keyboardNavigationActive = false;
|
|
447
|
+
this._activeIndex = -1;
|
|
448
|
+
this._syncActiveOption();
|
|
449
|
+
}
|
|
450
|
+
_navigateActive(delta) {
|
|
451
|
+
const enabled = this._options.filter((o) => !o.disabled && !o.hasAttribute("data-filtered"));
|
|
452
|
+
if (!enabled.length) return;
|
|
453
|
+
this._keyboardNavigationActive = true;
|
|
454
|
+
const currentIdx = this._activeIndex >= 0 ? enabled.indexOf(this._options[this._activeIndex]) : delta > 0 ? -1 : 0;
|
|
455
|
+
this._activeIndex = this._options.indexOf(enabled[nextWrappingIndex(enabled.length, currentIdx, delta)]);
|
|
456
|
+
this._syncActiveOption();
|
|
312
457
|
}
|
|
313
458
|
_setInitialActiveOption() {
|
|
314
|
-
|
|
315
|
-
this._keyboardNavigationActive =
|
|
459
|
+
const firstEnabled = this._options.findIndex((o) => !o.disabled && !o.hasAttribute("data-filtered"));
|
|
460
|
+
this._keyboardNavigationActive = true;
|
|
461
|
+
this._activeIndex = firstEnabled;
|
|
462
|
+
this._syncActiveOption();
|
|
316
463
|
}
|
|
317
464
|
_syncActiveOption() {
|
|
318
|
-
this._options.forEach((
|
|
465
|
+
this._options.forEach((option, index) => option.toggleAttribute("active", index === this._activeIndex));
|
|
466
|
+
if (this._isOpen) this._scrollActiveOptionIntoView();
|
|
319
467
|
}
|
|
320
468
|
_scrollActiveOptionIntoView() {
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
469
|
+
const activeOption = this._options[this._activeIndex];
|
|
470
|
+
const scroll = this._panel.getPanel()?.querySelector(".autocomplete-scroll");
|
|
471
|
+
if (!activeOption || !scroll?.clientHeight) return;
|
|
472
|
+
const optionRect = activeOption.getBoundingClientRect();
|
|
473
|
+
const scrollRect = scroll.getBoundingClientRect();
|
|
474
|
+
const scaleY = scroll.offsetHeight ? scrollRect.height / scroll.offsetHeight : 1;
|
|
475
|
+
if (!scaleY) return;
|
|
476
|
+
const visibleTop = scrollRect.top + scroll.clientTop * scaleY;
|
|
477
|
+
const visibleBottom = visibleTop + scroll.clientHeight * scaleY;
|
|
478
|
+
if (optionRect.top < visibleTop) scroll.scrollTop -= (visibleTop - optionRect.top) / scaleY;
|
|
479
|
+
else if (optionRect.bottom > visibleBottom) scroll.scrollTop += (optionRect.bottom - visibleBottom) / scaleY;
|
|
480
|
+
}
|
|
481
|
+
_selectOption(option) {
|
|
482
|
+
if (this.readonly) return;
|
|
483
|
+
this.value = option.label;
|
|
484
|
+
this._setSelectedValue(option.value);
|
|
485
|
+
this._close();
|
|
486
|
+
this.dispatchEvent(new Event("input", {
|
|
487
|
+
bubbles: true,
|
|
488
|
+
composed: true
|
|
489
|
+
}));
|
|
490
|
+
this.dispatchEvent(new Event("change", {
|
|
491
|
+
bubbles: true,
|
|
492
|
+
composed: true
|
|
493
|
+
}));
|
|
494
|
+
}
|
|
495
|
+
_findExactOption(value) {
|
|
496
|
+
const query = value.trim().toLowerCase();
|
|
497
|
+
if (!query) return void 0;
|
|
498
|
+
return this._options.find((option) => !option.disabled && option.label.trim().toLowerCase() === query);
|
|
499
|
+
}
|
|
500
|
+
_hasExactOption(value) {
|
|
501
|
+
const query = value.trim().toLowerCase();
|
|
502
|
+
return this._options.some((option) => option.label.trim().toLowerCase() === query);
|
|
344
503
|
}
|
|
345
504
|
_canSubmitCustomValue() {
|
|
346
505
|
return this.allowCustomValue && !!this._value && !this._hasExactOption(this._value);
|
|
347
506
|
}
|
|
348
507
|
_selectCustomValue() {
|
|
349
|
-
this._close()
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
508
|
+
this._close();
|
|
509
|
+
this.dispatchEvent(new Event("input", {
|
|
510
|
+
bubbles: true,
|
|
511
|
+
composed: true
|
|
512
|
+
}));
|
|
513
|
+
this.dispatchEvent(new Event("change", {
|
|
514
|
+
bubbles: true,
|
|
515
|
+
composed: true
|
|
355
516
|
}));
|
|
356
517
|
}
|
|
357
|
-
_isSlottedFocus(
|
|
358
|
-
|
|
359
|
-
return
|
|
518
|
+
_isSlottedFocus(event) {
|
|
519
|
+
const target = event.target;
|
|
520
|
+
return target instanceof Node && !!this.shadowRoot && !this.shadowRoot.contains(target);
|
|
360
521
|
}
|
|
361
|
-
_open(
|
|
362
|
-
|
|
363
|
-
|
|
522
|
+
_open(isKeyboardNavigation = false) {
|
|
523
|
+
this._applyFilter();
|
|
524
|
+
if (!this._hasMatchingOptions()) {
|
|
525
|
+
if (this._isOpen) this._close();
|
|
364
526
|
return;
|
|
365
527
|
}
|
|
366
|
-
this._openController.open(
|
|
528
|
+
this._openController.open(isKeyboardNavigation);
|
|
367
529
|
}
|
|
368
530
|
_close() {
|
|
369
531
|
this._openController.close();
|
|
370
532
|
}
|
|
371
533
|
_dispatchOpenChange() {
|
|
372
|
-
|
|
534
|
+
dispatchOpenChangeEvent(this, this._isOpen);
|
|
373
535
|
}
|
|
374
|
-
_openOverlay(
|
|
375
|
-
this._panel.open(
|
|
536
|
+
_openOverlay(isKeyboardNavigation = false) {
|
|
537
|
+
this._panel.open(isKeyboardNavigation);
|
|
538
|
+
this._syncScrollInteractionListeners();
|
|
539
|
+
this._syncActiveOption();
|
|
540
|
+
this._syncOverlayInert();
|
|
376
541
|
}
|
|
377
542
|
async _closeOverlay() {
|
|
378
|
-
await this._panel.close(() => this._isOpen)
|
|
543
|
+
if (await this._panel.close(() => this._isOpen)) {
|
|
544
|
+
this._syncScrollInteractionListeners();
|
|
545
|
+
this._portal = void 0;
|
|
546
|
+
this._portalContent = void 0;
|
|
547
|
+
}
|
|
379
548
|
}
|
|
380
549
|
_reconfigureOverlay() {
|
|
381
|
-
this._portal = void 0
|
|
550
|
+
this._portal = void 0;
|
|
551
|
+
this._portalContent = void 0;
|
|
552
|
+
this._panel.reconfigure(this._isOpen);
|
|
553
|
+
this._syncScrollInteractionListeners();
|
|
554
|
+
this._syncOverlayInert();
|
|
382
555
|
}
|
|
383
|
-
_syncScrollLock(
|
|
384
|
-
this._scrollLock.sync(
|
|
556
|
+
_syncScrollLock(isOpen = this._isOpen) {
|
|
557
|
+
this._scrollLock.sync(isOpen && !this.noScrollLock);
|
|
385
558
|
}
|
|
386
559
|
_createPortal() {
|
|
387
|
-
|
|
560
|
+
const portal = defineOverlayPortal().make({
|
|
388
561
|
container: this.overlayContainer,
|
|
389
562
|
target: this,
|
|
390
|
-
style: `${
|
|
563
|
+
style: `${glass_default}\n${overlay_motion_default}\n${scrollbar_default}\n${style_default}`,
|
|
391
564
|
className: "wui-glass autocomplete-overlay portal wui-floating-panel",
|
|
392
565
|
onContentChange: () => {
|
|
393
566
|
this._optionPortal.scheduleRefresh();
|
|
394
567
|
}
|
|
395
568
|
});
|
|
396
|
-
this._portal =
|
|
569
|
+
this._portal = portal;
|
|
570
|
+
applyOverlayVariables(portal.panel, this, [
|
|
397
571
|
"--wui-overlay-min-width",
|
|
398
572
|
"--wui-autocomplete-max-width",
|
|
399
573
|
"--wui-autocomplete-max-height"
|
|
400
|
-
])
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
574
|
+
]);
|
|
575
|
+
portal.panel.setAttribute("aria-hidden", "true");
|
|
576
|
+
portal.panel.addEventListener("pointerdown", this._handlePanelPointerDown);
|
|
577
|
+
const scroll = document.createElement("div");
|
|
578
|
+
scroll.className = "autocomplete-scroll wui-scroll";
|
|
579
|
+
const content = document.createElement("div");
|
|
580
|
+
content.className = "autocomplete-content";
|
|
581
|
+
this._portalContent = content;
|
|
582
|
+
scroll.append(content);
|
|
583
|
+
portal.panel.append(scroll);
|
|
584
|
+
for (const node of Array.from(this.childNodes)) {
|
|
585
|
+
if (node instanceof Comment) continue;
|
|
586
|
+
if (isTriggerSlotNode(node)) continue;
|
|
587
|
+
if (isEmptySlotNode(node)) continue;
|
|
588
|
+
portal.appendContent([node], content);
|
|
589
|
+
}
|
|
590
|
+
return portal;
|
|
407
591
|
}
|
|
408
592
|
_getLabelledbyText() {
|
|
409
593
|
if (!this.ariaLabelledby) return "";
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
594
|
+
const root = this.getRootNode();
|
|
595
|
+
if (!(root instanceof Document || root instanceof ShadowRoot)) return "";
|
|
596
|
+
return this.ariaLabelledby.trim().split(/\s+/).map((id) => {
|
|
597
|
+
const escapedId = typeof CSS !== "undefined" && CSS.escape ? CSS.escape(id) : id;
|
|
598
|
+
return root.querySelector(`#${escapedId}`)?.textContent?.trim() ?? "";
|
|
599
|
+
}).filter(Boolean).join(" ");
|
|
415
600
|
}
|
|
416
601
|
render() {
|
|
417
|
-
|
|
418
|
-
|
|
602
|
+
const listboxId = `${this._idPrefix}-listbox`;
|
|
603
|
+
const labelId = `${this._idPrefix}-label`;
|
|
604
|
+
const labelledbyText = this._getLabelledbyText();
|
|
605
|
+
const visibleOptions = this._options.filter((option) => !option.hasAttribute("data-filtered"));
|
|
606
|
+
const activeOption = this._isOpen && this._activeIndex >= 0 ? this._options[this._activeIndex] : void 0;
|
|
607
|
+
const activeDescendant = activeOption ? this._getA11yOptionId(activeOption) : nothing;
|
|
608
|
+
return html`
|
|
419
609
|
<div class="wui-autocomplete-inner">
|
|
420
|
-
${
|
|
610
|
+
${labelledbyText ? html`<span class="autocomplete-a11y-only" id=${labelId}>${labelledbyText}</span>` : nothing}
|
|
421
611
|
<div
|
|
422
612
|
class="autocomplete-trigger"
|
|
423
613
|
?data-custom-trigger=${this._hasTriggerSlot}
|
|
@@ -425,16 +615,16 @@ var N = class extends n(x) {
|
|
|
425
615
|
aria-expanded=${this._isOpen}
|
|
426
616
|
aria-haspopup="listbox"
|
|
427
617
|
aria-autocomplete="list"
|
|
428
|
-
aria-controls=${
|
|
618
|
+
aria-controls=${listboxId}
|
|
429
619
|
aria-disabled=${String(this._isDisabled)}
|
|
430
|
-
aria-readonly=${this.readonly ? "true" :
|
|
431
|
-
aria-label=${
|
|
432
|
-
aria-labelledby=${
|
|
433
|
-
aria-activedescendant=${
|
|
620
|
+
aria-readonly=${this.readonly ? "true" : nothing}
|
|
621
|
+
aria-label=${ifDefined(this.ariaLabel)}
|
|
622
|
+
aria-labelledby=${labelledbyText ? labelId : nothing}
|
|
623
|
+
aria-activedescendant=${activeDescendant}
|
|
434
624
|
tabindex="-1"
|
|
435
625
|
>
|
|
436
626
|
<slot name="trigger" @slotchange=${this._onTriggerSlotChange}></slot>
|
|
437
|
-
${this._hasTriggerSlot ?
|
|
627
|
+
${!this._hasTriggerSlot ? html`<web-ui-input
|
|
438
628
|
class="autocomplete-input"
|
|
439
629
|
.value=${this._value}
|
|
440
630
|
placeholder=${this.placeholder}
|
|
@@ -443,24 +633,24 @@ var N = class extends n(x) {
|
|
|
443
633
|
?disabled=${this._isDisabled}
|
|
444
634
|
?readonly=${this.readonly}
|
|
445
635
|
?required=${this.required}
|
|
446
|
-
aria-label=${
|
|
447
|
-
></web-ui-input>`}
|
|
636
|
+
aria-label=${ifDefined(this.ariaLabel || labelledbyText || void 0)}
|
|
637
|
+
></web-ui-input>` : nothing}
|
|
448
638
|
</div>
|
|
449
639
|
<div
|
|
450
640
|
class="autocomplete-a11y-listbox"
|
|
451
|
-
id=${
|
|
641
|
+
id=${listboxId}
|
|
452
642
|
role="listbox"
|
|
453
643
|
?hidden=${!this._isOpen}
|
|
454
644
|
aria-hidden=${String(!this._isOpen)}
|
|
455
645
|
>
|
|
456
|
-
${
|
|
457
|
-
id=${this._getA11yOptionId(
|
|
646
|
+
${visibleOptions.map((option) => html`<div
|
|
647
|
+
id=${this._getA11yOptionId(option)}
|
|
458
648
|
role="option"
|
|
459
|
-
aria-selected=${
|
|
649
|
+
aria-selected=${option.value === this._selectedValue ? "true" : "false"}
|
|
460
650
|
aria-hidden=${String(!this._isOpen)}
|
|
461
|
-
aria-disabled=${String(
|
|
651
|
+
aria-disabled=${String(option.disabled)}
|
|
462
652
|
>
|
|
463
|
-
${
|
|
653
|
+
${option.label}
|
|
464
654
|
</div>`)}
|
|
465
655
|
</div>
|
|
466
656
|
<div
|
|
@@ -479,46 +669,64 @@ var N = class extends n(x) {
|
|
|
479
669
|
`;
|
|
480
670
|
}
|
|
481
671
|
};
|
|
482
|
-
|
|
672
|
+
__decorate([property({
|
|
483
673
|
type: String,
|
|
484
|
-
reflect:
|
|
485
|
-
})],
|
|
674
|
+
reflect: true
|
|
675
|
+
})], WebUiAutocomplete.prototype, "placeholder", void 0);
|
|
676
|
+
__decorate([property({
|
|
486
677
|
type: Boolean,
|
|
487
|
-
reflect:
|
|
488
|
-
})],
|
|
678
|
+
reflect: true
|
|
679
|
+
})], WebUiAutocomplete.prototype, "borderless", void 0);
|
|
680
|
+
__decorate([property({
|
|
489
681
|
type: Boolean,
|
|
490
|
-
reflect:
|
|
491
|
-
})],
|
|
682
|
+
reflect: true
|
|
683
|
+
})], WebUiAutocomplete.prototype, "disabled", void 0);
|
|
684
|
+
__decorate([property({
|
|
492
685
|
type: Boolean,
|
|
493
|
-
reflect:
|
|
494
|
-
})],
|
|
686
|
+
reflect: true
|
|
687
|
+
})], WebUiAutocomplete.prototype, "readonly", void 0);
|
|
688
|
+
__decorate([property({
|
|
495
689
|
type: Boolean,
|
|
496
|
-
reflect:
|
|
497
|
-
})],
|
|
690
|
+
reflect: true
|
|
691
|
+
})], WebUiAutocomplete.prototype, "required", void 0);
|
|
692
|
+
__decorate([property({
|
|
498
693
|
type: Boolean,
|
|
499
|
-
reflect:
|
|
500
|
-
})],
|
|
694
|
+
reflect: true
|
|
695
|
+
})], WebUiAutocomplete.prototype, "portal", void 0);
|
|
696
|
+
__decorate([property({
|
|
501
697
|
type: Boolean,
|
|
502
|
-
reflect:
|
|
698
|
+
reflect: true,
|
|
503
699
|
attribute: "no-scroll-lock"
|
|
504
|
-
})],
|
|
700
|
+
})], WebUiAutocomplete.prototype, "noScrollLock", void 0);
|
|
701
|
+
__decorate([property({
|
|
505
702
|
type: Boolean,
|
|
506
|
-
reflect:
|
|
703
|
+
reflect: true,
|
|
507
704
|
attribute: "allow-custom-value"
|
|
508
|
-
})],
|
|
705
|
+
})], WebUiAutocomplete.prototype, "allowCustomValue", void 0);
|
|
706
|
+
__decorate([property({ attribute: false })], WebUiAutocomplete.prototype, "overlayContainer", void 0);
|
|
707
|
+
__decorate([property({
|
|
509
708
|
type: String,
|
|
510
|
-
reflect:
|
|
511
|
-
})],
|
|
709
|
+
reflect: true
|
|
710
|
+
})], WebUiAutocomplete.prototype, "name", void 0);
|
|
711
|
+
__decorate([property({
|
|
512
712
|
type: String,
|
|
513
713
|
attribute: "aria-label"
|
|
514
|
-
})],
|
|
714
|
+
})], WebUiAutocomplete.prototype, "ariaLabel", void 0);
|
|
715
|
+
__decorate([property({
|
|
515
716
|
type: String,
|
|
516
717
|
attribute: "aria-labelledby"
|
|
517
|
-
})],
|
|
718
|
+
})], WebUiAutocomplete.prototype, "ariaLabelledby", void 0);
|
|
719
|
+
__decorate([property({
|
|
518
720
|
type: String,
|
|
519
|
-
reflect:
|
|
520
|
-
})],
|
|
521
|
-
|
|
522
|
-
|
|
721
|
+
reflect: true
|
|
722
|
+
})], WebUiAutocomplete.prototype, "filter", null);
|
|
723
|
+
__decorate([state()], WebUiAutocomplete.prototype, "_value", void 0);
|
|
724
|
+
__decorate([state()], WebUiAutocomplete.prototype, "_selectedValue", void 0);
|
|
725
|
+
__decorate([state()], WebUiAutocomplete.prototype, "_isOpen", void 0);
|
|
726
|
+
__decorate([state()], WebUiAutocomplete.prototype, "_activeIndex", void 0);
|
|
727
|
+
__decorate([state()], WebUiAutocomplete.prototype, "_focused", void 0);
|
|
728
|
+
__decorate([state()], WebUiAutocomplete.prototype, "_hasTriggerSlot", void 0);
|
|
729
|
+
WebUiAutocomplete = _WebUiAutocomplete = __decorate([customElement("web-ui-autocomplete")], WebUiAutocomplete);
|
|
730
|
+
export { WebUiAutocomplete };
|
|
523
731
|
|
|
524
732
|
//# sourceMappingURL=index.js.map
|