@andespindola/ui-core 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{floating-ui.dom-BPemvNRD.js → floating-ui.dom-BZk7Blsu.js} +93 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/ui-accordion-item.cjs.entry.js +1 -1
- package/dist/cjs/ui-accordion.cjs.entry.js +1 -1
- package/dist/cjs/ui-alert.cjs.entry.js +40 -0
- package/dist/cjs/ui-avatar-group.cjs.entry.js +17 -0
- package/dist/cjs/ui-avatar.cjs.entry.js +2 -2
- package/dist/cjs/ui-badge.cjs.entry.js +7 -2
- package/dist/cjs/ui-breadcrumb-item.cjs.entry.js +23 -0
- package/dist/cjs/ui-breadcrumb.cjs.entry.js +17 -0
- package/dist/cjs/ui-button.cjs.entry.js +5 -3
- package/dist/cjs/ui-card.cjs.entry.js +1 -1
- package/dist/cjs/ui-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/ui-combobox.cjs.entry.js +153 -0
- package/dist/cjs/ui-container.cjs.entry.js +26 -0
- package/dist/cjs/ui-date-picker.cjs.entry.js +171 -0
- package/dist/cjs/ui-dialog.cjs.entry.js +1 -1
- package/dist/cjs/ui-drawer.cjs.entry.js +1 -1
- package/dist/cjs/ui-dropdown-item.cjs.entry.js +1 -1
- package/dist/cjs/ui-dropdown-menu.cjs.entry.js +2 -2
- package/dist/cjs/ui-field.cjs.entry.js +1 -1
- package/dist/cjs/ui-file-upload.cjs.entry.js +57 -0
- package/dist/cjs/ui-grid.cjs.entry.js +34 -0
- package/dist/cjs/ui-input.cjs.entry.js +10 -2
- package/dist/cjs/ui-label.cjs.entry.js +1 -1
- package/dist/cjs/ui-navbar.cjs.entry.js +17 -0
- package/dist/cjs/ui-pagination.cjs.entry.js +63 -0
- package/dist/cjs/ui-popover.cjs.entry.js +2 -2
- package/dist/cjs/ui-progress-circular.cjs.entry.js +44 -0
- package/dist/cjs/ui-progress.cjs.entry.js +1 -1
- package/dist/cjs/ui-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/ui-rating.cjs.entry.js +45 -0
- package/dist/cjs/ui-reveal.cjs.entry.js +1 -1
- package/dist/cjs/ui-scroll-progress.cjs.entry.js +1 -1
- package/dist/cjs/ui-section.cjs.entry.js +1 -1
- package/dist/cjs/ui-segmented.cjs.entry.js +31 -0
- package/dist/cjs/ui-select.cjs.entry.js +1 -1
- package/dist/cjs/ui-separator.cjs.entry.js +1 -1
- package/dist/cjs/ui-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/ui-slider.cjs.entry.js +1 -1
- package/dist/cjs/ui-spinner.cjs.entry.js +1 -1
- package/dist/cjs/ui-stack.cjs.entry.js +53 -0
- package/dist/cjs/ui-stat.cjs.entry.js +28 -0
- package/dist/cjs/ui-switch.cjs.entry.js +1 -1
- package/dist/cjs/ui-table.cjs.entry.js +25 -0
- package/dist/cjs/ui-tabs.cjs.entry.js +2 -2
- package/dist/cjs/ui-textarea.cjs.entry.js +1 -1
- package/dist/cjs/ui-theme-toggle.cjs.entry.js +1 -1
- package/dist/cjs/ui-toast.cjs.entry.js +1 -1
- package/dist/cjs/ui-toaster.cjs.entry.js +1 -1
- package/dist/cjs/ui-tooltip.cjs.entry.js +2 -2
- package/dist/cjs/uikit.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +17 -0
- package/dist/collection/components/ui-accordion/ui-accordion.js +1 -1
- package/dist/collection/components/ui-accordion-item/ui-accordion-item.js +1 -1
- package/dist/collection/components/ui-alert/ui-alert.css +95 -0
- package/dist/collection/components/ui-alert/ui-alert.js +134 -0
- package/dist/collection/components/ui-avatar/ui-avatar.css +31 -0
- package/dist/collection/components/ui-avatar/ui-avatar.js +20 -1
- package/dist/collection/components/ui-avatar-group/ui-avatar-group.css +22 -0
- package/dist/collection/components/ui-avatar-group/ui-avatar-group.js +21 -0
- package/dist/collection/components/ui-badge/ui-badge.css +26 -0
- package/dist/collection/components/ui-badge/ui-badge.js +63 -1
- package/dist/collection/components/ui-breadcrumb/ui-breadcrumb.css +15 -0
- package/dist/collection/components/ui-breadcrumb/ui-breadcrumb.js +18 -0
- package/dist/collection/components/ui-breadcrumb-item/ui-breadcrumb-item.css +30 -0
- package/dist/collection/components/ui-breadcrumb-item/ui-breadcrumb-item.js +69 -0
- package/dist/collection/components/ui-button/ui-button.css +13 -1
- package/dist/collection/components/ui-button/ui-button.js +24 -2
- package/dist/collection/components/ui-card/ui-card.js +1 -1
- package/dist/collection/components/ui-checkbox/ui-checkbox.css +6 -2
- package/dist/collection/components/ui-checkbox/ui-checkbox.js +1 -1
- package/dist/collection/components/ui-combobox/ui-combobox.css +93 -0
- package/dist/collection/components/ui-combobox/ui-combobox.js +248 -0
- package/dist/collection/components/ui-container/ui-container.css +38 -0
- package/dist/collection/components/ui-container/ui-container.js +79 -0
- package/dist/collection/components/ui-date-picker/ui-date-picker.css +176 -0
- package/dist/collection/components/ui-date-picker/ui-date-picker.js +243 -0
- package/dist/collection/components/ui-dialog/ui-dialog.js +1 -1
- package/dist/collection/components/ui-drawer/ui-drawer.js +1 -1
- package/dist/collection/components/ui-dropdown-item/ui-dropdown-item.js +1 -1
- package/dist/collection/components/ui-dropdown-menu/ui-dropdown-menu.js +1 -1
- package/dist/collection/components/ui-field/ui-field.js +1 -1
- package/dist/collection/components/ui-file-upload/ui-file-upload.css +79 -0
- package/dist/collection/components/ui-file-upload/ui-file-upload.js +151 -0
- package/dist/collection/components/ui-grid/ui-grid.css +8 -0
- package/dist/collection/components/ui-grid/ui-grid.js +106 -0
- package/dist/collection/components/ui-input/ui-input.css +65 -14
- package/dist/collection/components/ui-input/ui-input.js +29 -1
- package/dist/collection/components/ui-label/ui-label.js +1 -1
- package/dist/collection/components/ui-navbar/ui-navbar.css +36 -0
- package/dist/collection/components/ui-navbar/ui-navbar.js +18 -0
- package/dist/collection/components/ui-pagination/ui-pagination.css +59 -0
- package/dist/collection/components/ui-pagination/ui-pagination.js +147 -0
- package/dist/collection/components/ui-popover/ui-popover.js +1 -1
- package/dist/collection/components/ui-progress/ui-progress.js +1 -1
- package/dist/collection/components/ui-progress-circular/ui-progress-circular.css +46 -0
- package/dist/collection/components/ui-progress-circular/ui-progress-circular.js +171 -0
- package/dist/collection/components/ui-radio-group/ui-radio-group.js +1 -1
- package/dist/collection/components/ui-rating/ui-rating.css +52 -0
- package/dist/collection/components/ui-rating/ui-rating.js +134 -0
- package/dist/collection/components/ui-reveal/ui-reveal.js +1 -1
- package/dist/collection/components/ui-scroll-progress/ui-scroll-progress.js +1 -1
- package/dist/collection/components/ui-section/ui-section.js +1 -1
- package/dist/collection/components/ui-segmented/ui-segmented.css +46 -0
- package/dist/collection/components/ui-segmented/ui-segmented.js +99 -0
- package/dist/collection/components/ui-select/ui-select.js +1 -1
- package/dist/collection/components/ui-separator/ui-separator.js +1 -1
- package/dist/collection/components/ui-skeleton/ui-skeleton.js +1 -1
- package/dist/collection/components/ui-slider/ui-slider.js +1 -1
- package/dist/collection/components/ui-spinner/ui-spinner.js +1 -1
- package/dist/collection/components/ui-stack/ui-stack.css +8 -0
- package/dist/collection/components/ui-stack/ui-stack.js +184 -0
- package/dist/collection/components/ui-stat/ui-stat.css +69 -0
- package/dist/collection/components/ui-stat/ui-stat.js +118 -0
- package/dist/collection/components/ui-switch/ui-switch.js +1 -1
- package/dist/collection/components/ui-table/ui-table.css +46 -0
- package/dist/collection/components/ui-table/ui-table.js +119 -0
- package/dist/collection/components/ui-tabs/ui-tabs.js +2 -2
- package/dist/collection/components/ui-textarea/ui-textarea.js +1 -1
- package/dist/collection/components/ui-theme-toggle/ui-theme-toggle.js +1 -1
- package/dist/collection/components/ui-toast/ui-toast.js +1 -1
- package/dist/collection/components/ui-toaster/ui-toaster.js +1 -1
- package/dist/collection/components/ui-tooltip/ui-tooltip.js +1 -1
- package/dist/components/{p-fApcMAzN.js → p-DDJE__UC.js} +1 -1
- package/dist/{uikit/p-CyBRmmbs.js → components/p-DDtwbwIl.js} +1 -1
- package/dist/components/{p-Bz9HyboB.js → p-DUT2Q8Df.js} +1 -1
- package/dist/components/ui-accordion-item.js +1 -1
- package/dist/components/ui-accordion.js +1 -1
- package/dist/components/ui-alert.d.ts +11 -0
- package/dist/components/ui-alert.js +1 -0
- package/dist/components/ui-avatar-group.d.ts +11 -0
- package/dist/components/ui-avatar-group.js +1 -0
- package/dist/components/ui-avatar.js +1 -1
- package/dist/components/ui-badge.js +1 -1
- package/dist/components/ui-breadcrumb-item.d.ts +11 -0
- package/dist/components/ui-breadcrumb-item.js +1 -0
- package/dist/components/ui-breadcrumb.d.ts +11 -0
- package/dist/components/ui-breadcrumb.js +1 -0
- package/dist/components/ui-button.js +1 -1
- package/dist/components/ui-card.js +1 -1
- package/dist/components/ui-checkbox.js +1 -1
- package/dist/components/ui-combobox.d.ts +11 -0
- package/dist/components/ui-combobox.js +1 -0
- package/dist/components/ui-container.d.ts +11 -0
- package/dist/components/ui-container.js +1 -0
- package/dist/components/ui-date-picker.d.ts +11 -0
- package/dist/components/ui-date-picker.js +1 -0
- package/dist/components/ui-dialog.js +1 -1
- package/dist/components/ui-drawer.js +1 -1
- package/dist/components/ui-dropdown-item.js +1 -1
- package/dist/components/ui-dropdown-menu.js +1 -1
- package/dist/components/ui-field.js +1 -1
- package/dist/components/ui-file-upload.d.ts +11 -0
- package/dist/components/ui-file-upload.js +1 -0
- package/dist/components/ui-grid.d.ts +11 -0
- package/dist/components/ui-grid.js +1 -0
- package/dist/components/ui-input.js +1 -1
- package/dist/components/ui-label.js +1 -1
- package/dist/components/ui-loading-overlay.js +1 -1
- package/dist/components/ui-navbar.d.ts +11 -0
- package/dist/components/ui-navbar.js +1 -0
- package/dist/components/ui-pagination.d.ts +11 -0
- package/dist/components/ui-pagination.js +1 -0
- package/dist/components/ui-popover.js +1 -1
- package/dist/components/ui-progress-circular.d.ts +11 -0
- package/dist/components/ui-progress-circular.js +1 -0
- package/dist/components/ui-progress.js +1 -1
- package/dist/components/ui-radio-group.js +1 -1
- package/dist/components/ui-rating.d.ts +11 -0
- package/dist/components/ui-rating.js +1 -0
- package/dist/components/ui-reveal.js +1 -1
- package/dist/components/ui-scroll-progress.js +1 -1
- package/dist/components/ui-section.js +1 -1
- package/dist/components/ui-segmented.d.ts +11 -0
- package/dist/components/ui-segmented.js +1 -0
- package/dist/components/ui-select.js +1 -1
- package/dist/components/ui-separator.js +1 -1
- package/dist/components/ui-skeleton.js +1 -1
- package/dist/components/ui-slider.js +1 -1
- package/dist/components/ui-spinner.js +1 -1
- package/dist/components/ui-stack.d.ts +11 -0
- package/dist/components/ui-stack.js +1 -0
- package/dist/components/ui-stat.d.ts +11 -0
- package/dist/components/ui-stat.js +1 -0
- package/dist/components/ui-switch.js +1 -1
- package/dist/components/ui-table.d.ts +11 -0
- package/dist/components/ui-table.js +1 -0
- package/dist/components/ui-tabs.js +1 -1
- package/dist/components/ui-textarea.js +1 -1
- package/dist/components/ui-theme-toggle.js +1 -1
- package/dist/components/ui-toast.js +1 -1
- package/dist/components/ui-toaster.js +1 -1
- package/dist/components/ui-tooltip.js +1 -1
- package/dist/esm/{floating-ui.dom-CyBRmmbs.js → floating-ui.dom-DDtwbwIl.js} +93 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/ui-accordion-item.entry.js +1 -1
- package/dist/esm/ui-accordion.entry.js +1 -1
- package/dist/esm/ui-alert.entry.js +38 -0
- package/dist/esm/ui-avatar-group.entry.js +15 -0
- package/dist/esm/ui-avatar.entry.js +2 -2
- package/dist/esm/ui-badge.entry.js +8 -3
- package/dist/esm/ui-breadcrumb-item.entry.js +21 -0
- package/dist/esm/ui-breadcrumb.entry.js +15 -0
- package/dist/esm/ui-button.entry.js +5 -3
- package/dist/esm/ui-card.entry.js +1 -1
- package/dist/esm/ui-checkbox.entry.js +2 -2
- package/dist/esm/ui-combobox.entry.js +151 -0
- package/dist/esm/ui-container.entry.js +24 -0
- package/dist/esm/ui-date-picker.entry.js +169 -0
- package/dist/esm/ui-dialog.entry.js +1 -1
- package/dist/esm/ui-drawer.entry.js +1 -1
- package/dist/esm/ui-dropdown-item.entry.js +1 -1
- package/dist/esm/ui-dropdown-menu.entry.js +2 -2
- package/dist/esm/ui-field.entry.js +1 -1
- package/dist/esm/ui-file-upload.entry.js +55 -0
- package/dist/esm/ui-grid.entry.js +32 -0
- package/dist/esm/ui-input.entry.js +10 -2
- package/dist/esm/ui-label.entry.js +1 -1
- package/dist/esm/ui-navbar.entry.js +15 -0
- package/dist/esm/ui-pagination.entry.js +61 -0
- package/dist/esm/ui-popover.entry.js +2 -2
- package/dist/esm/ui-progress-circular.entry.js +42 -0
- package/dist/esm/ui-progress.entry.js +1 -1
- package/dist/esm/ui-radio-group.entry.js +1 -1
- package/dist/esm/ui-rating.entry.js +43 -0
- package/dist/esm/ui-reveal.entry.js +1 -1
- package/dist/esm/ui-scroll-progress.entry.js +1 -1
- package/dist/esm/ui-section.entry.js +1 -1
- package/dist/esm/ui-segmented.entry.js +29 -0
- package/dist/esm/ui-select.entry.js +1 -1
- package/dist/esm/ui-separator.entry.js +1 -1
- package/dist/esm/ui-skeleton.entry.js +1 -1
- package/dist/esm/ui-slider.entry.js +1 -1
- package/dist/esm/ui-spinner.entry.js +1 -1
- package/dist/esm/ui-stack.entry.js +51 -0
- package/dist/esm/ui-stat.entry.js +26 -0
- package/dist/esm/ui-switch.entry.js +1 -1
- package/dist/esm/ui-table.entry.js +23 -0
- package/dist/esm/ui-tabs.entry.js +2 -2
- package/dist/esm/ui-textarea.entry.js +1 -1
- package/dist/esm/ui-theme-toggle.entry.js +1 -1
- package/dist/esm/ui-toast.entry.js +1 -1
- package/dist/esm/ui-toaster.entry.js +1 -1
- package/dist/esm/ui-tooltip.entry.js +2 -2
- package/dist/esm/uikit.js +1 -1
- package/dist/types/components/ui-alert/ui-alert.d.ts +17 -0
- package/dist/types/components/ui-avatar/ui-avatar.d.ts +2 -0
- package/dist/types/components/ui-avatar-group/ui-avatar-group.d.ts +6 -0
- package/dist/types/components/ui-badge/ui-badge.d.ts +7 -0
- package/dist/types/components/ui-breadcrumb/ui-breadcrumb.d.ts +3 -0
- package/dist/types/components/ui-breadcrumb-item/ui-breadcrumb-item.d.ts +8 -0
- package/dist/types/components/ui-button/ui-button.d.ts +2 -0
- package/dist/types/components/ui-combobox/ui-combobox.d.ts +38 -0
- package/dist/types/components/ui-container/ui-container.d.ts +8 -0
- package/dist/types/components/ui-date-picker/ui-date-picker.d.ts +42 -0
- package/dist/types/components/ui-file-upload/ui-file-upload.d.ts +24 -0
- package/dist/types/components/ui-grid/ui-grid.d.ts +10 -0
- package/dist/types/components/ui-input/ui-input.d.ts +3 -0
- package/dist/types/components/ui-navbar/ui-navbar.d.ts +3 -0
- package/dist/types/components/ui-pagination/ui-pagination.d.ts +15 -0
- package/dist/types/components/ui-progress-circular/ui-progress-circular.d.ts +17 -0
- package/dist/types/components/ui-rating/ui-rating.d.ts +17 -0
- package/dist/types/components/ui-segmented/ui-segmented.d.ts +15 -0
- package/dist/types/components/ui-stack/ui-stack.d.ts +17 -0
- package/dist/types/components/ui-stat/ui-stat.d.ts +13 -0
- package/dist/types/components/ui-table/ui-table.d.ts +16 -0
- package/dist/types/components.d.ts +961 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/uikit/{p-8a238373.entry.js → p-008118af.entry.js} +1 -1
- package/dist/uikit/p-0715db16.entry.js +1 -0
- package/dist/uikit/p-10afa395.entry.js +1 -0
- package/dist/uikit/p-1449f229.entry.js +1 -0
- package/dist/uikit/p-1514ae37.entry.js +1 -0
- package/dist/uikit/{p-83159bfc.entry.js → p-1685191b.entry.js} +1 -1
- package/dist/uikit/p-1ef7948f.entry.js +1 -0
- package/dist/uikit/{p-e54139a1.entry.js → p-283e7623.entry.js} +1 -1
- package/dist/uikit/p-2d92ce04.entry.js +1 -0
- package/dist/uikit/{p-a0ccdb22.entry.js → p-3995852d.entry.js} +1 -1
- package/dist/uikit/p-3b1f92da.entry.js +1 -0
- package/dist/uikit/p-3fdfad2e.entry.js +1 -0
- package/dist/uikit/p-4044ebde.entry.js +1 -0
- package/dist/uikit/{p-9f0d4ae1.entry.js → p-413cfbc6.entry.js} +1 -1
- package/dist/uikit/p-45e80e73.entry.js +1 -0
- package/dist/uikit/p-4ba0e4bc.entry.js +1 -0
- package/dist/uikit/p-5951a496.entry.js +1 -0
- package/dist/uikit/p-5e0bc34a.entry.js +1 -0
- package/dist/uikit/{p-d8e7ae10.entry.js → p-60910c03.entry.js} +1 -1
- package/dist/uikit/{p-58ed99a2.entry.js → p-62881327.entry.js} +1 -1
- package/dist/uikit/p-6c51a216.entry.js +1 -0
- package/dist/uikit/p-6d363a02.entry.js +1 -0
- package/dist/uikit/{p-777c6902.entry.js → p-8535f5c9.entry.js} +1 -1
- package/dist/uikit/p-88238a16.entry.js +1 -0
- package/dist/uikit/{p-9aa557d1.entry.js → p-894fc85f.entry.js} +1 -1
- package/dist/uikit/p-8b882367.entry.js +1 -0
- package/dist/uikit/p-9310b73b.entry.js +1 -0
- package/dist/uikit/{p-4a1abc1c.entry.js → p-99b7e461.entry.js} +1 -1
- package/dist/uikit/p-9d8d420e.entry.js +1 -0
- package/dist/uikit/{p-97de6ea6.entry.js → p-9dbe7e12.entry.js} +1 -1
- package/dist/uikit/{p-29fe5b7f.entry.js → p-9f09fcec.entry.js} +1 -1
- package/dist/{components/p-CyBRmmbs.js → uikit/p-DDtwbwIl.js} +1 -1
- package/dist/uikit/{p-d6c9bfbc.entry.js → p-a3d819cd.entry.js} +1 -1
- package/dist/uikit/{p-777d8c7a.entry.js → p-b0f2b1c8.entry.js} +1 -1
- package/dist/uikit/{p-e0652ddf.entry.js → p-b7e30398.entry.js} +1 -1
- package/dist/uikit/p-bac2c523.entry.js +1 -0
- package/dist/uikit/p-bbc718ef.entry.js +1 -0
- package/dist/uikit/{p-b0aba484.entry.js → p-bdd30484.entry.js} +1 -1
- package/dist/uikit/{p-32df7fd0.entry.js → p-c1a9db7c.entry.js} +1 -1
- package/dist/uikit/p-c2138fb9.entry.js +1 -0
- package/dist/uikit/p-c94492ff.entry.js +1 -0
- package/dist/uikit/{p-38cbea54.entry.js → p-ccca2aeb.entry.js} +1 -1
- package/dist/uikit/p-d7ab158f.entry.js +1 -0
- package/dist/uikit/p-da807078.entry.js +1 -0
- package/dist/uikit/p-e2065caa.entry.js +1 -0
- package/dist/uikit/{p-9b43d670.entry.js → p-f2983e94.entry.js} +1 -1
- package/dist/uikit/p-f4344cce.entry.js +1 -0
- package/dist/uikit/{p-ed1111eb.entry.js → p-fb89d9a4.entry.js} +1 -1
- package/dist/uikit/p-fbe7806c.entry.js +1 -0
- package/dist/uikit/p-ffcd1faf.entry.js +1 -0
- package/dist/uikit/uikit.esm.js +1 -1
- package/package.json +8 -3
- package/dist/uikit/p-0096eefe.entry.js +0 -1
- package/dist/uikit/p-11350db1.entry.js +0 -1
- package/dist/uikit/p-128ae3e4.entry.js +0 -1
- package/dist/uikit/p-24edfe3e.entry.js +0 -1
- package/dist/uikit/p-280337b0.entry.js +0 -1
- package/dist/uikit/p-3c866608.entry.js +0 -1
- package/dist/uikit/p-5555523c.entry.js +0 -1
- package/dist/uikit/p-6fa4be86.entry.js +0 -1
- package/dist/uikit/p-7b2a9e68.entry.js +0 -1
- package/dist/uikit/p-9c57cf57.entry.js +0 -1
- package/dist/uikit/p-cf56c9ba.entry.js +0 -1
- package/dist/uikit/p-d13860dc.entry.js +0 -1
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-DYwlrXg_.js';
|
|
2
|
+
import { a as autoUpdate, c as computePosition, o as offset, f as flip, s as shift, b as size } from './floating-ui.dom-DDtwbwIl.js';
|
|
3
|
+
|
|
4
|
+
const uiComboboxCss = () => `:host{display:block}.field{display:flex;align-items:center;gap:0.5rem;width:100%;height:2.75rem;padding:0 0.875rem;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);background:var(--ui-panel);backdrop-filter:blur(22px);transition:all var(--ui-duration) var(--ui-ease);box-sizing:border-box}.field:hover{border-color:var(--ui-border-strong)}.field:focus-within{border-color:var(--ui-accent);box-shadow:0 0 0 2px var(--ui-ring)}.input{flex:1;min-width:0;height:100%;border:none;background:transparent;color:var(--ui-foreground);font-family:var(--ui-font-sans);font-size:0.875rem;outline:none}.input::placeholder{color:var(--ui-text-faint)}.list{position:fixed;top:0;left:0;z-index:50;max-height:16rem;overflow-y:auto;padding:0.25rem;font-family:var(--ui-font-sans);color:var(--ui-foreground);border:1px solid var(--ui-border);background:var(--ui-panel-strong);box-shadow:var(--ui-shadow-lg);backdrop-filter:blur(22px);border-radius:var(--ui-radius);visibility:hidden;opacity:0;transition:opacity var(--ui-duration) var(--ui-ease), visibility var(--ui-duration) var(--ui-ease)}.list.is-open{visibility:visible;opacity:1}.option{padding:0.5rem 0.75rem;font-size:0.875rem;color:var(--ui-foreground);border-radius:var(--ui-radius-sm);cursor:pointer;transition:background var(--ui-duration) var(--ui-ease)}.option.active{background:var(--ui-chip)}.option.selected{color:var(--ui-accent)}.empty{padding:0.5rem 0.75rem;font-size:0.875rem;color:var(--ui-text-faint)}`;
|
|
5
|
+
|
|
6
|
+
const UiCombobox = class {
|
|
7
|
+
constructor(hostRef) {
|
|
8
|
+
registerInstance(this, hostRef);
|
|
9
|
+
this.uiChange = createEvent(this, "uiChange");
|
|
10
|
+
/** Opções disponíveis para autocomplete. */
|
|
11
|
+
this.options = [];
|
|
12
|
+
/** Valor selecionado. */
|
|
13
|
+
this.value = "";
|
|
14
|
+
/** Placeholder do campo. */
|
|
15
|
+
this.placeholder = "";
|
|
16
|
+
/** Texto digitado no campo. */
|
|
17
|
+
this.query = "";
|
|
18
|
+
/** Indica se a lista flutuante está aberta. */
|
|
19
|
+
this.open = false;
|
|
20
|
+
/** Índice da opção destacada. */
|
|
21
|
+
this.activeIndex = -1;
|
|
22
|
+
this.listId = `ui-combobox-list-${Math.random().toString(36).slice(2, 9)}`;
|
|
23
|
+
this.onInput = (event) => {
|
|
24
|
+
this.query = event.target.value;
|
|
25
|
+
this.activeIndex = -1;
|
|
26
|
+
this.setOpen(true);
|
|
27
|
+
};
|
|
28
|
+
this.onFocus = () => {
|
|
29
|
+
this.setOpen(true);
|
|
30
|
+
};
|
|
31
|
+
this.onKeydown = (event) => {
|
|
32
|
+
const items = this.filtered;
|
|
33
|
+
switch (event.key) {
|
|
34
|
+
case "ArrowDown":
|
|
35
|
+
event.preventDefault();
|
|
36
|
+
if (!this.open) {
|
|
37
|
+
this.setOpen(true);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (items.length === 0)
|
|
41
|
+
return;
|
|
42
|
+
this.activeIndex = (this.activeIndex + 1) % items.length;
|
|
43
|
+
break;
|
|
44
|
+
case "ArrowUp":
|
|
45
|
+
event.preventDefault();
|
|
46
|
+
if (items.length === 0)
|
|
47
|
+
return;
|
|
48
|
+
this.activeIndex =
|
|
49
|
+
(this.activeIndex - 1 + items.length) % items.length;
|
|
50
|
+
break;
|
|
51
|
+
case "Enter":
|
|
52
|
+
if (this.open && this.activeIndex >= 0 && items[this.activeIndex]) {
|
|
53
|
+
event.preventDefault();
|
|
54
|
+
this.select(items[this.activeIndex]);
|
|
55
|
+
}
|
|
56
|
+
break;
|
|
57
|
+
case "Escape":
|
|
58
|
+
if (this.open) {
|
|
59
|
+
event.preventDefault();
|
|
60
|
+
this.setOpen(false);
|
|
61
|
+
}
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
this.onDocumentClick = (event) => {
|
|
66
|
+
if (!this.open)
|
|
67
|
+
return;
|
|
68
|
+
if (event.composedPath().includes(this.host))
|
|
69
|
+
return;
|
|
70
|
+
this.setOpen(false);
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
componentWillLoad() {
|
|
74
|
+
const selected = this.options.find((option) => option.value === this.value);
|
|
75
|
+
if (selected)
|
|
76
|
+
this.query = selected.label;
|
|
77
|
+
}
|
|
78
|
+
disconnectedCallback() {
|
|
79
|
+
this.stop();
|
|
80
|
+
document.removeEventListener("click", this.onDocumentClick);
|
|
81
|
+
}
|
|
82
|
+
get filtered() {
|
|
83
|
+
const term = this.query.toLowerCase();
|
|
84
|
+
return this.options.filter((option) => option.label.toLowerCase().includes(term));
|
|
85
|
+
}
|
|
86
|
+
setOpen(value) {
|
|
87
|
+
if (this.open === value)
|
|
88
|
+
return;
|
|
89
|
+
this.open = value;
|
|
90
|
+
if (value) {
|
|
91
|
+
requestAnimationFrame(() => this.start());
|
|
92
|
+
document.addEventListener("click", this.onDocumentClick);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this.stop();
|
|
96
|
+
this.activeIndex = -1;
|
|
97
|
+
document.removeEventListener("click", this.onDocumentClick);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
start() {
|
|
101
|
+
if (!this.inputEl || !this.listEl)
|
|
102
|
+
return;
|
|
103
|
+
this.stop();
|
|
104
|
+
this.cleanup = autoUpdate(this.inputEl, this.listEl, () => {
|
|
105
|
+
if (!this.inputEl || !this.listEl)
|
|
106
|
+
return;
|
|
107
|
+
computePosition(this.inputEl, this.listEl, {
|
|
108
|
+
placement: "bottom-start",
|
|
109
|
+
middleware: [
|
|
110
|
+
offset(6),
|
|
111
|
+
flip(),
|
|
112
|
+
shift({ padding: 8 }),
|
|
113
|
+
size({
|
|
114
|
+
apply: ({ rects, elements }) => {
|
|
115
|
+
Object.assign(elements.floating.style, {
|
|
116
|
+
width: `${rects.reference.width}px`,
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
}),
|
|
120
|
+
],
|
|
121
|
+
}).then(({ x, y }) => {
|
|
122
|
+
Object.assign(this.listEl.style, { left: `${x}px`, top: `${y}px` });
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
stop() {
|
|
127
|
+
this.cleanup?.();
|
|
128
|
+
this.cleanup = undefined;
|
|
129
|
+
}
|
|
130
|
+
select(option) {
|
|
131
|
+
this.value = option.value;
|
|
132
|
+
this.query = option.label;
|
|
133
|
+
this.setOpen(false);
|
|
134
|
+
this.uiChange.emit(option.value);
|
|
135
|
+
}
|
|
136
|
+
render() {
|
|
137
|
+
const items = this.filtered;
|
|
138
|
+
return (h(Host, { key: '64d332f96d0cb39e1889eb56dbf448f67e5ed240' }, h("div", { key: '30f829b5eff180aa97a2bbb2f90a4e289768df71', class: "field" }, h("input", { key: 'f6df95047db674d2e49d34fed6057cffc86eab49', class: "input", type: "text", role: "combobox", value: this.query, placeholder: this.placeholder, autocomplete: "off", "aria-expanded": this.open ? "true" : "false", "aria-controls": this.listId, "aria-autocomplete": "list", ref: (el) => (this.inputEl = el), onInput: this.onInput, onFocus: this.onFocus, onKeyDown: this.onKeydown })), h("div", { key: 'de55c7ad59dfa3e35aeac8799366e3ee849d1398', id: this.listId, class: { list: true, "is-open": this.open }, role: "listbox", ref: (el) => (this.listEl = el) }, items.length === 0 ? (h("div", { class: "empty" }, "Nenhum resultado")) : (items.map((option, index) => (h("div", { class: {
|
|
139
|
+
option: true,
|
|
140
|
+
active: index === this.activeIndex,
|
|
141
|
+
selected: option.value === this.value,
|
|
142
|
+
}, role: "option", "aria-selected": option.value === this.value ? "true" : "false", onMouseEnter: () => (this.activeIndex = index), onMouseDown: (event) => {
|
|
143
|
+
event.preventDefault();
|
|
144
|
+
this.select(option);
|
|
145
|
+
} }, option.label)))))));
|
|
146
|
+
}
|
|
147
|
+
get host() { return getElement(this); }
|
|
148
|
+
};
|
|
149
|
+
UiCombobox.style = uiComboboxCss();
|
|
150
|
+
|
|
151
|
+
export { UiCombobox as ui_combobox };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { r as registerInstance, h, H as Host } from './index-DYwlrXg_.js';
|
|
2
|
+
|
|
3
|
+
const uiContainerCss = () => `:host{display:block;width:100%}.container{margin-inline:auto;width:100%;font-family:var(--ui-font-sans)}.size-sm{max-width:40rem}.size-md{max-width:48rem}.size-lg{max-width:64rem}.size-xl{max-width:80rem}.size-full{max-width:none}.padded{padding-inline:1.25rem}@media (min-width: 640px){.padded{padding-inline:2rem}}`;
|
|
4
|
+
|
|
5
|
+
const UiContainer = class {
|
|
6
|
+
constructor(hostRef) {
|
|
7
|
+
registerInstance(this, hostRef);
|
|
8
|
+
/** Largura máxima do container. */
|
|
9
|
+
this.size = "lg";
|
|
10
|
+
/** Aplica padding lateral responsivo. */
|
|
11
|
+
this.padded = true;
|
|
12
|
+
}
|
|
13
|
+
render() {
|
|
14
|
+
const classes = {
|
|
15
|
+
container: true,
|
|
16
|
+
[`size-${this.size}`]: true,
|
|
17
|
+
padded: this.padded,
|
|
18
|
+
};
|
|
19
|
+
return (h(Host, { key: 'd9f407cdd15aa38d7e21898f4088d58846e38f22' }, h("div", { key: '7c7596a79dedc3daf94ac5440447c4608e037854', class: classes }, h("slot", { key: '5005378ea1514e2d96fa0cdba219055161ee6688' }))));
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
UiContainer.style = uiContainerCss();
|
|
23
|
+
|
|
24
|
+
export { UiContainer as ui_container };
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-DYwlrXg_.js';
|
|
2
|
+
import { a as autoUpdate, c as computePosition, o as offset, f as flip, s as shift } from './floating-ui.dom-DDtwbwIl.js';
|
|
3
|
+
|
|
4
|
+
const uiDatePickerCss = () => `:host{display:inline-block;font-family:var(--ui-font-sans)}.field{display:inline-flex;align-items:center;justify-content:space-between;gap:0.5rem;width:100%;min-width:12rem;height:2.75rem;padding:0 0.875rem;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);background:var(--ui-panel);color:var(--ui-foreground);font-family:var(--ui-font-sans);font-size:0.875rem;text-align:left;cursor:pointer;backdrop-filter:blur(22px);transition:all var(--ui-duration) var(--ui-ease);box-sizing:border-box}.field:hover{border-color:var(--ui-border-strong)}.field:focus-visible{outline:none;border-color:var(--ui-accent);box-shadow:0 0 0 2px var(--ui-ring)}.label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ui-foreground)}.label.placeholder{color:var(--ui-text-faint)}.icon{flex:none;color:var(--ui-text-muted)}.calendar{position:fixed;top:0;left:0;z-index:50;width:17rem;max-width:calc(100vw - 1rem);padding:1rem;font-family:var(--ui-font-sans);color:var(--ui-foreground);border:1px solid var(--ui-border);background:var(--ui-panel-strong);box-shadow:var(--ui-shadow-lg);backdrop-filter:blur(22px);border-radius:var(--ui-radius);visibility:hidden;opacity:0;transform:scale(0.96);transition:opacity var(--ui-duration) var(--ui-ease), transform var(--ui-duration) var(--ui-ease)}.calendar.is-open{visibility:visible;opacity:1;transform:scale(1)}.header{display:flex;align-items:center;justify-content:space-between;margin-bottom:0.75rem}.month-label{font-size:0.875rem;font-weight:600;text-transform:capitalize;color:var(--ui-foreground)}.nav{display:inline-flex;align-items:center;justify-content:center;flex:none;width:2rem;height:2rem;padding:0;border:none;border-radius:var(--ui-radius-full);background:transparent;color:var(--ui-text-soft);cursor:pointer;transition:all var(--ui-duration) var(--ui-ease)}.nav:hover{background:var(--ui-chip);color:var(--ui-foreground)}.weekdays{display:grid;grid-template-columns:repeat(7, 1fr);margin-bottom:0.25rem}.weekday{display:flex;align-items:center;justify-content:center;height:1.75rem;font-size:0.7rem;color:var(--ui-text-faint)}.grid{display:grid;grid-template-columns:repeat(7, 1fr);gap:0.125rem;justify-items:center}.day{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:1px solid transparent;border-radius:var(--ui-radius-full);background:transparent;color:var(--ui-foreground);font-family:var(--ui-font-sans);font-size:0.8125rem;cursor:pointer;transition:all var(--ui-duration) var(--ui-ease)}.day.empty{cursor:default;pointer-events:none}.day:hover:not(.empty):not(.selected){background:var(--ui-chip)}.day.today{border-color:var(--ui-accent)}.day.selected{background:var(--ui-accent);color:var(--ui-accent-contrast);border-color:transparent}`;
|
|
5
|
+
|
|
6
|
+
const WEEKDAYS = ["D", "S", "T", "Q", "Q", "S", "S"];
|
|
7
|
+
const UiDatePicker = class {
|
|
8
|
+
constructor(hostRef) {
|
|
9
|
+
registerInstance(this, hostRef);
|
|
10
|
+
this.uiChange = createEvent(this, "uiChange");
|
|
11
|
+
/** Data selecionada no formato ISO "YYYY-MM-DD". */
|
|
12
|
+
this.value = "";
|
|
13
|
+
/** Texto exibido quando nenhuma data está selecionada. */
|
|
14
|
+
this.placeholder = "Selecione a data";
|
|
15
|
+
/** Controla a visibilidade do calendário. */
|
|
16
|
+
this.open = false;
|
|
17
|
+
this.onTriggerClick = (event) => {
|
|
18
|
+
event.stopPropagation();
|
|
19
|
+
this.setOpen(!this.open);
|
|
20
|
+
};
|
|
21
|
+
this.onDocumentClick = (event) => {
|
|
22
|
+
if (!this.open)
|
|
23
|
+
return;
|
|
24
|
+
if (event.composedPath().includes(this.host))
|
|
25
|
+
return;
|
|
26
|
+
this.setOpen(false);
|
|
27
|
+
};
|
|
28
|
+
this.onKeydown = (event) => {
|
|
29
|
+
if (event.key === "Escape" && this.open)
|
|
30
|
+
this.setOpen(false);
|
|
31
|
+
};
|
|
32
|
+
this.prevMonth = (event) => {
|
|
33
|
+
event.stopPropagation();
|
|
34
|
+
if (this.viewMonth === 0) {
|
|
35
|
+
this.viewMonth = 11;
|
|
36
|
+
this.viewYear -= 1;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.viewMonth -= 1;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
this.nextMonth = (event) => {
|
|
43
|
+
event.stopPropagation();
|
|
44
|
+
if (this.viewMonth === 11) {
|
|
45
|
+
this.viewMonth = 0;
|
|
46
|
+
this.viewYear += 1;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.viewMonth += 1;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
componentWillLoad() {
|
|
54
|
+
this.syncViewFromValue();
|
|
55
|
+
}
|
|
56
|
+
onValueChange() {
|
|
57
|
+
this.syncViewFromValue();
|
|
58
|
+
}
|
|
59
|
+
disconnectedCallback() {
|
|
60
|
+
this.stop();
|
|
61
|
+
document.removeEventListener("click", this.onDocumentClick);
|
|
62
|
+
document.removeEventListener("keydown", this.onKeydown);
|
|
63
|
+
}
|
|
64
|
+
syncViewFromValue() {
|
|
65
|
+
const parsed = this.parseValue(this.value);
|
|
66
|
+
const base = parsed ?? new Date();
|
|
67
|
+
this.viewYear = base.getFullYear();
|
|
68
|
+
this.viewMonth = base.getMonth();
|
|
69
|
+
}
|
|
70
|
+
/** Converte o ISO em Date local, evitando shift de fuso. */
|
|
71
|
+
parseValue(value) {
|
|
72
|
+
if (!value)
|
|
73
|
+
return null;
|
|
74
|
+
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value);
|
|
75
|
+
if (!match)
|
|
76
|
+
return null;
|
|
77
|
+
const [, y, m, d] = match;
|
|
78
|
+
return new Date(Number(y), Number(m) - 1, Number(d));
|
|
79
|
+
}
|
|
80
|
+
/** Gera o ISO "YYYY-MM-DD" a partir de componentes locais. */
|
|
81
|
+
toISO(year, month, day) {
|
|
82
|
+
const mm = String(month + 1).padStart(2, "0");
|
|
83
|
+
const dd = String(day).padStart(2, "0");
|
|
84
|
+
return `${year}-${mm}-${dd}`;
|
|
85
|
+
}
|
|
86
|
+
formatValue() {
|
|
87
|
+
const parsed = this.parseValue(this.value);
|
|
88
|
+
return parsed ? parsed.toLocaleDateString("pt-BR") : "";
|
|
89
|
+
}
|
|
90
|
+
monthLabel() {
|
|
91
|
+
return new Date(this.viewYear, this.viewMonth, 1).toLocaleDateString("pt-BR", { month: "long", year: "numeric" });
|
|
92
|
+
}
|
|
93
|
+
setOpen(value) {
|
|
94
|
+
if (this.open === value)
|
|
95
|
+
return;
|
|
96
|
+
this.open = value;
|
|
97
|
+
if (value) {
|
|
98
|
+
this.syncViewFromValue();
|
|
99
|
+
requestAnimationFrame(() => this.start());
|
|
100
|
+
document.addEventListener("click", this.onDocumentClick);
|
|
101
|
+
document.addEventListener("keydown", this.onKeydown);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
this.stop();
|
|
105
|
+
document.removeEventListener("click", this.onDocumentClick);
|
|
106
|
+
document.removeEventListener("keydown", this.onKeydown);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
start() {
|
|
110
|
+
if (!this.triggerEl || !this.floatingEl)
|
|
111
|
+
return;
|
|
112
|
+
this.stop();
|
|
113
|
+
this.cleanup = autoUpdate(this.triggerEl, this.floatingEl, () => {
|
|
114
|
+
if (!this.triggerEl || !this.floatingEl)
|
|
115
|
+
return;
|
|
116
|
+
computePosition(this.triggerEl, this.floatingEl, {
|
|
117
|
+
placement: "bottom-start",
|
|
118
|
+
middleware: [offset(6), flip(), shift({ padding: 8 })],
|
|
119
|
+
}).then(({ x, y }) => {
|
|
120
|
+
Object.assign(this.floatingEl.style, { left: `${x}px`, top: `${y}px` });
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
stop() {
|
|
125
|
+
this.cleanup?.();
|
|
126
|
+
this.cleanup = undefined;
|
|
127
|
+
}
|
|
128
|
+
selectDay(day) {
|
|
129
|
+
this.value = this.toISO(this.viewYear, this.viewMonth, day);
|
|
130
|
+
this.setOpen(false);
|
|
131
|
+
this.uiChange.emit(this.value);
|
|
132
|
+
}
|
|
133
|
+
buildDays() {
|
|
134
|
+
const firstWeekday = new Date(this.viewYear, this.viewMonth, 1).getDay();
|
|
135
|
+
const daysInMonth = new Date(this.viewYear, this.viewMonth + 1, 0).getDate();
|
|
136
|
+
const leading = Array.from({ length: firstWeekday }, () => 0);
|
|
137
|
+
const days = Array.from({ length: daysInMonth }, (_, i) => i + 1);
|
|
138
|
+
return [...leading, ...days];
|
|
139
|
+
}
|
|
140
|
+
isToday(day) {
|
|
141
|
+
const now = new Date();
|
|
142
|
+
return (day === now.getDate() &&
|
|
143
|
+
this.viewMonth === now.getMonth() &&
|
|
144
|
+
this.viewYear === now.getFullYear());
|
|
145
|
+
}
|
|
146
|
+
isSelected(day) {
|
|
147
|
+
return this.value === this.toISO(this.viewYear, this.viewMonth, day);
|
|
148
|
+
}
|
|
149
|
+
render() {
|
|
150
|
+
const display = this.formatValue();
|
|
151
|
+
return (h(Host, { key: '4ba4b256b16f49d1e65ffbe774c50065f097482f' }, h("button", { key: '0fa06810a3533cafcc808e680f61c3f289148ec5', type: "button", class: "field", ref: (el) => (this.triggerEl = el), onClick: this.onTriggerClick, "aria-haspopup": "dialog", "aria-expanded": this.open ? "true" : "false" }, h("span", { key: 'fd6c3f01d8ba6212284b70c8830a007fc6dc4fcb', class: { label: true, placeholder: !display } }, display || this.placeholder), h("svg", { key: 'aebef2e4b5928db3fdd0eee7754d6d7c430459d4', class: "icon", viewBox: "0 0 24 24", width: "18", height: "18", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("rect", { key: '8a87dd6a1230546145cd0d6626309c4c3835d379', x: "3", y: "4", width: "18", height: "18", rx: "2" }), h("path", { key: 'e3bca802e11ff11bbbd767c92233843a2b767e78', d: "M16 2v4M8 2v4M3 10h18" }))), h("div", { key: '1a8d439b816c7dcf0789e26788aee838e311b087', class: { calendar: true, "is-open": this.open }, role: "dialog", ref: (el) => (this.floatingEl = el) }, h("div", { key: '82d98e286b405ddfd12cc65cffe26b14ace1a31c', class: "header" }, h("button", { key: '6a01a9a3458d3e7b1dfc5ff153266106b9242511', type: "button", class: "nav", "aria-label": "M\u00EAs anterior", onClick: this.prevMonth }, h("svg", { key: 'cea0c6c7aecdf96eb2b4e42bf1b559fe7ea6e443', viewBox: "0 0 24 24", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("path", { key: '54d095e51205b3df5f52af6d2d28f89f2dd4db5c', d: "m15 18-6-6 6-6" }))), h("span", { key: '2dd822f49aa7f8bb419079a0c47f29bbfb7a22c4', class: "month-label" }, this.monthLabel()), h("button", { key: '553659e9903e96b84dcecbc86270d915dcd947f5', type: "button", class: "nav", "aria-label": "Pr\u00F3ximo m\u00EAs", onClick: this.nextMonth }, h("svg", { key: 'a73cdb32bedad0004a1d84b44e7866e008864fd8', viewBox: "0 0 24 24", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("path", { key: 'dac9e5c1fc22d2eefc73046269246ae07af53037', d: "m9 18 6-6-6-6" })))), h("div", { key: 'e731ae7eab8fee747826a58634cad540a60317a5', class: "weekdays" }, WEEKDAYS.map((label) => (h("span", { class: "weekday" }, label)))), h("div", { key: '4aa9f208fb5b20b3b35ae14f27d435918db3f380', class: "grid" }, this.buildDays().map((day) => day === 0 ? (h("span", { class: "day empty" })) : (h("button", { type: "button", class: {
|
|
152
|
+
day: true,
|
|
153
|
+
today: this.isToday(day),
|
|
154
|
+
selected: this.isSelected(day),
|
|
155
|
+
}, onClick: (event) => {
|
|
156
|
+
event.stopPropagation();
|
|
157
|
+
this.selectDay(day);
|
|
158
|
+
} }, day)))))));
|
|
159
|
+
}
|
|
160
|
+
get host() { return getElement(this); }
|
|
161
|
+
static get watchers() { return {
|
|
162
|
+
"value": [{
|
|
163
|
+
"onValueChange": 0
|
|
164
|
+
}]
|
|
165
|
+
}; }
|
|
166
|
+
};
|
|
167
|
+
UiDatePicker.style = uiDatePickerCss();
|
|
168
|
+
|
|
169
|
+
export { UiDatePicker as ui_date_picker };
|
|
@@ -42,7 +42,7 @@ const UiDialog = class {
|
|
|
42
42
|
this.open = false;
|
|
43
43
|
}
|
|
44
44
|
render() {
|
|
45
|
-
return (h(Host, { key: '
|
|
45
|
+
return (h(Host, { key: 'f0ba1e147438e9941bd748b84cca800b93e0058a' }, h("dialog", { key: '54a38db84cc2bcd5064401499c8cbc48f9355021', class: "dialog", ref: (el) => (this.dialogEl = el), onClose: this.onClose, onCancel: this.onClose, onClick: this.onBackdropClick }, h("div", { key: '658cf9b13efe14c8db0c02b14b6ace5686ca686a', class: "content" }, h("slot", { key: '00cc3a3657049aabb7c80dfdefba059a5767da78' })))));
|
|
46
46
|
}
|
|
47
47
|
static get watchers() { return {
|
|
48
48
|
"open": [{
|
|
@@ -44,7 +44,7 @@ const UiDrawer = class {
|
|
|
44
44
|
this.open = false;
|
|
45
45
|
}
|
|
46
46
|
render() {
|
|
47
|
-
return (h(Host, { key: '
|
|
47
|
+
return (h(Host, { key: '92e328d6068d3e183463e06897b9dc16e36c3be7' }, h("dialog", { key: 'd18eb940d959341831da313ee342f21f181aacfc', class: `drawer side-${this.side}`, ref: (el) => (this.dialogEl = el), onClose: this.onClose, onCancel: this.onClose, onClick: this.onBackdropClick }, h("div", { key: '9edf182db03b796ef944fbd4340d1d31db8b5321', class: "content" }, h("slot", { key: '34a67441244720ee301b9f4c2b871889a2a87d0b' })))));
|
|
48
48
|
}
|
|
49
49
|
static get watchers() { return {
|
|
50
50
|
"open": [{
|
|
@@ -16,7 +16,7 @@ const UiDropdownItem = class {
|
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
render() {
|
|
19
|
-
return (h(Host, { key: '
|
|
19
|
+
return (h(Host, { key: '46fe995e0d6496002cb4ffda00e444731f195805' }, h("button", { key: '5938fcad75c81029a321bdce5c1b2c98cb4cb6a2', type: "button", class: "item", role: "menuitem", disabled: this.disabled, onClick: this.onClick }, h("slot", { key: '32227bb1f298ab6ba3d97d1bae86b6ce713703b8' }))));
|
|
20
20
|
}
|
|
21
21
|
get host() { return getElement(this); }
|
|
22
22
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-DYwlrXg_.js';
|
|
2
|
-
import { a as autoUpdate, c as computePosition, o as offset, f as flip, s as shift } from './floating-ui.dom-
|
|
2
|
+
import { a as autoUpdate, c as computePosition, o as offset, f as flip, s as shift } from './floating-ui.dom-DDtwbwIl.js';
|
|
3
3
|
|
|
4
4
|
const uiDropdownMenuCss = () => `:host{display:inline-block}.trigger{display:inline-flex}.menu{position:fixed;top:0;left:0;z-index:50;display:flex;flex-direction:column;gap:0.125rem;min-width:10rem;max-width:calc(100vw - 1rem);padding:0.375rem;font-family:var(--ui-font-sans);color:var(--ui-foreground);border:1px solid var(--ui-border);background:var(--ui-panel-strong);box-shadow:var(--ui-shadow-lg);backdrop-filter:blur(22px);border-radius:var(--ui-radius);visibility:hidden;opacity:0;transform:scale(0.96);transition:opacity var(--ui-duration) var(--ui-ease), transform var(--ui-duration) var(--ui-ease)}.menu.is-open{visibility:visible;opacity:1;transform:scale(1)}`;
|
|
5
5
|
|
|
@@ -81,7 +81,7 @@ const UiDropdownMenu = class {
|
|
|
81
81
|
this.cleanup = undefined;
|
|
82
82
|
}
|
|
83
83
|
render() {
|
|
84
|
-
return (h(Host, { key: '
|
|
84
|
+
return (h(Host, { key: '3224e4bac8bcfeda15aa6a5411a95574795231a8' }, h("span", { key: '5f0c50e0cb28c349469be5971ac0622f05d8dd19', class: "trigger", ref: (el) => (this.triggerEl = el), onClick: this.onTriggerClick }, h("slot", { key: '616a2917a7377d00414c8fe9745ef6c1297841fa', name: "trigger" })), h("div", { key: 'efa36b327e9ba6a89b939170c296a69ffbe18e90', class: { menu: true, "is-open": this.open }, role: "menu", ref: (el) => (this.floatingEl = el) }, h("slot", { key: 'aaffbbb6b8fe37072c8344d95a902dcb667416ba' }))));
|
|
85
85
|
}
|
|
86
86
|
get host() { return getElement(this); }
|
|
87
87
|
static get watchers() { return {
|
|
@@ -9,7 +9,7 @@ const UiField = class {
|
|
|
9
9
|
this.required = false;
|
|
10
10
|
}
|
|
11
11
|
render() {
|
|
12
|
-
return (h(Host, { key: '
|
|
12
|
+
return (h(Host, { key: 'f39f480b04be85c60eaa8821358b8921d52a7801' }, h("div", { key: '22303a73ad07ca344ef29c25947443e4d43e95fb', class: "field" }, this.label && (h("label", { key: 'bf355b9c884ee0393c91f4d3cdaa38ab6d0132dc', class: "label", htmlFor: this.fieldId }, this.label, this.required && (h("span", { key: '94614ebcee5a68e180e135f5294370e272836b90', class: "required", "aria-hidden": "true" }, " *")))), h("slot", { key: '7d4b22b2741540aac3b017b882f9abfdb67c7492' }), this.error ? (h("p", { class: "error", role: "alert" }, this.error)) : (this.description && h("p", { class: "description" }, this.description)))));
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
UiField.style = uiFieldCss();
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { r as registerInstance, c as createEvent, h, H as Host } from './index-DYwlrXg_.js';
|
|
2
|
+
|
|
3
|
+
const uiFileUploadCss = () => `:host{display:block}.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0.5rem;width:100%;padding:1.5rem;border:2px dashed var(--ui-border-strong);border-radius:var(--ui-radius-lg);background:transparent;font-family:var(--ui-font-sans);cursor:pointer;transition:background var(--ui-duration) var(--ui-ease), border-color var(--ui-duration) var(--ui-ease)}.dropzone:hover,.dropzone.dragging{background:var(--ui-chip)}.dropzone:focus-visible{outline:none;box-shadow:0 0 0 2px var(--ui-ring)}.icon{color:var(--ui-text-soft)}.label{font-size:0.875rem;color:var(--ui-text-muted)}.hint{font-size:0.75rem;color:var(--ui-text-faint)}.files{list-style:none;margin:0.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:0.375rem}.file{display:flex;align-items:center;justify-content:space-between;gap:0.75rem;padding:0.5rem 0.75rem;border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-panel);font-family:var(--ui-font-sans)}.file-name{font-size:0.875rem;color:var(--ui-foreground);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size{flex-shrink:0;font-size:0.75rem;color:var(--ui-text-muted)}`;
|
|
4
|
+
|
|
5
|
+
const UiFileUpload = class {
|
|
6
|
+
constructor(hostRef) {
|
|
7
|
+
registerInstance(this, hostRef);
|
|
8
|
+
this.uiChange = createEvent(this, "uiChange");
|
|
9
|
+
/** Permite múltiplos arquivos. */
|
|
10
|
+
this.multiple = false;
|
|
11
|
+
/** Texto principal da zona de upload. */
|
|
12
|
+
this.label = "Arraste arquivos ou clique para enviar";
|
|
13
|
+
/** Arquivos atualmente selecionados. */
|
|
14
|
+
this.files = [];
|
|
15
|
+
/** Indica se há arraste sobre a zona. */
|
|
16
|
+
this.dragging = false;
|
|
17
|
+
this.openPicker = () => {
|
|
18
|
+
this.inputEl?.click();
|
|
19
|
+
};
|
|
20
|
+
this.onInputChange = (event) => {
|
|
21
|
+
const target = event.target;
|
|
22
|
+
this.setFiles(target.files);
|
|
23
|
+
};
|
|
24
|
+
this.onDragOver = (event) => {
|
|
25
|
+
event.preventDefault();
|
|
26
|
+
this.dragging = true;
|
|
27
|
+
};
|
|
28
|
+
this.onDragLeave = () => {
|
|
29
|
+
this.dragging = false;
|
|
30
|
+
};
|
|
31
|
+
this.onDrop = (event) => {
|
|
32
|
+
event.preventDefault();
|
|
33
|
+
this.dragging = false;
|
|
34
|
+
this.setFiles(event.dataTransfer?.files ?? null);
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
setFiles(list) {
|
|
38
|
+
if (!list)
|
|
39
|
+
return;
|
|
40
|
+
this.files = Array.from(list);
|
|
41
|
+
this.uiChange.emit(this.files);
|
|
42
|
+
}
|
|
43
|
+
formatSize(bytes) {
|
|
44
|
+
if (bytes >= 1024 * 1024) {
|
|
45
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
46
|
+
}
|
|
47
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
48
|
+
}
|
|
49
|
+
render() {
|
|
50
|
+
return (h(Host, { key: '675f04b6b96fcdcd10f1344c20225501671e456b' }, h("button", { key: 'bcc1bb63fa043f0778f38370d919eabfb37930f5', type: "button", class: { dropzone: true, dragging: this.dragging }, onClick: this.openPicker, onDragOver: this.onDragOver, onDragLeave: this.onDragLeave, onDrop: this.onDrop }, h("svg", { key: 'a5836edcdf54284806125e0356f0a5d9bf3e075a', class: "icon", viewBox: "0 0 24 24", width: "2rem", height: "2rem", fill: "none", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("path", { key: '093a31bf1257a470ad7447c20ff02f4ca3ce1957', d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), h("polyline", { key: 'c1eaf0285b47c402fefba5d16d3e1418df06405e', points: "17 8 12 3 7 8" }), h("line", { key: '4655c3de2b0df216d7f520eb81dc8e8a839fde25', x1: "12", y1: "3", x2: "12", y2: "15" })), h("span", { key: 'afa948d851f9df7944a2c669f9e0432fb1bb017b', class: "label" }, this.label), this.accept ? (h("span", { class: "hint" }, this.accept)) : null), h("input", { key: 'd2b97f6a23121a701da7e9296f0f06d0175c6edc', type: "file", hidden: true, accept: this.accept, multiple: this.multiple, ref: (el) => (this.inputEl = el), onChange: this.onInputChange }), this.files.length > 0 ? (h("ul", { class: "files" }, this.files.map((file) => (h("li", { class: "file" }, h("span", { class: "file-name" }, file.name), h("span", { class: "file-size" }, this.formatSize(file.size))))))) : null));
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
UiFileUpload.style = uiFileUploadCss();
|
|
54
|
+
|
|
55
|
+
export { UiFileUpload as ui_file_upload };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { r as registerInstance, h, H as Host } from './index-DYwlrXg_.js';
|
|
2
|
+
|
|
3
|
+
const uiGridCss = () => `:host{display:block}.grid{display:grid;font-family:var(--ui-font-sans)}`;
|
|
4
|
+
|
|
5
|
+
const GAP = {
|
|
6
|
+
xs: "0.25rem",
|
|
7
|
+
sm: "0.5rem",
|
|
8
|
+
md: "1rem",
|
|
9
|
+
lg: "1.5rem",
|
|
10
|
+
xl: "2rem",
|
|
11
|
+
};
|
|
12
|
+
const UiGrid = class {
|
|
13
|
+
constructor(hostRef) {
|
|
14
|
+
registerInstance(this, hostRef);
|
|
15
|
+
/** Número de colunas da grade. */
|
|
16
|
+
this.columns = 12;
|
|
17
|
+
/** Espaçamento entre células. */
|
|
18
|
+
this.gap = "md";
|
|
19
|
+
}
|
|
20
|
+
render() {
|
|
21
|
+
const style = {
|
|
22
|
+
gridTemplateColumns: this.minItemWidth
|
|
23
|
+
? `repeat(auto-fit, minmax(${this.minItemWidth}, 1fr))`
|
|
24
|
+
: `repeat(${this.columns}, minmax(0, 1fr))`,
|
|
25
|
+
gap: GAP[this.gap],
|
|
26
|
+
};
|
|
27
|
+
return (h(Host, { key: 'fa78c94117bc998616e3f30ef936527d5be66e13' }, h("div", { key: '8594c436b71b7f49434b3366ec70ea24c6b437dc', class: "grid", style: style }, h("slot", { key: '79bb94baa8dd68e82b88734d57f6e31b033a7f5f' }))));
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
UiGrid.style = uiGridCss();
|
|
31
|
+
|
|
32
|
+
export { UiGrid as ui_grid };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, H as Host } from './index-DYwlrXg_.js';
|
|
2
2
|
|
|
3
|
-
const uiInputCss = () => `:host{display:block}.
|
|
3
|
+
const uiInputCss = () => `:host{display:block}.field{display:flex;align-items:center;gap:0.5rem;width:100%;height:2.75rem;padding:0 0.875rem;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);background:var(--ui-panel);backdrop-filter:blur(22px);transition:all var(--ui-duration) var(--ui-ease);box-sizing:border-box}.field:hover:not(.disabled){border-color:var(--ui-border-strong)}.field:focus-within{border-color:var(--ui-accent);box-shadow:0 0 0 2px var(--ui-ring)}.field.invalid{border-color:var(--ui-danger)}.field.invalid:focus-within{box-shadow:0 0 0 2px color-mix(in srgb, var(--ui-danger) 40%, transparent)}.field.disabled{opacity:0.5;pointer-events:none}.input{flex:1;min-width:0;height:100%;border:none;background:transparent;color:var(--ui-foreground);font-family:var(--ui-font-sans);font-size:0.875rem;outline:none}.input::placeholder{color:var(--ui-text-faint)}.affix{display:inline-flex;align-items:center;color:var(--ui-text-muted)}.affix::slotted(svg),::slotted([slot="prefix"]),::slotted([slot="suffix"]){display:inline-flex;color:var(--ui-text-muted)}.clear{display:inline-flex;align-items:center;justify-content:center;flex:none;width:1.25rem;height:1.25rem;padding:0;border:none;border-radius:var(--ui-radius-full);background:var(--ui-chip);color:var(--ui-text-muted);cursor:pointer;transition:all var(--ui-duration) var(--ui-ease)}.clear:hover{color:var(--ui-foreground);background:var(--ui-panel-strong)}`;
|
|
4
4
|
|
|
5
5
|
const UiInput = class {
|
|
6
6
|
constructor(hostRef) {
|
|
@@ -15,6 +15,8 @@ const UiInput = class {
|
|
|
15
15
|
this.disabled = false;
|
|
16
16
|
/** Marca o campo como inválido (estilo + aria-invalid). */
|
|
17
17
|
this.invalid = false;
|
|
18
|
+
/** Exibe um botão para limpar o valor quando preenchido. */
|
|
19
|
+
this.clearable = false;
|
|
18
20
|
this.onInput = (event) => {
|
|
19
21
|
const target = event.target;
|
|
20
22
|
this.value = target.value;
|
|
@@ -23,9 +25,15 @@ const UiInput = class {
|
|
|
23
25
|
this.onChange = (event) => {
|
|
24
26
|
this.uiChange.emit(event.target.value);
|
|
25
27
|
};
|
|
28
|
+
this.clear = () => {
|
|
29
|
+
this.value = "";
|
|
30
|
+
this.uiInput.emit("");
|
|
31
|
+
this.uiChange.emit("");
|
|
32
|
+
};
|
|
26
33
|
}
|
|
27
34
|
render() {
|
|
28
|
-
|
|
35
|
+
const showClear = this.clearable && !!this.value && !this.disabled;
|
|
36
|
+
return (h(Host, { key: 'cfe13feedab47ba88763ae727eb77ca15a0c52a3' }, h("div", { key: '7c79750f2ad87a55462a2416e9d46b4558f9b279', class: { field: true, invalid: this.invalid, disabled: this.disabled } }, h("span", { key: 'dafa1e0120f0de7a041ecfdb98db4203c1d67a28', class: "affix" }, h("slot", { key: '80aef681671784cd65f473975e441027d038c340', name: "prefix" })), h("input", { key: '8bad96710b4190784302fe9ce908f33aef0bc126', class: "input", type: this.type, value: this.value, name: this.name, placeholder: this.placeholder, disabled: this.disabled, "aria-invalid": this.invalid ? "true" : null, onInput: this.onInput, onChange: this.onChange }), showClear && (h("button", { key: '4b26604a6c1ff8004afa6ef0964490ba82553d61', class: "clear", type: "button", "aria-label": "Limpar", onClick: this.clear }, h("svg", { key: '87195594cef1db73b86f1117233fdef13ee9fa1a', viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" }, h("path", { key: '66be8eddf982847bf22f59f9113b66b4e47ca005', d: "M18 6 6 18M6 6l12 12" })))), h("span", { key: '749bf6ba578fd22b2d6c34b0fb7522f5a87a33e3', class: "affix" }, h("slot", { key: 'b226025774cedd33f915c6155061044b272d77a1', name: "suffix" })))));
|
|
29
37
|
}
|
|
30
38
|
};
|
|
31
39
|
UiInput.style = uiInputCss();
|
|
@@ -7,7 +7,7 @@ const UiLabel = class {
|
|
|
7
7
|
registerInstance(this, hostRef);
|
|
8
8
|
}
|
|
9
9
|
render() {
|
|
10
|
-
return (h(Host, { key: '
|
|
10
|
+
return (h(Host, { key: '45a53d43b29ba78ac9852334536e9d7cb93e9c3c' }, h("label", { key: 'f8209140ec401f7a055d398181a421f281307a9b', class: "label" }, h("slot", { key: '50ba3bbce082e8f0c402c7acb3cd25ce822e3728' }))));
|
|
11
11
|
}
|
|
12
12
|
};
|
|
13
13
|
UiLabel.style = uiLabelCss();
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { r as registerInstance, h, H as Host } from './index-DYwlrXg_.js';
|
|
2
|
+
|
|
3
|
+
const uiNavbarCss = () => `:host{display:block}.navbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:0.75rem 1.25rem;background:var(--ui-panel-strong);backdrop-filter:blur(22px);border-bottom:1px solid var(--ui-border);font-family:var(--ui-font-sans);color:var(--ui-text-soft)}.brand{display:flex;align-items:center;gap:0.5rem;font-weight:600;color:var(--ui-foreground)}.center{display:flex;align-items:center;gap:1rem}.actions{display:flex;align-items:center;gap:0.75rem}`;
|
|
4
|
+
|
|
5
|
+
const UiNavbar = class {
|
|
6
|
+
constructor(hostRef) {
|
|
7
|
+
registerInstance(this, hostRef);
|
|
8
|
+
}
|
|
9
|
+
render() {
|
|
10
|
+
return (h(Host, { key: 'db6c3b0a7eee0812d931d4fb4c8b5ce444749b5e' }, h("nav", { key: '990bc62b051ca9f24ee5be4bf4e383873e5d8269', class: "navbar" }, h("div", { key: '999b46029fb0e0b6f5a04942d9326b30f7b0e392', class: "brand" }, h("slot", { key: '189a4521a16efdec4eee5c433b17a71028f05c90', name: "brand" })), h("div", { key: 'b3e129ad603ed6d32ec676aab96cf39e51834dec', class: "center" }, h("slot", { key: 'dc1fff1b9c536df2d88b5e92a83634d1e3bca384' })), h("div", { key: '854fac1322e96c7c67bf204af17ea665494c0fc5', class: "actions" }, h("slot", { key: '0f07b817547c866df0137f8667790b3caa65bea8', name: "actions" })))));
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
UiNavbar.style = uiNavbarCss();
|
|
14
|
+
|
|
15
|
+
export { UiNavbar as ui_navbar };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { r as registerInstance, c as createEvent, h, H as Host } from './index-DYwlrXg_.js';
|
|
2
|
+
|
|
3
|
+
const uiPaginationCss = () => `:host{display:inline-block}.pagination{display:inline-flex;align-items:center;gap:0.25rem;font-family:var(--ui-font-sans)}.page{display:inline-flex;align-items:center;justify-content:center;min-width:2.25rem;height:2.25rem;padding:0 0.5rem;border:1px solid var(--ui-border);border-radius:var(--ui-radius-sm);background:transparent;color:var(--ui-foreground);font-family:var(--ui-font-sans);font-size:0.875rem;cursor:pointer;outline:none;transition:all var(--ui-duration) var(--ui-ease)}.page:hover{border-color:var(--ui-border-strong);background:var(--ui-chip)}.page:focus-visible{box-shadow:0 0 0 2px var(--ui-ring)}.page:disabled{pointer-events:none;opacity:0.5}.page.active{background:var(--ui-accent);color:var(--ui-accent-contrast);border-color:var(--ui-accent);box-shadow:var(--ui-shadow-sm)}.ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:2.25rem;height:2.25rem;color:var(--ui-text-faint);font-size:0.875rem}`;
|
|
4
|
+
|
|
5
|
+
const UiPagination = class {
|
|
6
|
+
constructor(hostRef) {
|
|
7
|
+
registerInstance(this, hostRef);
|
|
8
|
+
this.uiChange = createEvent(this, "uiChange");
|
|
9
|
+
/** Total de páginas. */
|
|
10
|
+
this.total = 1;
|
|
11
|
+
/** Página atual. */
|
|
12
|
+
this.current = 1;
|
|
13
|
+
/** Quantidade de páginas ao redor da atual. */
|
|
14
|
+
this.siblings = 1;
|
|
15
|
+
this.clamp = (page) => Math.min(Math.max(page, 1), Math.max(this.total, 1));
|
|
16
|
+
this.go = (page) => {
|
|
17
|
+
const next = this.clamp(page);
|
|
18
|
+
if (next === this.current)
|
|
19
|
+
return;
|
|
20
|
+
this.current = next;
|
|
21
|
+
this.uiChange.emit(next);
|
|
22
|
+
};
|
|
23
|
+
this.buildRange = () => {
|
|
24
|
+
const total = Math.max(this.total, 1);
|
|
25
|
+
const current = this.clamp(this.current);
|
|
26
|
+
const siblings = Math.max(this.siblings, 0);
|
|
27
|
+
const start = Math.max(current - siblings, 1);
|
|
28
|
+
const end = Math.min(current + siblings, total);
|
|
29
|
+
const pages = new Set([1, total]);
|
|
30
|
+
for (let page = start; page <= end; page += 1)
|
|
31
|
+
pages.add(page);
|
|
32
|
+
const sorted = Array.from(pages)
|
|
33
|
+
.filter((page) => page >= 1 && page <= total)
|
|
34
|
+
.sort((a, b) => a - b);
|
|
35
|
+
const result = [];
|
|
36
|
+
let previous = 0;
|
|
37
|
+
for (const page of sorted) {
|
|
38
|
+
if (previous && page - previous > 1)
|
|
39
|
+
result.push("...");
|
|
40
|
+
result.push(page);
|
|
41
|
+
previous = page;
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
render() {
|
|
47
|
+
const total = Math.max(this.total, 1);
|
|
48
|
+
const current = this.clamp(this.current);
|
|
49
|
+
const entries = this.buildRange();
|
|
50
|
+
return (h(Host, { key: '23be36b9c734a9c43e9644337a58e4ede719215d' }, h("nav", { key: '618c7c85d1ea8f93bdd058d7ba4e61a62991e2d6', class: "pagination", role: "navigation", "aria-label": "Pagina\u00E7\u00E3o" }, h("button", { key: 'a9c0cac9d2b2fb6c61e9627158efd08f1e20f597', class: "page nav", type: "button", "aria-label": "P\u00E1gina anterior", disabled: current <= 1, onClick: () => this.go(current - 1) }, "\u2039"), entries.map((entry, index) => {
|
|
51
|
+
if (entry === "...") {
|
|
52
|
+
return (h("span", { key: `ellipsis-${index}`, class: "ellipsis", "aria-hidden": "true" }, "\u2026"));
|
|
53
|
+
}
|
|
54
|
+
const active = entry === current;
|
|
55
|
+
return (h("button", { key: entry, class: { page: true, active }, type: "button", "aria-label": `Página ${entry}`, "aria-current": active ? "page" : undefined, onClick: () => this.go(entry) }, entry));
|
|
56
|
+
}), h("button", { key: '38fb86bda60934768f24c117e8586acb35f88513', class: "page nav", type: "button", "aria-label": "Pr\u00F3xima p\u00E1gina", disabled: current >= total, onClick: () => this.go(current + 1) }, "\u203A"))));
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
UiPagination.style = uiPaginationCss();
|
|
60
|
+
|
|
61
|
+
export { UiPagination as ui_pagination };
|