@greypan/web-ui 11.2.0 → 12.0.1
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 +74 -73
- 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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/switch/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAoBa,oBAAoB;SACf,sBAAM;UACL;;UAEA;MAEb;MAIA,QAAQ;EAO+B;EACf;EACgB;EACA;EACA;UAC3B;UACA;UACA;UACA;UAET;UACA;UACA;UACA;UACA;UACA;mBACS;mBACA;EAER;EAOA;EAQA,QAAQ,mBAAmB;UAK5B;cAuBI;mBAIK;mBAiBA;mBAEA;UAIT;UAQA;UAUA;UAOA;UAUA;UAiEA;UAIA;EAMC,wBAAM;WAuDE;IACf,OAAO;IACP,QAAQ;;;QAIJ;YACI;IACR,iBAAiB"}
|
|
@@ -1,166 +1,243 @@
|
|
|
1
|
-
import
|
|
1
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
|
|
2
2
|
import "../icon/index.js";
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { installPointerFocusSuppression
|
|
6
|
-
import { FormAssociated
|
|
7
|
-
import { LabelEmptinessController
|
|
8
|
-
import { attachDragGesture
|
|
9
|
-
import { clamp
|
|
10
|
-
import
|
|
11
|
-
import { LitElement
|
|
12
|
-
import { customElement
|
|
13
|
-
import { classMap
|
|
14
|
-
import { styleMap
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
constructor(...
|
|
19
|
-
super(...
|
|
3
|
+
import glass_default from "../../classes/glass.js";
|
|
4
|
+
import lucide_loader_circle_default from "../../icons/generated/lucide-loader-circle.js";
|
|
5
|
+
import { installPointerFocusSuppression } from "../../shared/focus/pointer-focus.js";
|
|
6
|
+
import { FormAssociated, FormAssociationController, defineFormAssociation } from "../../shared/form-association/index.js";
|
|
7
|
+
import { LabelEmptinessController } from "../../shared/label-emptiness/index.js";
|
|
8
|
+
import { attachDragGesture } from "../../shared/gesture/drag-gesture.js";
|
|
9
|
+
import { clamp, normalizeProgress } from "../../shared/gesture/physics.js";
|
|
10
|
+
import style_default from "./style.js";
|
|
11
|
+
import { LitElement, html, unsafeCSS } from "lit";
|
|
12
|
+
import { customElement, property, state } from "lit/decorators.js";
|
|
13
|
+
import { classMap } from "lit/directives/class-map.js";
|
|
14
|
+
import { styleMap } from "lit/directives/style-map.js";
|
|
15
|
+
// src/components/switch/index.ts
|
|
16
|
+
installPointerFocusSuppression();
|
|
17
|
+
let WebUiSwitch = class WebUiSwitch extends FormAssociated(LitElement) {
|
|
18
|
+
constructor(..._args) {
|
|
19
|
+
super(..._args);
|
|
20
|
+
this._checked = false;
|
|
21
|
+
this._labelEmpty = false;
|
|
22
|
+
this.name = "";
|
|
23
|
+
this.value = "";
|
|
24
|
+
this.disabled = false;
|
|
25
|
+
this.required = false;
|
|
26
|
+
this.loading = false;
|
|
27
|
+
this._pressed = false;
|
|
28
|
+
this._isDragging = false;
|
|
29
|
+
this._dragOffset = 0;
|
|
30
|
+
this._dragProgress = 0;
|
|
31
|
+
this._dragged = false;
|
|
32
|
+
this._maxTravel = 20;
|
|
33
|
+
this._startOffset = 0;
|
|
34
|
+
this._dragGestureHandle = null;
|
|
35
|
+
this._tabIndexBeforeDisabled = null;
|
|
36
|
+
this._isTabIndexSuppressed = false;
|
|
37
|
+
this._handleHostClick = () => this.handleClick();
|
|
38
|
+
this._handleHostKeydown = (event) => this.handleKeydown(event);
|
|
39
|
+
this._formAssociation = defineFormAssociation({
|
|
20
40
|
host: this,
|
|
21
41
|
initialize: () => {
|
|
22
|
-
this.hasAttribute("checked")
|
|
42
|
+
if (this.hasAttribute("checked")) this._checked = true;
|
|
23
43
|
},
|
|
24
44
|
getState: () => this._checked,
|
|
25
|
-
setState: (
|
|
26
|
-
this.checked =
|
|
45
|
+
setState: (checked) => {
|
|
46
|
+
this.checked = checked;
|
|
27
47
|
},
|
|
28
48
|
getFormValue: () => this._checked ? this.value || "on" : null,
|
|
29
49
|
getFormState: () => String(this._checked),
|
|
30
|
-
restoreState: (
|
|
31
|
-
typeof
|
|
50
|
+
restoreState: (state) => {
|
|
51
|
+
if (typeof state === "string") this.checked = state === "true";
|
|
32
52
|
},
|
|
33
53
|
syncValidity: () => this._syncValidity()
|
|
34
|
-
}).make()
|
|
35
|
-
|
|
54
|
+
}).make();
|
|
55
|
+
this._formAssociationController = new FormAssociationController(this, this._formAssociation);
|
|
56
|
+
this._labelEmptiness = new LabelEmptinessController(this, ".wui-switch-label", (empty) => {
|
|
57
|
+
this._labelEmpty = empty;
|
|
36
58
|
});
|
|
37
59
|
}
|
|
38
60
|
static {
|
|
39
|
-
this.styles = [
|
|
61
|
+
this.styles = [unsafeCSS(glass_default), unsafeCSS(style_default)];
|
|
40
62
|
}
|
|
41
63
|
get checked() {
|
|
42
64
|
return this._checked;
|
|
43
65
|
}
|
|
44
|
-
set checked(
|
|
45
|
-
|
|
46
|
-
this._checked =
|
|
66
|
+
set checked(v) {
|
|
67
|
+
const old = this._checked;
|
|
68
|
+
this._checked = v;
|
|
69
|
+
this._formAssociation.sync();
|
|
70
|
+
this.requestUpdate("checked", old);
|
|
47
71
|
}
|
|
48
72
|
connectedCallback() {
|
|
49
|
-
super.connectedCallback()
|
|
73
|
+
super.connectedCallback();
|
|
74
|
+
this.addEventListener("click", this._handleHostClick);
|
|
75
|
+
this.addEventListener("keydown", this._handleHostKeydown);
|
|
76
|
+
this._syncAccessibility();
|
|
50
77
|
}
|
|
51
78
|
disconnectedCallback() {
|
|
52
|
-
super.disconnectedCallback()
|
|
79
|
+
super.disconnectedCallback();
|
|
80
|
+
this.removeEventListener("click", this._handleHostClick);
|
|
81
|
+
this.removeEventListener("keydown", this._handleHostKeydown);
|
|
82
|
+
this._dragGestureHandle?.destroy();
|
|
83
|
+
this._dragGestureHandle = null;
|
|
53
84
|
}
|
|
54
|
-
updated(
|
|
55
|
-
super.updated(
|
|
85
|
+
updated(changedProperties) {
|
|
86
|
+
super.updated(changedProperties);
|
|
87
|
+
this._syncAccessibility();
|
|
56
88
|
}
|
|
57
89
|
_syncAccessibility() {
|
|
58
|
-
this.setAttribute("role", "switch")
|
|
59
|
-
|
|
60
|
-
|
|
90
|
+
this.setAttribute("role", "switch");
|
|
91
|
+
this.setAttribute("aria-checked", String(this._checked));
|
|
92
|
+
const isDisabled = this._isDisabled || this.loading;
|
|
93
|
+
this.setAttribute("aria-disabled", String(isDisabled));
|
|
94
|
+
if (isDisabled) {
|
|
95
|
+
if (!this._isTabIndexSuppressed) {
|
|
96
|
+
this._tabIndexBeforeDisabled = this.getAttribute("tabindex");
|
|
97
|
+
this._isTabIndexSuppressed = true;
|
|
98
|
+
} else if (this.getAttribute("tabindex") !== "-1") this._tabIndexBeforeDisabled = this.getAttribute("tabindex");
|
|
99
|
+
this.tabIndex = -1;
|
|
100
|
+
} else if (this._isTabIndexSuppressed) {
|
|
101
|
+
if (this._tabIndexBeforeDisabled === null) this.tabIndex = 0;
|
|
102
|
+
else this.setAttribute("tabindex", this._tabIndexBeforeDisabled);
|
|
103
|
+
this._isTabIndexSuppressed = false;
|
|
104
|
+
} else if (!this.hasAttribute("tabindex")) this.tabIndex = 0;
|
|
61
105
|
}
|
|
62
106
|
get _isDisabled() {
|
|
63
107
|
return this.disabled || this._formAssociation.isFormDisabled();
|
|
64
108
|
}
|
|
65
109
|
_syncValidity() {
|
|
66
|
-
|
|
67
|
-
|
|
110
|
+
const internals = this._formAssociation.getInternals();
|
|
111
|
+
if (!internals || typeof internals.setValidity !== "function") return;
|
|
112
|
+
if (this._isDisabled || !this.required || this._checked) internals.setValidity({});
|
|
113
|
+
else internals.setValidity({ valueMissing: true }, "Enable this option");
|
|
68
114
|
}
|
|
69
115
|
handleClick() {
|
|
70
116
|
if (this._dragged) {
|
|
71
|
-
this._dragged =
|
|
117
|
+
this._dragged = false;
|
|
72
118
|
return;
|
|
73
119
|
}
|
|
74
|
-
this._isDisabled || this.loading
|
|
120
|
+
if (this._isDisabled || this.loading) return;
|
|
121
|
+
this._applyChecked(!this._checked);
|
|
75
122
|
}
|
|
76
123
|
handleKeydown(e) {
|
|
77
|
-
(e.key
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
124
|
+
if (e.key !== " " && e.key !== "Enter") return;
|
|
125
|
+
e.preventDefault();
|
|
126
|
+
if (e.repeat || this._isDisabled || this.loading) return;
|
|
127
|
+
this._applyChecked(!this._checked);
|
|
128
|
+
}
|
|
129
|
+
_applyChecked(next, emitInput = true) {
|
|
130
|
+
const old = this._checked;
|
|
131
|
+
if (next === old) return;
|
|
132
|
+
this._checked = next;
|
|
133
|
+
this._formAssociation.sync();
|
|
134
|
+
this.requestUpdate("checked", old);
|
|
135
|
+
if (emitInput) this.dispatchEvent(new Event("input", {
|
|
136
|
+
bubbles: true,
|
|
137
|
+
composed: true
|
|
138
|
+
}));
|
|
139
|
+
this.dispatchEvent(new Event("change", {
|
|
140
|
+
bubbles: true,
|
|
141
|
+
composed: true
|
|
142
|
+
}));
|
|
88
143
|
}
|
|
89
144
|
handlePointerDown(e) {
|
|
90
145
|
if (this._isDisabled || this.loading) return;
|
|
91
|
-
this._pressed =
|
|
92
|
-
|
|
93
|
-
if (
|
|
94
|
-
|
|
95
|
-
this._maxTravel = Math.max(1,
|
|
146
|
+
this._pressed = true;
|
|
147
|
+
const track = this.renderRoot.querySelector(".wui-switch-track");
|
|
148
|
+
if (track) {
|
|
149
|
+
const trackWidth = track.getBoundingClientRect().width || 40;
|
|
150
|
+
this._maxTravel = Math.max(1, trackWidth - 4 - 20);
|
|
96
151
|
} else this._maxTravel = 16;
|
|
97
|
-
this._startOffset = this._checked ? this._maxTravel : 0
|
|
152
|
+
this._startOffset = this._checked ? this._maxTravel : 0;
|
|
153
|
+
this._dragOffset = this._startOffset;
|
|
154
|
+
this._dragProgress = this._checked ? 1 : 0;
|
|
155
|
+
this._dragGestureHandle?.destroy();
|
|
156
|
+
this._dragGestureHandle = attachDragGesture(e, {
|
|
98
157
|
axis: "x",
|
|
99
158
|
threshold: 6,
|
|
100
|
-
onMove: (
|
|
101
|
-
this._isDragging =
|
|
102
|
-
|
|
103
|
-
this._dragOffset =
|
|
159
|
+
onMove: (info) => {
|
|
160
|
+
this._isDragging = true;
|
|
161
|
+
const current = clamp(this._startOffset + info.deltaX, 0, this._maxTravel);
|
|
162
|
+
this._dragOffset = current;
|
|
163
|
+
this._dragProgress = normalizeProgress(current, 0, this._maxTravel);
|
|
164
|
+
this.requestUpdate();
|
|
104
165
|
},
|
|
105
|
-
onEnd: (
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
166
|
+
onEnd: (info) => {
|
|
167
|
+
const wasDragging = this._isDragging;
|
|
168
|
+
this._isDragging = false;
|
|
169
|
+
this._pressed = false;
|
|
170
|
+
if (wasDragging) {
|
|
171
|
+
this._dragged = true;
|
|
172
|
+
let targetChecked = this._checked;
|
|
173
|
+
if (info.velocityX > 300) targetChecked = true;
|
|
174
|
+
else if (info.velocityX < -300) targetChecked = false;
|
|
175
|
+
else targetChecked = this._dragProgress >= .5;
|
|
176
|
+
if (targetChecked !== this._checked) {
|
|
177
|
+
const old = this._checked;
|
|
178
|
+
this._checked = targetChecked;
|
|
179
|
+
this._formAssociation.sync();
|
|
180
|
+
this.requestUpdate("checked", old);
|
|
181
|
+
this.dispatchEvent(new Event("input", {
|
|
182
|
+
bubbles: true,
|
|
183
|
+
composed: true
|
|
184
|
+
}));
|
|
185
|
+
this.dispatchEvent(new Event("change", {
|
|
186
|
+
bubbles: true,
|
|
187
|
+
composed: true
|
|
118
188
|
}));
|
|
119
189
|
} else this.requestUpdate();
|
|
120
190
|
}
|
|
121
191
|
},
|
|
122
192
|
onCancel: () => {
|
|
123
|
-
this._isDragging =
|
|
193
|
+
this._isDragging = false;
|
|
194
|
+
this._pressed = false;
|
|
195
|
+
this.requestUpdate();
|
|
124
196
|
}
|
|
125
197
|
});
|
|
126
198
|
}
|
|
127
199
|
handlePointerUp() {
|
|
128
|
-
this._pressed =
|
|
200
|
+
this._pressed = false;
|
|
129
201
|
}
|
|
130
202
|
handlePointerLeave() {
|
|
131
|
-
this._isDragging
|
|
203
|
+
if (!this._isDragging) this._pressed = false;
|
|
132
204
|
}
|
|
133
205
|
render() {
|
|
134
|
-
|
|
135
|
-
|
|
206
|
+
const isOpen = this._isDragging ? this._dragProgress >= .5 : this._checked;
|
|
207
|
+
const contentCls = {
|
|
208
|
+
"wui-switch-content": true,
|
|
136
209
|
"is-label-empty": this._labelEmpty
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
"
|
|
210
|
+
};
|
|
211
|
+
const trackCls = {
|
|
212
|
+
"wui-switch-track": true,
|
|
213
|
+
"is-open": isOpen,
|
|
140
214
|
"is-dragging": this._isDragging,
|
|
141
215
|
"is-disabled": this._isDisabled || this.loading
|
|
142
|
-
}
|
|
143
|
-
|
|
216
|
+
};
|
|
217
|
+
const labelCls = {
|
|
218
|
+
"wui-switch-label": true,
|
|
144
219
|
"is-disabled": this._isDisabled || this.loading
|
|
145
|
-
}
|
|
146
|
-
|
|
220
|
+
};
|
|
221
|
+
const thumbCls = {
|
|
222
|
+
"wui-switch-thumb": true,
|
|
147
223
|
"wui-glass": this._pressed || this._isDragging,
|
|
148
224
|
"is-pressed": this._pressed || this._isDragging
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
|
|
225
|
+
};
|
|
226
|
+
const trackStyle = this._isDragging ? { "--wui-switch-drag-offset": `${this._dragOffset}px` } : {};
|
|
227
|
+
return html`
|
|
228
|
+
<span class=${classMap(contentCls)}>
|
|
152
229
|
<span
|
|
153
|
-
class=${
|
|
154
|
-
style=${
|
|
230
|
+
class=${classMap(trackCls)}
|
|
231
|
+
style=${styleMap(trackStyle)}
|
|
155
232
|
@pointerdown=${this.handlePointerDown}
|
|
156
233
|
@pointerup=${this.handlePointerUp}
|
|
157
234
|
@pointercancel=${this.handlePointerUp}
|
|
158
235
|
@pointerleave=${this.handlePointerLeave}
|
|
159
236
|
>
|
|
160
|
-
<span class=${
|
|
161
|
-
${this.loading ?
|
|
237
|
+
<span class=${classMap(thumbCls)}>
|
|
238
|
+
${this.loading ? html`<span class="wui-switch-loading">
|
|
162
239
|
<web-ui-icon
|
|
163
|
-
.icon=${
|
|
240
|
+
.icon=${lucide_loader_circle_default}
|
|
164
241
|
size="14"
|
|
165
242
|
color="var(--wui-color-accent, #0071e3)"
|
|
166
243
|
spin
|
|
@@ -168,25 +245,35 @@ var b = class extends i(f) {
|
|
|
168
245
|
</span>` : ""}
|
|
169
246
|
</span>
|
|
170
247
|
</span>
|
|
171
|
-
<span class=${
|
|
248
|
+
<span class=${classMap(labelCls)}><slot></slot></span>
|
|
172
249
|
</span>
|
|
173
250
|
`;
|
|
174
251
|
}
|
|
175
252
|
};
|
|
176
|
-
|
|
253
|
+
__decorate([state()], WebUiSwitch.prototype, "_checked", void 0);
|
|
254
|
+
__decorate([state()], WebUiSwitch.prototype, "_labelEmpty", void 0);
|
|
255
|
+
__decorate([property({
|
|
177
256
|
type: String,
|
|
178
|
-
reflect:
|
|
179
|
-
})],
|
|
257
|
+
reflect: true
|
|
258
|
+
})], WebUiSwitch.prototype, "name", void 0);
|
|
259
|
+
__decorate([property({ type: String })], WebUiSwitch.prototype, "value", void 0);
|
|
260
|
+
__decorate([property({
|
|
180
261
|
type: Boolean,
|
|
181
|
-
reflect:
|
|
182
|
-
})],
|
|
262
|
+
reflect: true
|
|
263
|
+
})], WebUiSwitch.prototype, "disabled", void 0);
|
|
264
|
+
__decorate([property({
|
|
183
265
|
type: Boolean,
|
|
184
|
-
reflect:
|
|
185
|
-
})],
|
|
266
|
+
reflect: true
|
|
267
|
+
})], WebUiSwitch.prototype, "required", void 0);
|
|
268
|
+
__decorate([property({
|
|
186
269
|
type: Boolean,
|
|
187
|
-
reflect:
|
|
188
|
-
})],
|
|
189
|
-
|
|
190
|
-
|
|
270
|
+
reflect: true
|
|
271
|
+
})], WebUiSwitch.prototype, "loading", void 0);
|
|
272
|
+
__decorate([state()], WebUiSwitch.prototype, "_pressed", void 0);
|
|
273
|
+
__decorate([state()], WebUiSwitch.prototype, "_isDragging", void 0);
|
|
274
|
+
__decorate([state()], WebUiSwitch.prototype, "_dragOffset", void 0);
|
|
275
|
+
__decorate([state()], WebUiSwitch.prototype, "_dragProgress", void 0);
|
|
276
|
+
WebUiSwitch = __decorate([customElement("web-ui-switch")], WebUiSwitch);
|
|
277
|
+
export { WebUiSwitch };
|
|
191
278
|
|
|
192
279
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/switch/index.ts"],"sourcesContent":["import '@/components/icon'\n\nimport { html, LitElement, unsafeCSS, type PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { styleMap } from 'lit/directives/style-map.js'\n\nimport glass from '@/classes/glass.css?inline'\nimport { lucideLoaderCircle } from '@/icons'\nimport { installPointerFocusSuppression } from '@/shared/focus/pointer-focus'\nimport { FormAssociated, defineFormAssociation, FormAssociationController } from '@/shared/form-association'\nimport { attachDragGesture, type DragGestureHandle } from '@/shared/gesture/drag-gesture'\nimport { clamp, normalizeProgress } from '@/shared/gesture/physics'\nimport { LabelEmptinessController } from '@/shared/label-emptiness'\n\nimport style from './style.css?inline'\n\ninstallPointerFocusSuppression()\n\n@customElement('web-ui-switch')\nexport class WebUiSwitch extends FormAssociated(LitElement) {\n static override styles = [unsafeCSS(glass), unsafeCSS(style)]\n @state() private _checked = false\n /** label 没有可渲染内容时收掉 track 与 label 之间的 gap。 */\n @state() private _labelEmpty = false\n\n get checked(): boolean {\n return this._checked\n }\n\n set checked(v: boolean) {\n const old = this._checked\n this._checked = v\n this._formAssociation.sync()\n this.requestUpdate('checked', old)\n }\n\n @property({ type: String, reflect: true }) name = ''\n @property({ type: String }) value = ''\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) required = false\n @property({ type: Boolean, reflect: true }) loading = false\n @state() private _pressed = false\n @state() private _isDragging = false\n @state() private _dragOffset = 0\n @state() private _dragProgress = 0\n\n private _dragged = false\n private _maxTravel = 20\n private _startOffset = 0\n private _dragGestureHandle: DragGestureHandle | null = null\n private _tabIndexBeforeDisabled: string | null = null\n private _isTabIndexSuppressed = false\n private readonly _handleHostClick = () => this.handleClick()\n private readonly _handleHostKeydown = (event: KeyboardEvent) => this.handleKeydown(event)\n\n override connectedCallback() {\n super.connectedCallback()\n this.addEventListener('click', this._handleHostClick)\n this.addEventListener('keydown', this._handleHostKeydown)\n this._syncAccessibility()\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback()\n this.removeEventListener('click', this._handleHostClick)\n this.removeEventListener('keydown', this._handleHostKeydown)\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = null\n }\n\n override updated(changedProperties: PropertyValues<this>) {\n super.updated(changedProperties)\n this._syncAccessibility()\n }\n\n private _syncAccessibility() {\n this.setAttribute('role', 'switch')\n this.setAttribute('aria-checked', String(this._checked))\n const isDisabled = this._isDisabled || this.loading\n this.setAttribute('aria-disabled', String(isDisabled))\n\n if (isDisabled) {\n if (!this._isTabIndexSuppressed) {\n this._tabIndexBeforeDisabled = this.getAttribute('tabindex')\n this._isTabIndexSuppressed = true\n } else if (this.getAttribute('tabindex') !== '-1') {\n this._tabIndexBeforeDisabled = this.getAttribute('tabindex')\n }\n this.tabIndex = -1\n } else if (this._isTabIndexSuppressed) {\n if (this._tabIndexBeforeDisabled === null) this.tabIndex = 0\n else this.setAttribute('tabindex', this._tabIndexBeforeDisabled)\n this._isTabIndexSuppressed = false\n } else if (!this.hasAttribute('tabindex')) {\n this.tabIndex = 0\n }\n }\n\n private get _isDisabled(): boolean {\n return this.disabled || this._formAssociation.isFormDisabled()\n }\n\n private readonly _formAssociation = defineFormAssociation<boolean>({\n host: this,\n initialize: () => {\n if (this.hasAttribute('checked')) this._checked = true\n },\n getState: () => this._checked,\n setState: checked => {\n this.checked = checked\n },\n getFormValue: () => (this._checked ? this.value || 'on' : null),\n getFormState: () => String(this._checked),\n restoreState: state => {\n if (typeof state === 'string') this.checked = state === 'true'\n },\n syncValidity: () => this._syncValidity()\n }).make()\n\n private readonly _formAssociationController = new FormAssociationController(this, this._formAssociation)\n\n private readonly _labelEmptiness = new LabelEmptinessController(this, '.wui-switch-label', empty => {\n this._labelEmpty = empty\n })\n\n private _syncValidity() {\n const internals = this._formAssociation.getInternals()\n if (!internals || typeof internals.setValidity !== 'function') return\n if (this._isDisabled || !this.required || this._checked) internals.setValidity({})\n else internals.setValidity({ valueMissing: true }, 'Enable this option')\n }\n\n // 交互由 switch host 处理,light DOM 标签文本与轨道点击都会冒泡到这里。\n private handleClick() {\n if (this._dragged) {\n this._dragged = false\n return\n }\n if (this._isDisabled || this.loading) return\n this._applyChecked(!this._checked)\n }\n\n // 自定义 switch host 承接焦点,Space 与 Enter 都切换状态。\n private handleKeydown(e: KeyboardEvent) {\n if (e.key !== ' ' && e.key !== 'Enter') return\n e.preventDefault()\n if (e.repeat || this._isDisabled || this.loading) return\n this._applyChecked(!this._checked)\n }\n\n private _applyChecked(next: boolean, emitInput = true) {\n const old = this._checked\n if (next === old) return\n this._checked = next\n this._formAssociation.sync()\n this.requestUpdate('checked', old)\n if (emitInput) this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n\n private handlePointerDown(e: PointerEvent) {\n if (this._isDisabled || this.loading) return\n this._pressed = true\n\n const track = this.renderRoot.querySelector<HTMLElement>('.wui-switch-track')\n if (track) {\n const trackWidth = track.getBoundingClientRect().width || 40\n // 拖拽时 thumb 的 pressed 布局盒为 20px(scale(1.5) 视觉放大),因此行程按 20px 布局盒钳制;\n // 释放后的 checked 静止位移为 20px(16px thumb),两者由 transition 衔接。\n this._maxTravel = Math.max(1, trackWidth - 4 - 20)\n } else {\n this._maxTravel = 16\n }\n\n this._startOffset = this._checked ? this._maxTravel : 0\n this._dragOffset = this._startOffset\n this._dragProgress = this._checked ? 1 : 0\n\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = attachDragGesture(e, {\n axis: 'x',\n threshold: 6,\n onMove: info => {\n this._isDragging = true\n const current = clamp(this._startOffset + info.deltaX, 0, this._maxTravel)\n this._dragOffset = current\n this._dragProgress = normalizeProgress(current, 0, this._maxTravel)\n this.requestUpdate()\n },\n onEnd: info => {\n const wasDragging = this._isDragging\n this._isDragging = false\n this._pressed = false\n\n if (wasDragging) {\n this._dragged = true\n let targetChecked = this._checked\n if (info.velocityX > 300) {\n targetChecked = true\n } else if (info.velocityX < -300) {\n targetChecked = false\n } else {\n targetChecked = this._dragProgress >= 0.5\n }\n\n if (targetChecked !== this._checked) {\n const old = this._checked\n this._checked = targetChecked\n this._formAssociation.sync()\n this.requestUpdate('checked', old)\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n } else {\n this.requestUpdate()\n }\n }\n },\n onCancel: () => {\n this._isDragging = false\n this._pressed = false\n this.requestUpdate()\n }\n })\n }\n\n private handlePointerUp() {\n this._pressed = false\n }\n\n private handlePointerLeave() {\n if (!this._isDragging) {\n this._pressed = false\n }\n }\n\n override render() {\n const isOpen = this._isDragging ? this._dragProgress >= 0.5 : this._checked\n const contentCls = {\n 'wui-switch-content': true,\n 'is-label-empty': this._labelEmpty\n }\n const trackCls = {\n 'wui-switch-track': true,\n 'is-open': isOpen,\n 'is-dragging': this._isDragging,\n 'is-disabled': this._isDisabled || this.loading\n }\n const labelCls = {\n 'wui-switch-label': true,\n 'is-disabled': this._isDisabled || this.loading\n }\n // wui-glass 条件化:静止态实体白 thumb,按压/拖拽时切换为玻璃(backdrop blur +\n // 无填充 + 描边)并放大,回到最初修复不跟手问题时期的视觉结构。\n const thumbCls = {\n 'wui-switch-thumb': true,\n 'wui-glass': this._pressed || this._isDragging,\n 'is-pressed': this._pressed || this._isDragging\n }\n const trackStyle = this._isDragging ? { '--wui-switch-drag-offset': `${this._dragOffset}px` } : {}\n\n return html`\n <span class=${classMap(contentCls)}>\n <span\n class=${classMap(trackCls)}\n style=${styleMap(trackStyle)}\n @pointerdown=${this.handlePointerDown}\n @pointerup=${this.handlePointerUp}\n @pointercancel=${this.handlePointerUp}\n @pointerleave=${this.handlePointerLeave}\n >\n <span class=${classMap(thumbCls)}>\n ${\n this.loading\n ? html`<span class=\"wui-switch-loading\">\n <web-ui-icon\n .icon=${lucideLoaderCircle}\n size=\"14\"\n color=\"var(--wui-color-accent, #0071e3)\"\n spin\n ></web-ui-icon>\n </span>`\n : ''\n }\n </span>\n </span>\n <span class=${classMap(labelCls)}><slot></slot></span>\n </span>\n `\n }\n\n declare readonly $events: {\n input: Event\n change: Event\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-switch': WebUiSwitch\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["glass","style","lucideLoaderCircle"],"sources":["../../../src/components/switch/index.ts"],"sourcesContent":["import '@/components/icon'\n\nimport { html, LitElement, unsafeCSS, type PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { styleMap } from 'lit/directives/style-map.js'\n\nimport glass from '@/classes/glass.css?inline'\nimport { lucideLoaderCircle } from '@/icons'\nimport { installPointerFocusSuppression } from '@/shared/focus/pointer-focus'\nimport { FormAssociated, defineFormAssociation, FormAssociationController } from '@/shared/form-association'\nimport { attachDragGesture, type DragGestureHandle } from '@/shared/gesture/drag-gesture'\nimport { clamp, normalizeProgress } from '@/shared/gesture/physics'\nimport { LabelEmptinessController } from '@/shared/label-emptiness'\n\nimport style from './style.css?inline'\n\ninstallPointerFocusSuppression()\n\n@customElement('web-ui-switch')\nexport class WebUiSwitch extends FormAssociated(LitElement) {\n static override styles = [unsafeCSS(glass), unsafeCSS(style)]\n @state() private _checked = false\n /** label 没有可渲染内容时收掉 track 与 label 之间的 gap。 */\n @state() private _labelEmpty = false\n\n get checked(): boolean {\n return this._checked\n }\n\n set checked(v: boolean) {\n const old = this._checked\n this._checked = v\n this._formAssociation.sync()\n this.requestUpdate('checked', old)\n }\n\n @property({ type: String, reflect: true }) name = ''\n @property({ type: String }) value = ''\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) required = false\n @property({ type: Boolean, reflect: true }) loading = false\n @state() private _pressed = false\n @state() private _isDragging = false\n @state() private _dragOffset = 0\n @state() private _dragProgress = 0\n\n private _dragged = false\n private _maxTravel = 20\n private _startOffset = 0\n private _dragGestureHandle: DragGestureHandle | null = null\n private _tabIndexBeforeDisabled: string | null = null\n private _isTabIndexSuppressed = false\n private readonly _handleHostClick = () => this.handleClick()\n private readonly _handleHostKeydown = (event: KeyboardEvent) => this.handleKeydown(event)\n\n override connectedCallback() {\n super.connectedCallback()\n this.addEventListener('click', this._handleHostClick)\n this.addEventListener('keydown', this._handleHostKeydown)\n this._syncAccessibility()\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback()\n this.removeEventListener('click', this._handleHostClick)\n this.removeEventListener('keydown', this._handleHostKeydown)\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = null\n }\n\n override updated(changedProperties: PropertyValues<this>) {\n super.updated(changedProperties)\n this._syncAccessibility()\n }\n\n private _syncAccessibility() {\n this.setAttribute('role', 'switch')\n this.setAttribute('aria-checked', String(this._checked))\n const isDisabled = this._isDisabled || this.loading\n this.setAttribute('aria-disabled', String(isDisabled))\n\n if (isDisabled) {\n if (!this._isTabIndexSuppressed) {\n this._tabIndexBeforeDisabled = this.getAttribute('tabindex')\n this._isTabIndexSuppressed = true\n } else if (this.getAttribute('tabindex') !== '-1') {\n this._tabIndexBeforeDisabled = this.getAttribute('tabindex')\n }\n this.tabIndex = -1\n } else if (this._isTabIndexSuppressed) {\n if (this._tabIndexBeforeDisabled === null) this.tabIndex = 0\n else this.setAttribute('tabindex', this._tabIndexBeforeDisabled)\n this._isTabIndexSuppressed = false\n } else if (!this.hasAttribute('tabindex')) {\n this.tabIndex = 0\n }\n }\n\n private get _isDisabled(): boolean {\n return this.disabled || this._formAssociation.isFormDisabled()\n }\n\n private readonly _formAssociation = defineFormAssociation<boolean>({\n host: this,\n initialize: () => {\n if (this.hasAttribute('checked')) this._checked = true\n },\n getState: () => this._checked,\n setState: checked => {\n this.checked = checked\n },\n getFormValue: () => (this._checked ? this.value || 'on' : null),\n getFormState: () => String(this._checked),\n restoreState: state => {\n if (typeof state === 'string') this.checked = state === 'true'\n },\n syncValidity: () => this._syncValidity()\n }).make()\n\n private readonly _formAssociationController = new FormAssociationController(this, this._formAssociation)\n\n private readonly _labelEmptiness = new LabelEmptinessController(this, '.wui-switch-label', empty => {\n this._labelEmpty = empty\n })\n\n private _syncValidity() {\n const internals = this._formAssociation.getInternals()\n if (!internals || typeof internals.setValidity !== 'function') return\n if (this._isDisabled || !this.required || this._checked) internals.setValidity({})\n else internals.setValidity({ valueMissing: true }, 'Enable this option')\n }\n\n // 交互由 switch host 处理,light DOM 标签文本与轨道点击都会冒泡到这里。\n private handleClick() {\n if (this._dragged) {\n this._dragged = false\n return\n }\n if (this._isDisabled || this.loading) return\n this._applyChecked(!this._checked)\n }\n\n // 自定义 switch host 承接焦点,Space 与 Enter 都切换状态。\n private handleKeydown(e: KeyboardEvent) {\n if (e.key !== ' ' && e.key !== 'Enter') return\n e.preventDefault()\n if (e.repeat || this._isDisabled || this.loading) return\n this._applyChecked(!this._checked)\n }\n\n private _applyChecked(next: boolean, emitInput = true) {\n const old = this._checked\n if (next === old) return\n this._checked = next\n this._formAssociation.sync()\n this.requestUpdate('checked', old)\n if (emitInput) this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n\n private handlePointerDown(e: PointerEvent) {\n if (this._isDisabled || this.loading) return\n this._pressed = true\n\n const track = this.renderRoot.querySelector<HTMLElement>('.wui-switch-track')\n if (track) {\n const trackWidth = track.getBoundingClientRect().width || 40\n // 拖拽时 thumb 的 pressed 布局盒为 20px(scale(1.5) 视觉放大),因此行程按 20px 布局盒钳制;\n // 释放后的 checked 静止位移为 20px(16px thumb),两者由 transition 衔接。\n this._maxTravel = Math.max(1, trackWidth - 4 - 20)\n } else {\n this._maxTravel = 16\n }\n\n this._startOffset = this._checked ? this._maxTravel : 0\n this._dragOffset = this._startOffset\n this._dragProgress = this._checked ? 1 : 0\n\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = attachDragGesture(e, {\n axis: 'x',\n threshold: 6,\n onMove: info => {\n this._isDragging = true\n const current = clamp(this._startOffset + info.deltaX, 0, this._maxTravel)\n this._dragOffset = current\n this._dragProgress = normalizeProgress(current, 0, this._maxTravel)\n this.requestUpdate()\n },\n onEnd: info => {\n const wasDragging = this._isDragging\n this._isDragging = false\n this._pressed = false\n\n if (wasDragging) {\n this._dragged = true\n let targetChecked = this._checked\n if (info.velocityX > 300) {\n targetChecked = true\n } else if (info.velocityX < -300) {\n targetChecked = false\n } else {\n targetChecked = this._dragProgress >= 0.5\n }\n\n if (targetChecked !== this._checked) {\n const old = this._checked\n this._checked = targetChecked\n this._formAssociation.sync()\n this.requestUpdate('checked', old)\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n } else {\n this.requestUpdate()\n }\n }\n },\n onCancel: () => {\n this._isDragging = false\n this._pressed = false\n this.requestUpdate()\n }\n })\n }\n\n private handlePointerUp() {\n this._pressed = false\n }\n\n private handlePointerLeave() {\n if (!this._isDragging) {\n this._pressed = false\n }\n }\n\n override render() {\n const isOpen = this._isDragging ? this._dragProgress >= 0.5 : this._checked\n const contentCls = {\n 'wui-switch-content': true,\n 'is-label-empty': this._labelEmpty\n }\n const trackCls = {\n 'wui-switch-track': true,\n 'is-open': isOpen,\n 'is-dragging': this._isDragging,\n 'is-disabled': this._isDisabled || this.loading\n }\n const labelCls = {\n 'wui-switch-label': true,\n 'is-disabled': this._isDisabled || this.loading\n }\n // wui-glass 条件化:静止态实体白 thumb,按压/拖拽时切换为玻璃(backdrop blur +\n // 无填充 + 描边)并放大。\n const thumbCls = {\n 'wui-switch-thumb': true,\n 'wui-glass': this._pressed || this._isDragging,\n 'is-pressed': this._pressed || this._isDragging\n }\n const trackStyle = this._isDragging ? { '--wui-switch-drag-offset': `${this._dragOffset}px` } : {}\n\n return html`\n <span class=${classMap(contentCls)}>\n <span\n class=${classMap(trackCls)}\n style=${styleMap(trackStyle)}\n @pointerdown=${this.handlePointerDown}\n @pointerup=${this.handlePointerUp}\n @pointercancel=${this.handlePointerUp}\n @pointerleave=${this.handlePointerLeave}\n >\n <span class=${classMap(thumbCls)}>\n ${\n this.loading\n ? html`<span class=\"wui-switch-loading\">\n <web-ui-icon\n .icon=${lucideLoaderCircle}\n size=\"14\"\n color=\"var(--wui-color-accent, #0071e3)\"\n spin\n ></web-ui-icon>\n </span>`\n : ''\n }\n </span>\n </span>\n <span class=${classMap(labelCls)}><slot></slot></span>\n </span>\n `\n }\n\n declare readonly $events: {\n input: Event\n change: Event\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-switch': WebUiSwitch\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
export { e as default };
|
|
1
|
+
// src/components/switch/style.css?inline
|
|
2
|
+
var style_default = "*,:before,:after{box-sizing:border-box}:host{display:inline-flex}:host(:focus-visible){outline:none}:host([disabled]){cursor:not-allowed}.wui-switch-content{align-items:center;gap:8px;display:inline-flex}.wui-switch-content.is-label-empty{gap:0}.wui-switch-label.is-disabled{opacity:.4}.wui-switch-track{touch-action:none;cursor:default;-webkit-user-select:none;user-select:none;border-radius:var(--wui-radius-control,calc(infinity * 1px));background-color:var(--wui-color-surface-track,#e5e5ea);outline:var(--wui-focus-ring-width,3px) solid transparent;outline-offset:2px;width:40px;height:20px;transition:background-color var(--wui-duration-trigger,.16s) ease;justify-content:space-between;align-items:center;display:flex;position:relative}.wui-switch-track.is-open{background-color:var(--wui-color-accent,#0071e3)}.wui-switch-track.is-disabled{cursor:not-allowed;opacity:.4}.wui-switch-thumb{--wui-glass-corner-radius:calc(16px / 2);transform-origin:50%;border-radius:var(--wui-radius-control,calc(infinity * 1px));width:16px;height:16px;transition:width var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), transform var(--wui-duration-trigger,.16s) cubic-bezier(.4, 0, .2, 1), border-radius var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), background-color var(--wui-duration-press,80ms) ease, box-shadow var(--wui-duration-press,80ms) ease;position:absolute;top:2px;left:2px;overflow:hidden;transform:translate(0)scale(1)}.wui-switch-thumb.is-pressed{--wui-color-glass-ring:transparent;border-radius:var(--wui-radius-control,calc(infinity * 1px));width:20px;box-shadow:inset 0 0 0 .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 38%, transparent), inset 0 1px .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 52%, transparent), inset 0 -.5px 1px #00000008, 0 2px 20px #0003;background-color:#0000;transform:translate(0)scale(1.5)}.wui-switch-thumb:not(.is-pressed){background-color:var(--wui-color-on-control,#fff);box-shadow:1px 2px 6px #0003}.wui-switch-track.is-open .wui-switch-thumb{transform:translate(20px)scale(1)}.wui-switch-track.is-open .wui-switch-thumb.is-pressed{transform:translate(16px)scale(1.5)}.wui-switch-track.is-dragging{cursor:grabbing}:host(:focus-visible) .wui-switch-track{outline-color:var(--wui-color-focus-ring,color-mix(in srgb, var(--wui-color-accent,#0071e3) 40%, transparent))}:host([data-wui-pointer-focus]:focus-visible) .wui-switch-track{outline-color:#0000}.wui-switch-track.is-dragging .wui-switch-thumb,.wui-switch-track.is-dragging .wui-switch-thumb.is-pressed{transform:translateX(var(--wui-switch-drag-offset,0)) scale(1.5);transition:none}.wui-switch-loading{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}\n";
|
|
3
|
+
export { style_default as default };
|
|
5
4
|
|
|
6
5
|
//# sourceMappingURL=style.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","names":[],"sources":["../../../src/components/switch/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n display: inline-flex;\n}\n\n:host(:focus-visible) {\n outline: none;\n}\n\n:host([disabled]) {\n cursor: not-allowed;\n}\n\n.wui-switch-content {\n display: inline-flex;\n gap: 8px;\n align-items: center;\n}\n\n.wui-switch-content.is-label-empty {\n gap: 0;\n}\n\n.wui-switch-label.is-disabled {\n opacity: 0.4;\n}\n\n.wui-switch-track {\n touch-action: none;\n cursor: default;\n user-select: none;\n\n position: relative;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n width: 40px;\n height: 20px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: var(--wui-color-surface-track, #e5e5ea);\n outline: var(--wui-focus-ring-width, 3px) solid transparent;\n outline-offset: 2px;\n\n transition: background-color var(--wui-duration-trigger, 160ms) ease;\n\n &.is-open {\n background-color: var(--wui-color-accent, #0071e3);\n }\n\n &.is-disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n}\n\n.wui-switch-thumb {\n /* 按压态 thumb 是 16px 高的 pill(is-pressed 只加宽到 20px),取短边一半 */\n --wui-glass-corner-radius: calc(16px / 2);\n\n position: absolute;\n top: 2px;\n left: 2px;\n transform-origin: center center;\n transform: translateX(0) scale(1);\n\n overflow: hidden;\n\n width: 16px;\n height: 16px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n transition:\n width var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n transform var(--wui-duration-trigger, 160ms) cubic-bezier(0.4, 0, 0.2, 1),\n border-radius var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n background-color var(--wui-duration-press, 80ms) ease,\n box-shadow var(--wui-duration-press, 80ms) ease;\n\n &.is-pressed {\n /* 环底色随按压态转 transparent:pill 的长边长不过 3R,底色不覆盖中段,\n 去掉它只是少一层均匀灰 tint(理由见 menu-portal.css)。 */\n --wui-color-glass-ring: transparent;\n transform: translateX(0) scale(1.5);\n\n width: 20px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: transparent;\n box-shadow:\n inset 0 0 0 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 38%, transparent),\n inset 0 1px 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 52%, transparent),\n inset 0 -0.5px 1px rgb(0 0 0 / 0.03),\n 0 2px 20px rgb(0 0 0 / 0.2);\n }\n\n &:not(.is-pressed) {\n background-color: var(--wui-color-on-control, #fff);\n box-shadow: 1px 2px 6px rgb(0 0 0 / 0.2);\n }\n}\n\n.wui-switch-track.is-open .wui-switch-thumb {\n transform: translateX(20px) scale(1);\n\n &.is-pressed {\n transform: translateX(16px) scale(1.5);\n }\n}\n\n.wui-switch-track.is-dragging {\n cursor: grabbing;\n}\n\n:host(:focus-visible) .wui-switch-track {\n outline-color: var(--wui-color-focus-ring, color-mix(in srgb, var(--wui-color-accent, #0071e3) 40%, transparent));\n}\n\n:host([data-wui-pointer-focus]:focus-visible) .wui-switch-track {\n outline-color: transparent;\n}\n\n.wui-switch-track.is-dragging .wui-switch-thumb,\n.wui-switch-track.is-dragging .wui-switch-thumb.is-pressed {\n transform: translateX(var(--wui-switch-drag-offset, 0)) scale(1.5);\n transition: none;\n}\n\n.wui-switch-loading {\n pointer-events: none;\n\n position: absolute;\n inset: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"style.js","names":[],"sources":["../../../src/components/switch/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n display: inline-flex;\n}\n\n:host(:focus-visible) {\n outline: none;\n}\n\n:host([disabled]) {\n cursor: not-allowed;\n}\n\n.wui-switch-content {\n display: inline-flex;\n gap: 8px;\n align-items: center;\n}\n\n.wui-switch-content.is-label-empty {\n gap: 0;\n}\n\n.wui-switch-label.is-disabled {\n opacity: 0.4;\n}\n\n.wui-switch-track {\n touch-action: none;\n cursor: default;\n user-select: none;\n\n position: relative;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n width: 40px;\n height: 20px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: var(--wui-color-surface-track, #e5e5ea);\n outline: var(--wui-focus-ring-width, 3px) solid transparent;\n outline-offset: 2px;\n\n transition: background-color var(--wui-duration-trigger, 160ms) ease;\n\n &.is-open {\n background-color: var(--wui-color-accent, #0071e3);\n }\n\n &.is-disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n}\n\n.wui-switch-thumb {\n /* 按压态 thumb 是 16px 高的 pill(is-pressed 只加宽到 20px),取短边一半 */\n --wui-glass-corner-radius: calc(16px / 2);\n\n position: absolute;\n top: 2px;\n left: 2px;\n transform-origin: center center;\n transform: translateX(0) scale(1);\n\n overflow: hidden;\n\n width: 16px;\n height: 16px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n transition:\n width var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n transform var(--wui-duration-trigger, 160ms) cubic-bezier(0.4, 0, 0.2, 1),\n border-radius var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n background-color var(--wui-duration-press, 80ms) ease,\n box-shadow var(--wui-duration-press, 80ms) ease;\n\n &.is-pressed {\n /* 环底色随按压态转 transparent:pill 的长边长不过 3R,底色不覆盖中段,\n 去掉它只是少一层均匀灰 tint(理由见 menu-portal.css)。 */\n --wui-color-glass-ring: transparent;\n transform: translateX(0) scale(1.5);\n\n width: 20px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: transparent;\n box-shadow:\n inset 0 0 0 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 38%, transparent),\n inset 0 1px 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 52%, transparent),\n inset 0 -0.5px 1px rgb(0 0 0 / 0.03),\n 0 2px 20px rgb(0 0 0 / 0.2);\n }\n\n &:not(.is-pressed) {\n background-color: var(--wui-color-on-control, #fff);\n box-shadow: 1px 2px 6px rgb(0 0 0 / 0.2);\n }\n}\n\n.wui-switch-track.is-open .wui-switch-thumb {\n transform: translateX(20px) scale(1);\n\n &.is-pressed {\n transform: translateX(16px) scale(1.5);\n }\n}\n\n.wui-switch-track.is-dragging {\n cursor: grabbing;\n}\n\n:host(:focus-visible) .wui-switch-track {\n outline-color: var(--wui-color-focus-ring, color-mix(in srgb, var(--wui-color-accent, #0071e3) 40%, transparent));\n}\n\n:host([data-wui-pointer-focus]:focus-visible) .wui-switch-track {\n outline-color: transparent;\n}\n\n.wui-switch-track.is-dragging .wui-switch-thumb,\n.wui-switch-track.is-dragging .wui-switch-thumb.is-pressed {\n transform: translateX(var(--wui-switch-drag-offset, 0)) scale(1.5);\n transition: none;\n}\n\n.wui-switch-loading {\n pointer-events: none;\n\n position: absolute;\n inset: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n}\n"],"mappings":";AAAA,IAAA,gBAAA"}
|