shoelace-rails-ui 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/MIT-LICENSE +20 -0
- data/README.md +49 -22
- data/Rakefile +5 -13
- data/app/assets/config/shoelace_rails_ui_manifest.js +1 -0
- data/app/assets/javascripts/shoelace.js +300 -0
- data/app/assets/stylesheets/sl_styles_light.css +455 -0
- data/app/controllers/shoelace/rails/ui/application_controller.rb +8 -0
- data/app/helpers/shoelace/rails/ui/application_helper.rb +11 -0
- data/app/helpers/shoelace/rails/ui/form_helper.rb +442 -0
- data/app/jobs/shoelace/rails/ui/application_job.rb +8 -0
- data/app/mailers/shoelace/rails/ui/application_mailer.rb +10 -0
- data/app/models/shoelace/rails/ui/application_record.rb +9 -0
- data/app/views/layouts/shoelace/rails/ui/application.html.erb +15 -0
- data/config/routes.rb +2 -0
- data/lib/shoelace/rails/ui/engine.rb +15 -0
- data/lib/shoelace/rails/ui/version.rb +1 -3
- data/lib/shoelace/rails/ui.rb +2 -4
- data/lib/tasks/shoelace/rails/ui_tasks.rake +4 -0
- metadata +36 -334
- data/.DS_Store +0 -0
- data/CHANGELOG.md +0 -5
- data/CODE_OF_CONDUCT.md +0 -84
- data/Gemfile +0 -12
- data/Gemfile.lock +0 -42
- data/LICENSE.txt +0 -21
- data/README-real.md +0 -24
- data/bin/console +0 -15
- data/bin/setup +0 -8
- data/regenerate.rb +0 -48
- data/remote-src/.DS_Store +0 -0
- data/remote-src/2.0.0.beta64/.DS_Store +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/.editorconfig +0 -15
- data/remote-src/2.0.0.beta64/shoelace-next/.github/CODE_OF_CONDUCT.md +0 -44
- data/remote-src/2.0.0.beta64/shoelace-next/.github/FUNDING.yml +0 -1
- data/remote-src/2.0.0.beta64/shoelace-next/.github/ISSUE_TEMPLATE/bug_report.md +0 -36
- data/remote-src/2.0.0.beta64/shoelace-next/.github/ISSUE_TEMPLATE/config.yml +0 -4
- data/remote-src/2.0.0.beta64/shoelace-next/.github/ISSUE_TEMPLATE/feature_request.md +0 -17
- data/remote-src/2.0.0.beta64/shoelace-next/.github/SECURITY.md +0 -7
- data/remote-src/2.0.0.beta64/shoelace-next/.github/workflows/node.js.yml +0 -30
- data/remote-src/2.0.0.beta64/shoelace-next/.github/workflows/release.yml +0 -17
- data/remote-src/2.0.0.beta64/shoelace-next/.gitignore +0 -8
- data/remote-src/2.0.0.beta64/shoelace-next/.husky/pre-commit +0 -4
- data/remote-src/2.0.0.beta64/shoelace-next/.prettierignore +0 -12
- data/remote-src/2.0.0.beta64/shoelace-next/.vscode/extensions.json +0 -9
- data/remote-src/2.0.0.beta64/shoelace-next/.vscode/settings.json +0 -4
- data/remote-src/2.0.0.beta64/shoelace-next/CONTRIBUTING.md +0 -5
- data/remote-src/2.0.0.beta64/shoelace-next/LICENSE.md +0 -7
- data/remote-src/2.0.0.beta64/shoelace-next/README.md +0 -94
- data/remote-src/2.0.0.beta64/shoelace-next/cspell.json +0 -110
- data/remote-src/2.0.0.beta64/shoelace-next/custom-elements-manifest.config.js +0 -104
- data/remote-src/2.0.0.beta64/shoelace-next/docs/404.md +0 -5
- data/remote-src/2.0.0.beta64/shoelace-next/docs/_sidebar.md +0 -89
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/icons/sprite.svg +0 -1
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/chrome.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/edge.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/firefox.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/logo.svg +0 -7
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/og-image.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/opera.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/safari.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/shoe.svg +0 -134
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/tie.webp +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/touch-icon.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/twitter-card.png +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/undraw-content-team.svg +0 -80
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/undraw-not-found.svg +0 -1
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/walk.gif +0 -0
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/images/wordmark.svg +0 -7
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/code-block/code-block.css +0 -228
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/code-block/code-block.js +0 -376
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/metadata/metadata.js +0 -537
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/scroll-position/scroll-position.js +0 -24
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/search/lunr.min.js +0 -1311
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/search/search.css +0 -180
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/search/search.js +0 -293
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/theme-picker/theme-picker.css +0 -29
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/plugins/theme-picker/theme-picker.js +0 -83
- data/remote-src/2.0.0.beta64/shoelace-next/docs/assets/styles/docs.css +0 -642
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/alert.md +0 -441
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/animated-image.md +0 -128
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/animation.md +0 -351
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/avatar.md +0 -201
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/badge.md +0 -191
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/breadcrumb-item.md +0 -35
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/breadcrumb.md +0 -266
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/button-group.md +0 -470
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/button.md +0 -453
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/card.md +0 -311
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/checkbox.md +0 -71
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/color-picker.md +0 -101
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/details.md +0 -89
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/dialog.md +0 -265
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/divider.md +0 -152
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/drawer.md +0 -452
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/dropdown.md +0 -389
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/format-bytes.md +0 -126
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/format-date.md +0 -120
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/format-number.md +0 -124
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/icon-button.md +0 -160
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/icon.md +0 -711
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/image-comparer.md +0 -51
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/include.md +0 -47
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/input.md +0 -283
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/menu-item.md +0 -255
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/menu-label.md +0 -52
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/menu.md +0 -49
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/mutation-observer.md +0 -196
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/progress-bar.md +0 -144
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/progress-ring.md +0 -178
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/qr-code.md +0 -167
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/radio-group.md +0 -52
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/radio.md +0 -59
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/range.md +0 -180
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/rating.md +0 -153
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/relative-time.md +0 -105
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/resize-observer.md +0 -68
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/responsive-media.md +0 -73
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/select.md +0 -457
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/skeleton.md +0 -439
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/spinner.md +0 -86
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/split-panel.md +0 -671
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/switch.md +0 -77
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tab-group.md +0 -359
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tab-panel.md +0 -41
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tab.md +0 -29
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tag.md +0 -142
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/textarea.md +0 -184
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/tooltip.md +0 -410
- data/remote-src/2.0.0.beta64/shoelace-next/docs/components/visually-hidden.md +0 -47
- data/remote-src/2.0.0.beta64/shoelace-next/docs/frameworks/angular.md +0 -46
- data/remote-src/2.0.0.beta64/shoelace-next/docs/frameworks/react.md +0 -156
- data/remote-src/2.0.0.beta64/shoelace-next/docs/frameworks/vue.md +0 -92
- data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/customizing.md +0 -153
- data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/form-controls.md +0 -336
- data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/installation.md +0 -137
- data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/localization.md +0 -140
- data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/overview.md +0 -131
- data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/themes.md +0 -139
- data/remote-src/2.0.0.beta64/shoelace-next/docs/getting-started/usage.md +0 -173
- data/remote-src/2.0.0.beta64/shoelace-next/docs/index.html +0 -98
- data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/accessibility.md +0 -18
- data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/changelog.md +0 -925
- data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/community.md +0 -53
- data/remote-src/2.0.0.beta64/shoelace-next/docs/resources/contributing.md +0 -261
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/border-radius.md +0 -12
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/color.md +0 -439
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/elevation.md +0 -11
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/spacing.md +0 -16
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/transition.md +0 -11
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/typography.md +0 -58
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tokens/z-index.md +0 -11
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tutorials/integrating-with-laravel.md +0 -117
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tutorials/integrating-with-nextjs.md +0 -137
- data/remote-src/2.0.0.beta64/shoelace-next/docs/tutorials/integrating-with-rails.md +0 -103
- data/remote-src/2.0.0.beta64/shoelace-next/lint-staged.config.js +0 -4
- data/remote-src/2.0.0.beta64/shoelace-next/package-lock.json +0 -9534
- data/remote-src/2.0.0.beta64/shoelace-next/package.json +0 -93
- data/remote-src/2.0.0.beta64/shoelace-next/prettier.config.cjs +0 -17
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/build.js +0 -158
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-css.js +0 -42
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-icons.js +0 -71
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-metadata.js +0 -11
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-react.js +0 -63
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-search.js +0 -100
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/make-vscode-data.js +0 -58
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/plopfile.js +0 -67
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/component.hbs +0 -44
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/docs.hbs +0 -21
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/styles.hbs +0 -10
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/plop/templates/component/tests.hbs +0 -13
- data/remote-src/2.0.0.beta64/shoelace-next/scripts/shared.js +0 -18
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/alert/alert.styles.ts +0 -95
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/alert/alert.test.ts +0 -93
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/alert/alert.ts +0 -238
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/animated-image/animated-image.styles.ts +0 -52
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/animated-image/animated-image.test.ts +0 -13
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/animated-image/animated-image.ts +0 -120
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/animation/animation.styles.ts +0 -10
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/animation/animation.ts +0 -222
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/animation/animations.ts +0 -15
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/avatar/avatar.styles.ts +0 -66
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/avatar/avatar.test.ts +0 -111
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/avatar/avatar.ts +0 -83
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/badge/badge.styles.ts +0 -94
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/badge/badge.test.ts +0 -77
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/badge/badge.ts +0 -53
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb/breadcrumb.styles.ts +0 -12
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb/breadcrumb.test.ts +0 -104
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb/breadcrumb.ts +0 -82
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb-item/breadcrumb-item.styles.ts +0 -85
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb-item/breadcrumb-item.test.ts +0 -160
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/breadcrumb-item/breadcrumb-item.ts +0 -92
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/button/button.styles.ts +0 -637
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/button/button.ts +0 -209
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/button-group/button-group.styles.ts +0 -15
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/button-group/button-group.ts +0 -84
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/card/card.styles.ts +0 -62
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/card/card.test.ts +0 -139
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/card/card.ts +0 -68
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/checkbox/checkbox.styles.ts +0 -108
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/checkbox/checkbox.test.ts +0 -47
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/checkbox/checkbox.ts +0 -203
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/color-picker/color-picker.styles.ts +0 -326
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/color-picker/color-picker.test.ts +0 -43
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/color-picker/color-picker.ts +0 -853
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/details/details.styles.ts +0 -73
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/details/details.test.ts +0 -153
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/details/details.ts +0 -192
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/dialog/dialog.styles.ts +0 -106
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/dialog/dialog.test.ts +0 -135
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/dialog/dialog.ts +0 -296
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/divider/divider.styles.ts +0 -25
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/divider/divider.ts +0 -34
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/drawer/drawer.styles.ts +0 -142
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/drawer/drawer.test.ts +0 -135
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/drawer/drawer.ts +0 -377
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/dropdown/dropdown.styles.ts +0 -58
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/dropdown/dropdown.test.ts +0 -147
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/dropdown/dropdown.ts +0 -459
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/format-bytes/format-bytes.ts +0 -35
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/format-date/format-date.ts +0 -81
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/format-number/format-number.ts +0 -69
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/icon.styles.ts +0 -21
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/icon.ts +0 -131
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/library.default.ts +0 -9
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/library.system.ts +0 -97
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/library.ts +0 -49
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon/request.ts +0 -36
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon-button/icon-button.styles.ts +0 -48
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/icon-button/icon-button.ts +0 -100
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/image-comparer/image-comparer.styles.ts +0 -77
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/image-comparer/image-comparer.ts +0 -147
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/include.styles.ts +0 -10
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/include.test.ts +0 -62
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/include.ts +0 -80
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/include/request.ts +0 -23
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/input/input.styles.ts +0 -282
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/input/input.test.ts +0 -35
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/input/input.ts +0 -410
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu/menu.styles.ts +0 -18
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu/menu.ts +0 -205
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-item/menu-item.styles.ts +0 -84
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-item/menu-item.ts +0 -92
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-label/menu-label.styles.ts +0 -21
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/menu-label/menu-label.ts +0 -30
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/mutation-observer/mutation-observer.styles.ts +0 -10
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/mutation-observer/mutation-observer.test.ts +0 -13
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/mutation-observer/mutation-observer.ts +0 -118
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-bar/progress-bar.styles.ts +0 -57
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-bar/progress-bar.test.ts +0 -89
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-bar/progress-bar.ts +0 -74
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-ring/progress-ring.styles.ts +0 -66
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-ring/progress-ring.test.ts +0 -68
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/progress-ring/progress-ring.ts +0 -84
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/qr-code/qr-code.styles.ts +0 -22
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/qr-code/qr-code.ts +0 -90
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio/radio.styles.ts +0 -107
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio/radio.test.ts +0 -65
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio/radio.ts +0 -226
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio-group/radio-group.styles.ts +0 -47
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/radio-group/radio-group.ts +0 -66
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/range/range.styles.ts +0 -192
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/range/range.ts +0 -273
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/rating/rating.styles.ts +0 -79
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/rating/rating.ts +0 -249
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/relative-time/relative-time.ts +0 -116
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/resize-observer/resize-observer.styles.ts +0 -10
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/resize-observer/resize-observer.ts +0 -87
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/responsive-media/responsive-media.styles.ts +0 -36
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/responsive-media/responsive-media.ts +0 -50
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/select/select.styles.ts +0 -331
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/select/select.test.ts +0 -56
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/select/select.ts +0 -560
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/skeleton/skeleton.styles.ts +0 -60
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/skeleton/skeleton.ts +0 -46
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/spinner/spinner.styles.ts +0 -56
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/spinner/spinner.test.ts +0 -24
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/spinner/spinner.ts +0 -34
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/split-panel/split-panel.styles.ts +0 -76
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/split-panel/split-panel.test.ts +0 -13
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/split-panel/split-panel.ts +0 -272
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/switch/switch.styles.ts +0 -135
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/switch/switch.test.ts +0 -64
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/switch/switch.ts +0 -187
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab/tab.styles.ts +0 -61
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab/tab.ts +0 -104
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-group/tab-group.styles.ts +0 -209
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-group/tab-group.ts +0 -409
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-panel/tab-panel.styles.ts +0 -17
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tab-panel/tab-panel.ts +0 -49
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tag/tag.styles.ts +0 -110
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tag/tag.ts +0 -92
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/textarea/textarea.styles.ts +0 -167
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/textarea/textarea.test.ts +0 -35
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/textarea/textarea.ts +0 -339
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tooltip/tooltip.styles.ts +0 -131
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tooltip/tooltip.test.ts +0 -117
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/tooltip/tooltip.ts +0 -355
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/visually-hidden/visually-hidden.styles.ts +0 -18
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/visually-hidden/visually-hidden.test.ts +0 -39
- data/remote-src/2.0.0.beta64/shoelace-next/src/components/visually-hidden/visually-hidden.ts +0 -24
- data/remote-src/2.0.0.beta64/shoelace-next/src/declaration.d.ts +0 -8
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/animate.ts +0 -70
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/event.ts +0 -35
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/focus-visible.ts +0 -26
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/form-control.ts +0 -203
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/formdata-event-polyfill.ts +0 -93
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/math.ts +0 -8
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/modal.ts +0 -53
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/number.ts +0 -32
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/offset.ts +0 -13
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/scroll.ts +0 -57
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/slot.ts +0 -91
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/string.ts +0 -3
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/support.ts +0 -15
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/tabbable.ts +0 -81
- data/remote-src/2.0.0.beta64/shoelace-next/src/internal/watch.ts +0 -40
- data/remote-src/2.0.0.beta64/shoelace-next/src/shoelace.ts +0 -58
- data/remote-src/2.0.0.beta64/shoelace-next/src/styles/component.styles.ts +0 -23
- data/remote-src/2.0.0.beta64/shoelace-next/src/styles/form-control.styles.ts +0 -52
- data/remote-src/2.0.0.beta64/shoelace-next/src/styles/utility.styles.ts +0 -23
- data/remote-src/2.0.0.beta64/shoelace-next/src/themes/dark.styles.ts +0 -524
- data/remote-src/2.0.0.beta64/shoelace-next/src/themes/light.styles.ts +0 -524
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/de-ch.ts +0 -21
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/de.ts +0 -21
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/en.ts +0 -21
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/es.ts +0 -21
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/fr.ts +0 -21
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/he.ts +0 -21
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/ja.ts +0 -21
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/nl.ts +0 -21
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/pl.ts +0 -21
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/pt.ts +0 -21
- data/remote-src/2.0.0.beta64/shoelace-next/src/translations/ru.ts +0 -21
- data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/animation-registry.ts +0 -59
- data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/animation.ts +0 -1
- data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/base-path.ts +0 -43
- data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/form.ts +0 -22
- data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/icon-library.ts +0 -1
- data/remote-src/2.0.0.beta64/shoelace-next/src/utilities/localize.ts +0 -5
- data/remote-src/2.0.0.beta64/shoelace-next/tsconfig.json +0 -35
- data/remote-src/2.0.0.beta64/shoelace-next/vercel.json +0 -4
- data/remote-src/2.0.0.beta64/shoelace-next/web-test-runner.config.js +0 -14
- data/shoelace-rails-ui.gemspec +0 -39
- data/shoelace-rails-ui.rb +0 -0
@@ -1,389 +0,0 @@
|
|
1
|
-
# Dropdown
|
2
|
-
|
3
|
-
[component-header:sl-dropdown]
|
4
|
-
|
5
|
-
Dropdowns expose additional content that "drops down" in a panel.
|
6
|
-
|
7
|
-
Dropdowns consist of a trigger and a panel. By default, activating the trigger will expose the panel and interacting outside of the panel will close it.
|
8
|
-
|
9
|
-
Dropdowns are designed to work well with [menus](/components/menu) to provide a list of options the user can select from. However, dropdowns can also be used in lower-level applications (e.g. [color picker](/components/color-picker) and [select](/components/select)). The API gives you complete control over showing, hiding, and positioning the panel.
|
10
|
-
|
11
|
-
```html preview
|
12
|
-
<sl-dropdown>
|
13
|
-
<sl-button slot="trigger" caret>Dropdown</sl-button>
|
14
|
-
<sl-menu>
|
15
|
-
<sl-menu-item>Dropdown Item 1</sl-menu-item>
|
16
|
-
<sl-menu-item>Dropdown Item 2</sl-menu-item>
|
17
|
-
<sl-menu-item>Dropdown Item 3</sl-menu-item>
|
18
|
-
<sl-divider></sl-divider>
|
19
|
-
<sl-menu-item checked>Checked</sl-menu-item>
|
20
|
-
<sl-menu-item disabled>Disabled</sl-menu-item>
|
21
|
-
<sl-divider></sl-divider>
|
22
|
-
<sl-menu-item>
|
23
|
-
Prefix
|
24
|
-
<sl-icon slot="prefix" name="gift"></sl-icon>
|
25
|
-
</sl-menu-item>
|
26
|
-
<sl-menu-item>
|
27
|
-
Suffix Icon
|
28
|
-
<sl-icon slot="suffix" name="heart"></sl-icon>
|
29
|
-
</sl-menu-item>
|
30
|
-
</sl-menu>
|
31
|
-
</sl-dropdown>
|
32
|
-
```
|
33
|
-
|
34
|
-
```jsx react
|
35
|
-
import {
|
36
|
-
SlButton,
|
37
|
-
SlDivider,
|
38
|
-
SlDropdown,
|
39
|
-
SlIcon,
|
40
|
-
SlMenu,
|
41
|
-
SlMenuItem
|
42
|
-
} from '@shoelace-style/shoelace/dist/react';
|
43
|
-
|
44
|
-
const App = () => (
|
45
|
-
<SlDropdown>
|
46
|
-
<SlButton slot="trigger" caret>Dropdown</SlButton>
|
47
|
-
<SlMenu>
|
48
|
-
<SlMenuItem>Dropdown Item 1</SlMenuItem>
|
49
|
-
<SlMenuItem>Dropdown Item 2</SlMenuItem>
|
50
|
-
<SlMenuItem>Dropdown Item 3</SlMenuItem>
|
51
|
-
<SlDivider />
|
52
|
-
<SlMenuItem checked>Checked</SlMenuItem>
|
53
|
-
<SlMenuItem disabled>Disabled</SlMenuItem>
|
54
|
-
<SlDivider />
|
55
|
-
<SlMenuItem>
|
56
|
-
Prefix
|
57
|
-
<SlIcon slot="prefix" name="gift" />
|
58
|
-
</SlMenuItem>
|
59
|
-
<SlMenuItem>
|
60
|
-
Suffix Icon
|
61
|
-
<SlIcon slot="suffix" name="heart" />
|
62
|
-
</SlMenuItem>
|
63
|
-
</SlMenu>
|
64
|
-
</SlDropdown>
|
65
|
-
);
|
66
|
-
```
|
67
|
-
|
68
|
-
## Examples
|
69
|
-
|
70
|
-
### Getting the Selected Item
|
71
|
-
|
72
|
-
When dropdowns are used with [menus](/components/menu), you can listen for the `sl-select` event to determine which menu item was selected. The menu item element will be exposed in `event.detail.item`. You can set `value` props to make it easier to identify commands.
|
73
|
-
|
74
|
-
```html preview
|
75
|
-
<div class="dropdown-selection">
|
76
|
-
<sl-dropdown>
|
77
|
-
<sl-button slot="trigger" caret>Edit</sl-button>
|
78
|
-
<sl-menu>
|
79
|
-
<sl-menu-item value="cut">Cut</sl-menu-item>
|
80
|
-
<sl-menu-item value="copy">Copy</sl-menu-item>
|
81
|
-
<sl-menu-item value="paste">Paste</sl-menu-item>
|
82
|
-
</sl-menu>
|
83
|
-
</sl-dropdown>
|
84
|
-
</div>
|
85
|
-
|
86
|
-
<script>
|
87
|
-
const container = document.querySelector('.dropdown-selection');
|
88
|
-
const dropdown = container.querySelector('sl-dropdown');
|
89
|
-
|
90
|
-
dropdown.addEventListener('sl-select', event => {
|
91
|
-
const selectedItem = event.detail.item;
|
92
|
-
console.log(selectedItem.value);
|
93
|
-
});
|
94
|
-
</script>
|
95
|
-
```
|
96
|
-
|
97
|
-
```jsx react
|
98
|
-
import {
|
99
|
-
SlButton,
|
100
|
-
SlDropdown,
|
101
|
-
SlMenu,
|
102
|
-
SlMenuItem
|
103
|
-
} from '@shoelace-style/shoelace/dist/react';
|
104
|
-
|
105
|
-
const App = () => {
|
106
|
-
function handleSelect(event) {
|
107
|
-
const selectedItem = event.detail.item;
|
108
|
-
console.log(selectedItem.value);
|
109
|
-
}
|
110
|
-
|
111
|
-
return (
|
112
|
-
<SlDropdown>
|
113
|
-
<SlButton slot="trigger" caret>Edit</SlButton>
|
114
|
-
<SlMenu onSlSelect={handleSelect}>
|
115
|
-
<SlMenuItem value="cut">Cut</SlMenuItem>
|
116
|
-
<SlMenuItem value="copy">Copy</SlMenuItem>
|
117
|
-
<SlMenuItem value="paste">Paste</SlMenuItem>
|
118
|
-
</SlMenu>
|
119
|
-
</SlDropdown>
|
120
|
-
);
|
121
|
-
};
|
122
|
-
```
|
123
|
-
|
124
|
-
Alternatively, you can listen for the `click` event on individual menu items. Note that, using this approach, disabled menu items will still emit a `click` event.
|
125
|
-
|
126
|
-
```html preview
|
127
|
-
<div class="dropdown-selection-alt">
|
128
|
-
<sl-dropdown>
|
129
|
-
<sl-button slot="trigger" caret>Edit</sl-button>
|
130
|
-
<sl-menu>
|
131
|
-
<sl-menu-item value="cut">Cut</sl-menu-item>
|
132
|
-
<sl-menu-item value="copy">Copy</sl-menu-item>
|
133
|
-
<sl-menu-item value="paste">Paste</sl-menu-item>
|
134
|
-
</sl-menu>
|
135
|
-
</sl-dropdown>
|
136
|
-
</div>
|
137
|
-
|
138
|
-
<script>
|
139
|
-
const container = document.querySelector('.dropdown-selection-alt');
|
140
|
-
const cut = container.querySelector('sl-menu-item[value="cut"]');
|
141
|
-
const copy = container.querySelector('sl-menu-item[value="copy"]');
|
142
|
-
const paste = container.querySelector('sl-menu-item[value="paste"]');
|
143
|
-
|
144
|
-
cut.addEventListener('click', () => console.log('cut'));
|
145
|
-
copy.addEventListener('click', () => console.log('copy'));
|
146
|
-
paste.addEventListener('click', () => console.log('paste'));
|
147
|
-
</script>
|
148
|
-
```
|
149
|
-
|
150
|
-
```jsx react
|
151
|
-
import {
|
152
|
-
SlButton,
|
153
|
-
SlDropdown,
|
154
|
-
SlMenu,
|
155
|
-
SlMenuItem
|
156
|
-
} from '@shoelace-style/shoelace/dist/react';
|
157
|
-
|
158
|
-
const App = () => {
|
159
|
-
function handleCut() {
|
160
|
-
console.log('cut');
|
161
|
-
}
|
162
|
-
|
163
|
-
function handleCopy() {
|
164
|
-
console.log('copy');
|
165
|
-
}
|
166
|
-
|
167
|
-
function handlePaste() {
|
168
|
-
console.log('paste');
|
169
|
-
}
|
170
|
-
|
171
|
-
return (
|
172
|
-
<SlDropdown>
|
173
|
-
<SlButton slot="trigger" caret>Edit</SlButton>
|
174
|
-
<SlMenu>
|
175
|
-
<SlMenuItem onClick={handleCut}>Cut</SlMenuItem>
|
176
|
-
<SlMenuItem onClick={handleCopy}>Copy</SlMenuItem>
|
177
|
-
<SlMenuItem onClick={handlePaste}>Paste</SlMenuItem>
|
178
|
-
</SlMenu>
|
179
|
-
</SlDropdown>
|
180
|
-
);
|
181
|
-
};
|
182
|
-
```
|
183
|
-
|
184
|
-
### Placement
|
185
|
-
|
186
|
-
The preferred placement of the dropdown can be set with the `placement` attribute. Note that the actual position may vary to ensure the panel remains in the viewport.
|
187
|
-
|
188
|
-
```html preview
|
189
|
-
<sl-dropdown placement="top-start">
|
190
|
-
<sl-button slot="trigger" caret>Edit</sl-button>
|
191
|
-
<sl-menu>
|
192
|
-
<sl-menu-item>Cut</sl-menu-item>
|
193
|
-
<sl-menu-item>Copy</sl-menu-item>
|
194
|
-
<sl-menu-item>Paste</sl-menu-item>
|
195
|
-
<sl-divider></sl-divider>
|
196
|
-
<sl-menu-item>Find</sl-menu-item>
|
197
|
-
<sl-menu-item>Replace</sl-menu-item>
|
198
|
-
</sl-menu>
|
199
|
-
</sl-dropdown>
|
200
|
-
```
|
201
|
-
|
202
|
-
```jsx react
|
203
|
-
import {
|
204
|
-
SlButton,
|
205
|
-
SlDivider,
|
206
|
-
SlDropdown,
|
207
|
-
SlMenu,
|
208
|
-
SlMenuItem
|
209
|
-
} from '@shoelace-style/shoelace/dist/react';
|
210
|
-
|
211
|
-
const App = () => (
|
212
|
-
<SlDropdown placement="top-start">
|
213
|
-
<SlButton slot="trigger" caret>Edit</SlButton>
|
214
|
-
<SlMenu>
|
215
|
-
<SlMenuItem>Cut</SlMenuItem>
|
216
|
-
<SlMenuItem>Copy</SlMenuItem>
|
217
|
-
<SlMenuItem>Paste</SlMenuItem>
|
218
|
-
<SlDivider />
|
219
|
-
<SlMenuItem>Find</SlMenuItem>
|
220
|
-
<SlMenuItem>Replace</SlMenuItem>
|
221
|
-
</SlMenu>
|
222
|
-
</SlDropdown>
|
223
|
-
);
|
224
|
-
```
|
225
|
-
|
226
|
-
### Distance
|
227
|
-
|
228
|
-
The distance from the panel to the trigger can be customized using the `distance` attribute. This value is specified in pixels.
|
229
|
-
|
230
|
-
```html preview
|
231
|
-
<sl-dropdown distance="30">
|
232
|
-
<sl-button slot="trigger" caret>Edit</sl-button>
|
233
|
-
<sl-menu>
|
234
|
-
<sl-menu-item>Cut</sl-menu-item>
|
235
|
-
<sl-menu-item>Copy</sl-menu-item>
|
236
|
-
<sl-menu-item>Paste</sl-menu-item>
|
237
|
-
<sl-divider></sl-divider>
|
238
|
-
<sl-menu-item>Find</sl-menu-item>
|
239
|
-
<sl-menu-item>Replace</sl-menu-item>
|
240
|
-
</sl-menu>
|
241
|
-
</sl-dropdown>
|
242
|
-
```
|
243
|
-
|
244
|
-
```jsx react
|
245
|
-
import {
|
246
|
-
SlButton,
|
247
|
-
SlDivider,
|
248
|
-
SlDropdown,
|
249
|
-
SlMenu,
|
250
|
-
SlMenuItem
|
251
|
-
} from '@shoelace-style/shoelace/dist/react';
|
252
|
-
|
253
|
-
const App = () => (
|
254
|
-
<SlDropdown distance={30}>
|
255
|
-
<SlButton slot="trigger" caret>Edit</SlButton>
|
256
|
-
<SlMenu>
|
257
|
-
<SlMenuItem>Cut</SlMenuItem>
|
258
|
-
<SlMenuItem>Copy</SlMenuItem>
|
259
|
-
<SlMenuItem>Paste</SlMenuItem>
|
260
|
-
<SlDivider />
|
261
|
-
<SlMenuItem>Find</SlMenuItem>
|
262
|
-
<SlMenuItem>Replace</SlMenuItem>
|
263
|
-
</SlMenu>
|
264
|
-
</SlDropdown>
|
265
|
-
);
|
266
|
-
```
|
267
|
-
|
268
|
-
### Skidding
|
269
|
-
|
270
|
-
The offset of the panel along the trigger can be customized using the `skidding` attribute. This value is specified in pixels.
|
271
|
-
|
272
|
-
```html preview
|
273
|
-
<sl-dropdown skidding="30">
|
274
|
-
<sl-button slot="trigger" caret>Edit</sl-button>
|
275
|
-
<sl-menu>
|
276
|
-
<sl-menu-item>Cut</sl-menu-item>
|
277
|
-
<sl-menu-item>Copy</sl-menu-item>
|
278
|
-
<sl-menu-item>Paste</sl-menu-item>
|
279
|
-
<sl-divider></sl-divider>
|
280
|
-
<sl-menu-item>Find</sl-menu-item>
|
281
|
-
<sl-menu-item>Replace</sl-menu-item>
|
282
|
-
</sl-menu>
|
283
|
-
</sl-dropdown>
|
284
|
-
```
|
285
|
-
|
286
|
-
```jsx react
|
287
|
-
import {
|
288
|
-
SlButton,
|
289
|
-
SlDivider,
|
290
|
-
SlDropdown,
|
291
|
-
SlMenu,
|
292
|
-
SlMenuItem
|
293
|
-
} from '@shoelace-style/shoelace/dist/react';
|
294
|
-
|
295
|
-
const App = () => (
|
296
|
-
<SlDropdown skidding={30}>
|
297
|
-
<SlButton slot="trigger" caret>Edit</SlButton>
|
298
|
-
<SlMenu>
|
299
|
-
<SlMenuItem>Cut</SlMenuItem>
|
300
|
-
<SlMenuItem>Copy</SlMenuItem>
|
301
|
-
<SlMenuItem>Paste</SlMenuItem>
|
302
|
-
<SlDivider />
|
303
|
-
<SlMenuItem>Find</SlMenuItem>
|
304
|
-
<SlMenuItem>Replace</SlMenuItem>
|
305
|
-
</SlMenu>
|
306
|
-
</SlDropdown>
|
307
|
-
);
|
308
|
-
```
|
309
|
-
|
310
|
-
### Hoisting
|
311
|
-
|
312
|
-
Dropdown panels will be clipped if they're inside a container that has `overflow: auto|hidden`. The `hoist` attribute forces the panel to use a fixed positioning strategy, allowing it to break out of the container. In this case, the panel will be positioned relative to its containing block, which is usually the viewport unless an ancestor uses a `transform`, `perspective`, or `filter`. [Refer to this page](https://developer.mozilla.org/en-US/docs/Web/CSS/position#fixed) for more details.
|
313
|
-
|
314
|
-
```html preview
|
315
|
-
<div class="dropdown-hoist">
|
316
|
-
<sl-dropdown>
|
317
|
-
<sl-button slot="trigger" caret>No Hoist</sl-button>
|
318
|
-
<sl-menu>
|
319
|
-
<sl-menu-item>Item 1</sl-menu-item>
|
320
|
-
<sl-menu-item>Item 2</sl-menu-item>
|
321
|
-
<sl-menu-item>Item 3</sl-menu-item>
|
322
|
-
</sl-menu>
|
323
|
-
</sl-dropdown>
|
324
|
-
|
325
|
-
<sl-dropdown hoist>
|
326
|
-
<sl-button slot="trigger" caret>Hoist</sl-button>
|
327
|
-
<sl-menu>
|
328
|
-
<sl-menu-item>Item 1</sl-menu-item>
|
329
|
-
<sl-menu-item>Item 2</sl-menu-item>
|
330
|
-
<sl-menu-item>Item 3</sl-menu-item>
|
331
|
-
</sl-menu>
|
332
|
-
</sl-dropdown>
|
333
|
-
</div>
|
334
|
-
|
335
|
-
<style>
|
336
|
-
.dropdown-hoist {
|
337
|
-
border: solid 2px var(--sl-panel-border-color);
|
338
|
-
padding: var(--sl-spacing-medium);
|
339
|
-
overflow: hidden;
|
340
|
-
}
|
341
|
-
</style>
|
342
|
-
```
|
343
|
-
|
344
|
-
```jsx react
|
345
|
-
import {
|
346
|
-
SlButton,
|
347
|
-
SlDivider,
|
348
|
-
SlDropdown,
|
349
|
-
SlIcon,
|
350
|
-
SlMenu,
|
351
|
-
SlMenuItem
|
352
|
-
} from '@shoelace-style/shoelace/dist/react';
|
353
|
-
|
354
|
-
const css = `
|
355
|
-
.dropdown-hoist {
|
356
|
-
border: solid 2px var(--sl-panel-border-color);
|
357
|
-
padding: var(--sl-spacing-medium);
|
358
|
-
overflow: hidden;
|
359
|
-
}
|
360
|
-
`;
|
361
|
-
|
362
|
-
const App = () => (
|
363
|
-
<>
|
364
|
-
<div className="dropdown-hoist">
|
365
|
-
<SlDropdown>
|
366
|
-
<SlButton slot="trigger" caret>No Hoist</SlButton>
|
367
|
-
<SlMenu>
|
368
|
-
<SlMenuItem>Item 1</SlMenuItem>
|
369
|
-
<SlMenuItem>Item 2</SlMenuItem>
|
370
|
-
<SlMenuItem>Item 3</SlMenuItem>
|
371
|
-
</SlMenu>
|
372
|
-
</SlDropdown>
|
373
|
-
|
374
|
-
<SlDropdown hoist>
|
375
|
-
<SlButton slot="trigger" caret>Hoist</SlButton>
|
376
|
-
<SlMenu>
|
377
|
-
<SlMenuItem>Item 1</SlMenuItem>
|
378
|
-
<SlMenuItem>Item 2</SlMenuItem>
|
379
|
-
<SlMenuItem>Item 3</SlMenuItem>
|
380
|
-
</SlMenu>
|
381
|
-
</SlDropdown>
|
382
|
-
</div>
|
383
|
-
|
384
|
-
<style>{css}</style>
|
385
|
-
</>
|
386
|
-
);
|
387
|
-
```
|
388
|
-
|
389
|
-
[component-metadata:sl-dropdown]
|
@@ -1,126 +0,0 @@
|
|
1
|
-
# Format Bytes
|
2
|
-
|
3
|
-
[component-header:sl-format-bytes]
|
4
|
-
|
5
|
-
Formats a number as a human readable bytes value.
|
6
|
-
|
7
|
-
```html preview
|
8
|
-
<div class="format-bytes-overview">
|
9
|
-
The file is <sl-format-bytes value="1000"></sl-format-bytes> in size.
|
10
|
-
<br><br>
|
11
|
-
<sl-input type="number" value="1000" label="Number to Format" style="max-width: 180px;"></sl-input>
|
12
|
-
</div>
|
13
|
-
|
14
|
-
<script>
|
15
|
-
const container = document.querySelector('.format-bytes-overview');
|
16
|
-
const formatter = container.querySelector('sl-format-bytes');
|
17
|
-
const input = container.querySelector('sl-input');
|
18
|
-
|
19
|
-
input.addEventListener('sl-input', () => formatter.value = input.value || 0);
|
20
|
-
</script>
|
21
|
-
```
|
22
|
-
|
23
|
-
|
24
|
-
```jsx react
|
25
|
-
import { useState } from 'react';
|
26
|
-
import {
|
27
|
-
SlButton,
|
28
|
-
SlFormatBytes,
|
29
|
-
SlInput
|
30
|
-
} from '@shoelace-style/shoelace/dist/react';
|
31
|
-
|
32
|
-
const App = () => {
|
33
|
-
const [value, setValue] = useState(1000);
|
34
|
-
|
35
|
-
return (
|
36
|
-
<>
|
37
|
-
The file is <SlFormatBytes value={value} /> in size.
|
38
|
-
<br /><br />
|
39
|
-
<SlInput
|
40
|
-
type="number"
|
41
|
-
value={value}
|
42
|
-
label="Number to Format"
|
43
|
-
style={{ maxWidth: '180px' }}
|
44
|
-
onSlInput={event => setValue(event.target.value)}
|
45
|
-
/>
|
46
|
-
</>
|
47
|
-
);
|
48
|
-
};
|
49
|
-
```
|
50
|
-
|
51
|
-
## Examples
|
52
|
-
|
53
|
-
### Formatting Bytes
|
54
|
-
|
55
|
-
Set the `value` attribute to a number to get the value in bytes.
|
56
|
-
|
57
|
-
```html preview
|
58
|
-
<sl-format-bytes value="12"></sl-format-bytes><br>
|
59
|
-
<sl-format-bytes value="1200"></sl-format-bytes><br>
|
60
|
-
<sl-format-bytes value="1200000"></sl-format-bytes><br>
|
61
|
-
<sl-format-bytes value="1200000000"></sl-format-bytes>
|
62
|
-
```
|
63
|
-
|
64
|
-
|
65
|
-
```jsx react
|
66
|
-
import { SlFormatBytes } from '@shoelace-style/shoelace/dist/react';
|
67
|
-
|
68
|
-
const App = () => (
|
69
|
-
<>
|
70
|
-
<SlFormatBytes value="12" /><br />
|
71
|
-
<SlFormatBytes value="1200" /><br />
|
72
|
-
<SlFormatBytes value="1200000" /><br />
|
73
|
-
<SlFormatBytes value="1200000000" />
|
74
|
-
</>
|
75
|
-
);
|
76
|
-
```
|
77
|
-
|
78
|
-
### Formatting Bits
|
79
|
-
|
80
|
-
To get the value in bits, set the `unit` attribute to `bits`.
|
81
|
-
|
82
|
-
```html preview
|
83
|
-
<sl-format-bytes value="12" unit="bits"></sl-format-bytes><br>
|
84
|
-
<sl-format-bytes value="1200" unit="bits"></sl-format-bytes><br>
|
85
|
-
<sl-format-bytes value="1200000" unit="bits"></sl-format-bytes><br>
|
86
|
-
<sl-format-bytes value="1200000000" unit="bits"></sl-format-bytes>
|
87
|
-
```
|
88
|
-
|
89
|
-
```jsx react
|
90
|
-
import { SlFormatBytes } from '@shoelace-style/shoelace/dist/react';
|
91
|
-
|
92
|
-
const App = () => (
|
93
|
-
<>
|
94
|
-
<SlFormatBytes value="12" unit="bits" /><br />
|
95
|
-
<SlFormatBytes value="1200" unit="bits" /><br />
|
96
|
-
<SlFormatBytes value="1200000" unit="bits" /><br />
|
97
|
-
<SlFormatBytes value="1200000000" unit="bits" />
|
98
|
-
</>
|
99
|
-
);
|
100
|
-
```
|
101
|
-
|
102
|
-
### Localization
|
103
|
-
|
104
|
-
Use the `lang` attribute to set the number formatting locale.
|
105
|
-
|
106
|
-
```html preview
|
107
|
-
<sl-format-bytes value="12" lang="de"></sl-format-bytes><br>
|
108
|
-
<sl-format-bytes value="1200" lang="de"></sl-format-bytes><br>
|
109
|
-
<sl-format-bytes value="1200000" lang="de"></sl-format-bytes><br>
|
110
|
-
<sl-format-bytes value="1200000000" lang="de"></sl-format-bytes>
|
111
|
-
```
|
112
|
-
|
113
|
-
```jsx react
|
114
|
-
import { SlFormatBytes } from '@shoelace-style/shoelace/dist/react';
|
115
|
-
|
116
|
-
const App = () => (
|
117
|
-
<>
|
118
|
-
<SlFormatBytes value="12" lang="de" /><br />
|
119
|
-
<SlFormatBytes value="1200" lang="de" /><br />
|
120
|
-
<SlFormatBytes value="1200000" lang="de" /><br />
|
121
|
-
<SlFormatBytes value="1200000000" lang="de" />
|
122
|
-
</>
|
123
|
-
);
|
124
|
-
```
|
125
|
-
|
126
|
-
[component-metadata:sl-format-bytes]
|
@@ -1,120 +0,0 @@
|
|
1
|
-
# Format Date
|
2
|
-
|
3
|
-
[component-header:sl-format-date]
|
4
|
-
|
5
|
-
Formats a date/time using the specified locale and options.
|
6
|
-
|
7
|
-
Localization is handled by the browser's [`Intl.DateTimeFormat` API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat). No language packs are required.
|
8
|
-
|
9
|
-
```html preview
|
10
|
-
<!-- Shoelace 2 release date 🎉 -->
|
11
|
-
<sl-format-date date="2020-07-15T09:17:00-04:00"></sl-format-date>
|
12
|
-
```
|
13
|
-
|
14
|
-
```jsx react
|
15
|
-
import { SlFormatDate } from '@shoelace-style/shoelace/dist/react';
|
16
|
-
|
17
|
-
const App = () => (
|
18
|
-
<SlFormatDate date="2020-07-15T09:17:00-04:00" />
|
19
|
-
);
|
20
|
-
```
|
21
|
-
|
22
|
-
The `date` attribute determines the date/time to use when formatting. It must be a string that [`Date.parse()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse) can interpret or a [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) object set via JavaScript. If omitted, the current date/time will be assumed.
|
23
|
-
|
24
|
-
?> When using strings, avoid ambiguous dates such as `03/04/2020` which can be interpreted as March 4 or April 3 depending on the user's browser and locale. Instead, always use a valid [ISO 8601 date time string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse#Date_Time_String_Format) to ensure the date will be parsed properly by all clients.
|
25
|
-
|
26
|
-
## Examples
|
27
|
-
|
28
|
-
### Date & Time Formatting
|
29
|
-
|
30
|
-
Formatting options are based on those found in the [`Intl.DateTimeFormat` API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat). When formatting options are provided, the date/time will be formatted according to those values. When no formatting options are provided, a localized, numeric date will be displayed instead.
|
31
|
-
|
32
|
-
```html preview
|
33
|
-
<!-- Human-readable date -->
|
34
|
-
<sl-format-date month="long" day="numeric" year="numeric"></sl-format-date><br>
|
35
|
-
|
36
|
-
<!-- Time -->
|
37
|
-
<sl-format-date hour="numeric" minute="numeric"></sl-format-date><br>
|
38
|
-
|
39
|
-
<!-- Weekday -->
|
40
|
-
<sl-format-date weekday="long"></sl-format-date><br>
|
41
|
-
|
42
|
-
<!-- Month -->
|
43
|
-
<sl-format-date month="long"></sl-format-date><br>
|
44
|
-
|
45
|
-
<!-- Year -->
|
46
|
-
<sl-format-date year="numeric"></sl-format-date><br>
|
47
|
-
|
48
|
-
<!-- No formatting options -->
|
49
|
-
<sl-format-date></sl-format-date>
|
50
|
-
```
|
51
|
-
|
52
|
-
```jsx react
|
53
|
-
import { SlFormatDate } from '@shoelace-style/shoelace/dist/react';
|
54
|
-
|
55
|
-
const App = () => (
|
56
|
-
<>
|
57
|
-
{/* Human-readable date */}
|
58
|
-
<SlFormatDate month="long" day="numeric" year="numeric" /><br />
|
59
|
-
|
60
|
-
{/* Time */}
|
61
|
-
<SlFormatDate hour="numeric" minute="numeric" /><br />
|
62
|
-
|
63
|
-
{/* Weekday */}
|
64
|
-
<SlFormatDate weekday="long" /><br />
|
65
|
-
|
66
|
-
{/* Month */}
|
67
|
-
<SlFormatDate month="long" /><br />
|
68
|
-
|
69
|
-
{/* Year */}
|
70
|
-
<SlFormatDate year="numeric" /><br />
|
71
|
-
|
72
|
-
{/* No formatting options */}
|
73
|
-
<SlFormatDate />
|
74
|
-
</>
|
75
|
-
);
|
76
|
-
```
|
77
|
-
|
78
|
-
### Hour Formatting
|
79
|
-
|
80
|
-
By default, the browser will determine whether to use 12-hour or 24-hour time. To force one or the other, set the `hour-format` attribute to `12` or `24`.
|
81
|
-
|
82
|
-
```html preview
|
83
|
-
<sl-format-date hour="numeric" minute="numeric" hour-format="12"></sl-format-date><br>
|
84
|
-
<sl-format-date hour="numeric" minute="numeric" hour-format="24"></sl-format-date>
|
85
|
-
```
|
86
|
-
|
87
|
-
```jsx react
|
88
|
-
import { SlFormatDate } from '@shoelace-style/shoelace/dist/react';
|
89
|
-
|
90
|
-
const App = () => (
|
91
|
-
<>
|
92
|
-
<SlFormatDate hour="numeric" minute="numeric" hour-format="12" /><br />
|
93
|
-
<SlFormatDate hour="numeric" minute="numeric" hour-format="24" />
|
94
|
-
</>
|
95
|
-
);
|
96
|
-
```
|
97
|
-
|
98
|
-
### Localization
|
99
|
-
|
100
|
-
Use the `lang` attribute to set the date/time formatting locale.
|
101
|
-
|
102
|
-
```html preview
|
103
|
-
English: <sl-format-date lang="en"></sl-format-date><br>
|
104
|
-
French: <sl-format-date lang="fr"></sl-format-date><br>
|
105
|
-
Russian: <sl-format-date lang="ru"></sl-format-date>
|
106
|
-
```
|
107
|
-
|
108
|
-
```jsx react
|
109
|
-
import { SlFormatDate } from '@shoelace-style/shoelace/dist/react';
|
110
|
-
|
111
|
-
const App = () => (
|
112
|
-
<>
|
113
|
-
English: <SlFormatDate lang="en" /><br />
|
114
|
-
French: <SlFormatDate lang="fr" /><br />
|
115
|
-
Russian: <SlFormatDate lang="ru" />
|
116
|
-
</>
|
117
|
-
);
|
118
|
-
```
|
119
|
-
|
120
|
-
[component-metadata:sl-format-date]
|