plutonium 0.16.4 → 0.18.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.
- checksums.yaml +4 -4
- data/app/assets/plutonium.css +9 -1
- data/app/assets/plutonium.js +23273 -9599
- data/app/assets/plutonium.js.map +4 -4
- data/app/assets/plutonium.min.js +159 -49
- data/app/assets/plutonium.min.js.map +4 -4
- data/app/views/plutonium/_resource_header.html.erb +33 -24
- data/app/views/plutonium/_resource_sidebar.html.erb +10 -8
- data/app/views/rodauth/otp_unlock.html.erb +22 -0
- data/app/views/rodauth/otp_unlock_not_available.html.erb +14 -0
- data/app/views/rodauth/webauthn_remove.html.erb +1 -0
- data/docs/guide/getting-started/resources.md +2 -2
- data/docs/guide/tutorial.md +4 -4
- data/gemfiles/rails_7.gemfile.lock +406 -0
- data/lib/generators/pu/core/assets/assets_generator.rb +1 -1
- data/lib/generators/pu/res/conn/conn_generator.rb +24 -10
- data/lib/generators/pu/rodauth/concerns/configuration.rb +11 -0
- data/lib/generators/pu/rodauth/concerns/feature_selector.rb +4 -0
- data/lib/generators/pu/rodauth/install_generator.rb +3 -1
- data/lib/generators/pu/rodauth/migration/active_record/otp_unlock.erb +7 -0
- data/lib/generators/pu/rodauth/templates/INSTRUCTIONS +2 -46
- data/lib/generators/pu/rodauth/templates/app/controllers/plugin_controller.rb.tt +3 -3
- data/lib/generators/pu/rodauth/templates/app/mailers/rodauth_mailer.rb.tt +50 -1
- data/lib/generators/pu/rodauth/templates/app/rodauth/account_rodauth_plugin.rb.tt +37 -3
- data/lib/generators/pu/rodauth/templates/app/rodauth/rodauth_plugin.rb.tt +33 -8
- data/lib/generators/pu/rodauth/templates/app/views/rodauth_mailer/otp_disabled.text.erb +2 -0
- data/lib/generators/pu/rodauth/templates/app/views/rodauth_mailer/otp_locked_out.text.erb +9 -0
- data/lib/generators/pu/rodauth/templates/app/views/rodauth_mailer/otp_setup.text.erb +2 -0
- data/lib/generators/pu/rodauth/templates/app/views/rodauth_mailer/otp_unlock_failed.text.erb +8 -0
- data/lib/generators/pu/rodauth/templates/app/views/rodauth_mailer/otp_unlocked.text.erb +2 -0
- data/lib/generators/pu/rodauth/templates/app/views/rodauth_mailer/webauthn_authenticator_added.text.erb +3 -0
- data/lib/generators/pu/rodauth/templates/app/views/rodauth_mailer/webauthn_authenticator_removed.text.erb +3 -0
- data/lib/generators/pu/rodauth/views_generator.rb +1 -12
- data/lib/plutonium/core/controllers/authorizable.rb +3 -1
- data/lib/plutonium/helpers/application_helper.rb +0 -8
- data/lib/plutonium/helpers.rb +0 -3
- data/lib/plutonium/railtie.rb +0 -14
- data/lib/plutonium/reloader.rb +2 -12
- data/lib/plutonium/rodauth/controller_methods.rb +1 -3
- data/lib/plutonium/ui/component/behaviour.rb +1 -1
- data/lib/plutonium/ui/component/kit.rb +59 -15
- data/lib/plutonium/ui/display/base.rb +6 -2
- data/lib/plutonium/ui/display/{component → components}/association.rb +1 -1
- data/lib/plutonium/ui/display/components/attachment.rb +93 -0
- data/lib/plutonium/ui/display/{component → components}/markdown.rb +2 -1
- data/lib/plutonium/ui/display/resource.rb +21 -6
- data/lib/plutonium/ui/display/theme.rb +2 -1
- data/lib/plutonium/ui/form/base.rb +7 -0
- data/lib/plutonium/ui/form/components/belongs_to.rb +45 -1
- data/lib/plutonium/ui/form/components/has_many.rb +45 -1
- data/lib/plutonium/ui/form/components/uppy.rb +173 -0
- data/lib/plutonium/ui/form/query.rb +5 -5
- data/lib/plutonium/ui/form/resource.rb +6 -6
- data/lib/plutonium/ui/form/theme.rb +6 -2
- data/lib/plutonium/ui/frame_navigator_panel.rb +25 -4
- data/lib/plutonium/ui/layout/base.rb +1 -1
- data/lib/plutonium/ui/layout/header.rb +1 -1
- data/lib/plutonium/ui/layout/sidebar.rb +0 -1
- data/lib/plutonium/ui/nav_grid_menu.rb +93 -0
- data/lib/plutonium/ui/nav_user.rb +121 -0
- data/lib/plutonium/ui/panel.rb +2 -2
- data/lib/plutonium/ui/sidebar_menu.rb +19 -39
- data/lib/plutonium/ui/tab_list.rb +73 -0
- data/lib/plutonium/ui/table/base.rb +7 -1
- data/lib/plutonium/ui/table/components/attachment.rb +71 -0
- data/lib/plutonium/ui/table/components/pagy_info.rb +12 -4
- data/lib/plutonium/ui/table/components/pagy_pagination.rb +5 -5
- data/lib/plutonium/ui/table/display_theme.rb +2 -1
- data/lib/plutonium/ui/table/resource.rb +11 -12
- data/lib/plutonium/version.rb +1 -1
- data/package-lock.json +356 -18
- data/package.json +6 -2
- data/src/css/plutonium.css +3 -0
- data/src/js/controllers/attachment_input_controller.js +241 -0
- data/src/js/controllers/attachment_preview_container_controller.js +15 -0
- data/src/js/controllers/attachment_preview_controller.js +63 -0
- data/src/js/controllers/color_mode_controller.js +0 -1
- data/src/js/controllers/easymde_controller.js +0 -1
- data/src/js/controllers/flatpickr_controller.js +0 -1
- data/src/js/controllers/form_controller.js +0 -1
- data/src/js/controllers/frame_navigator_controller.js +16 -12
- data/src/js/controllers/intl_tel_input_controller.js +0 -1
- data/src/js/controllers/register_controllers.js +12 -30
- data/src/js/controllers/resource_collapse_controller.js +0 -1
- data/src/js/controllers/resource_dismiss_controller.js +0 -1
- data/src/js/controllers/resource_drop_down_controller.js +161 -9
- data/src/js/controllers/{header_controller.js → resource_header_controller.js} +1 -0
- data/src/js/controllers/resource_tab_list_controller.js +64 -0
- data/src/js/controllers/select_navigator.js +16 -0
- data/src/js/controllers/slim_select_controller.js +0 -1
- data/src/js/support/dom_element.js +78 -0
- data/src/js/support/mime_icon.js +127 -0
- data/tailwind.options.js +0 -5
- metadata +29 -642
- data/README copy.md +0 -83
- data/app/assets/application.js.bk +0 -31419
- data/app/assets/icons/flags/ghana.svg +0 -49
- data/app/assets/icons/outline/address-book.svg +0 -3
- data/app/assets/icons/outline/adjustments-horizontal.svg +0 -3
- data/app/assets/icons/outline/adjustments-vertical.svg +0 -3
- data/app/assets/icons/outline/align-center.svg +0 -3
- data/app/assets/icons/outline/angle-down.svg +0 -3
- data/app/assets/icons/outline/angle-left.svg +0 -3
- data/app/assets/icons/outline/angle-right.svg +0 -3
- data/app/assets/icons/outline/angle-up.svg +0 -3
- data/app/assets/icons/outline/annotation.svg +0 -3
- data/app/assets/icons/outline/archive-arrow-down.svg +0 -3
- data/app/assets/icons/outline/archive.svg +0 -3
- data/app/assets/icons/outline/arrow-down-to-bracket.svg +0 -3
- data/app/assets/icons/outline/arrow-down.svg +0 -3
- data/app/assets/icons/outline/arrow-left-to-bracket.svg +0 -3
- data/app/assets/icons/outline/arrow-left.svg +0 -3
- data/app/assets/icons/outline/arrow-right-alt.svg +0 -3
- data/app/assets/icons/outline/arrow-right-to-bracket.svg +0 -3
- data/app/assets/icons/outline/arrow-right.svg +0 -3
- data/app/assets/icons/outline/arrow-sort-letters.svg +0 -3
- data/app/assets/icons/outline/arrow-up-down.svg +0 -3
- data/app/assets/icons/outline/arrow-up-from-bracket.svg +0 -3
- data/app/assets/icons/outline/arrow-up-right-down-left.svg +0 -3
- data/app/assets/icons/outline/arrow-up-right-from-square.svg +0 -3
- data/app/assets/icons/outline/arrow-up.svg +0 -3
- data/app/assets/icons/outline/arrows-repeat-count.svg +0 -3
- data/app/assets/icons/outline/arrows-repeat.svg +0 -3
- data/app/assets/icons/outline/atom.svg +0 -3
- data/app/assets/icons/outline/backward-step.svg +0 -3
- data/app/assets/icons/outline/badge-check.svg +0 -3
- data/app/assets/icons/outline/bars-from-left.svg +0 -3
- data/app/assets/icons/outline/bars.svg +0 -3
- data/app/assets/icons/outline/bell-active-alt.svg +0 -3
- data/app/assets/icons/outline/bell-active.svg +0 -3
- data/app/assets/icons/outline/bell-ring.svg +0 -3
- data/app/assets/icons/outline/bell.svg +0 -3
- data/app/assets/icons/outline/blender-phone.svg +0 -3
- data/app/assets/icons/outline/book-open.svg +0 -3
- data/app/assets/icons/outline/book.svg +0 -3
- data/app/assets/icons/outline/bookmark.svg +0 -3
- data/app/assets/icons/outline/brain.svg +0 -3
- data/app/assets/icons/outline/briefcase.svg +0 -3
- data/app/assets/icons/outline/bug.svg +0 -3
- data/app/assets/icons/outline/building.svg +0 -3
- data/app/assets/icons/outline/bullhorn.svg +0 -3
- data/app/assets/icons/outline/calendar-edit.svg +0 -3
- data/app/assets/icons/outline/calendar-month.svg +0 -3
- data/app/assets/icons/outline/calendar-plus.svg +0 -3
- data/app/assets/icons/outline/calendar-week.svg +0 -3
- data/app/assets/icons/outline/camera-photo.svg +0 -4
- data/app/assets/icons/outline/caption.svg +0 -3
- data/app/assets/icons/outline/caret-down.svg +0 -3
- data/app/assets/icons/outline/caret-left.svg +0 -3
- data/app/assets/icons/outline/caret-right.svg +0 -3
- data/app/assets/icons/outline/caret-sort.svg +0 -3
- data/app/assets/icons/outline/caret-up.svg +0 -3
- data/app/assets/icons/outline/cart-plus-alt.svg +0 -3
- data/app/assets/icons/outline/cart-plus.svg +0 -3
- data/app/assets/icons/outline/cart.svg +0 -3
- data/app/assets/icons/outline/cash.svg +0 -3
- data/app/assets/icons/outline/chart-line-down.svg +0 -3
- data/app/assets/icons/outline/chart-line-up.svg +0 -3
- data/app/assets/icons/outline/chart-mixed-dollar.svg +0 -3
- data/app/assets/icons/outline/chart-mixed.svg +0 -3
- data/app/assets/icons/outline/chart-pie.svg +0 -4
- data/app/assets/icons/outline/chart.svg +0 -3
- data/app/assets/icons/outline/check-circle.svg +0 -3
- data/app/assets/icons/outline/check-plus-circle.svg +0 -3
- data/app/assets/icons/outline/check.svg +0 -3
- data/app/assets/icons/outline/chevron-double-down.svg +0 -3
- data/app/assets/icons/outline/chevron-double-left.svg +0 -3
- data/app/assets/icons/outline/chevron-double-right.svg +0 -3
- data/app/assets/icons/outline/chevron-double-up.svg +0 -3
- data/app/assets/icons/outline/chevron-down.svg +0 -3
- data/app/assets/icons/outline/chevron-left.svg +0 -3
- data/app/assets/icons/outline/chevron-right.svg +0 -3
- data/app/assets/icons/outline/chevron-sort.svg +0 -3
- data/app/assets/icons/outline/chevron-up.svg +0 -3
- data/app/assets/icons/outline/circle-pause.svg +0 -3
- data/app/assets/icons/outline/circle-plus.svg +0 -3
- data/app/assets/icons/outline/clapperboard-play.svg +0 -3
- data/app/assets/icons/outline/clipboard-check.svg +0 -3
- data/app/assets/icons/outline/clipboard-list.svg +0 -3
- data/app/assets/icons/outline/clipboard.svg +0 -3
- data/app/assets/icons/outline/clock.svg +0 -3
- data/app/assets/icons/outline/close-circle.svg +0 -3
- data/app/assets/icons/outline/close.svg +0 -3
- data/app/assets/icons/outline/cloud-arrow-up.svg +0 -3
- data/app/assets/icons/outline/code-branch.svg +0 -3
- data/app/assets/icons/outline/code-fork.svg +0 -3
- data/app/assets/icons/outline/code-merge.svg +0 -3
- data/app/assets/icons/outline/code-pull-request.svg +0 -3
- data/app/assets/icons/outline/code.svg +0 -3
- data/app/assets/icons/outline/cog.svg +0 -4
- data/app/assets/icons/outline/column.svg +0 -3
- data/app/assets/icons/outline/command.svg +0 -3
- data/app/assets/icons/outline/compress.svg +0 -3
- data/app/assets/icons/outline/computer-speaker.svg +0 -3
- data/app/assets/icons/outline/credit-card.svg +0 -3
- data/app/assets/icons/outline/database.svg +0 -3
- data/app/assets/icons/outline/desktop-pc.svg +0 -3
- data/app/assets/icons/outline/dna.svg +0 -3
- data/app/assets/icons/outline/dollar.svg +0 -3
- data/app/assets/icons/outline/dots-horizontal.svg +0 -3
- data/app/assets/icons/outline/dots-vertical.svg +0 -3
- data/app/assets/icons/outline/download.svg +0 -3
- data/app/assets/icons/outline/draw-square.svg +0 -3
- data/app/assets/icons/outline/edit.svg +0 -3
- data/app/assets/icons/outline/envelope-open.svg +0 -3
- data/app/assets/icons/outline/envelope.svg +0 -3
- data/app/assets/icons/outline/euro.svg +0 -3
- data/app/assets/icons/outline/exclamation-circle.svg +0 -3
- data/app/assets/icons/outline/expand.svg +0 -3
- data/app/assets/icons/outline/eye-slash.svg +0 -3
- data/app/assets/icons/outline/eye.svg +0 -4
- data/app/assets/icons/outline/face-explode.svg +0 -4
- data/app/assets/icons/outline/face-grin-stars.svg +0 -6
- data/app/assets/icons/outline/face-grin.svg +0 -3
- data/app/assets/icons/outline/face-laugh.svg +0 -3
- data/app/assets/icons/outline/file-chart-bar.svg +0 -3
- data/app/assets/icons/outline/file-check.svg +0 -3
- data/app/assets/icons/outline/file-circle-plus.svg +0 -3
- data/app/assets/icons/outline/file-clone.svg +0 -3
- data/app/assets/icons/outline/file-code.svg +0 -3
- data/app/assets/icons/outline/file-copy-alt.svg +0 -3
- data/app/assets/icons/outline/file-copy.svg +0 -3
- data/app/assets/icons/outline/file-csv.svg +0 -3
- data/app/assets/icons/outline/file-export.svg +0 -3
- data/app/assets/icons/outline/file-image.svg +0 -4
- data/app/assets/icons/outline/file-import.svg +0 -3
- data/app/assets/icons/outline/file-invoice.svg +0 -3
- data/app/assets/icons/outline/file-lines.svg +0 -3
- data/app/assets/icons/outline/file-music.svg +0 -3
- data/app/assets/icons/outline/file-paste.svg +0 -3
- data/app/assets/icons/outline/file-pdf.svg +0 -3
- data/app/assets/icons/outline/file-pen.svg +0 -3
- data/app/assets/icons/outline/file-ppt.svg +0 -3
- data/app/assets/icons/outline/file-search.svg +0 -3
- data/app/assets/icons/outline/file-shield.svg +0 -3
- data/app/assets/icons/outline/file-video.svg +0 -3
- data/app/assets/icons/outline/file-word.svg +0 -3
- data/app/assets/icons/outline/file-zip.svg +0 -3
- data/app/assets/icons/outline/file.svg +0 -3
- data/app/assets/icons/outline/filter.svg +0 -3
- data/app/assets/icons/outline/fingerprint.svg +0 -3
- data/app/assets/icons/outline/fire.svg +0 -3
- data/app/assets/icons/outline/flag.svg +0 -3
- data/app/assets/icons/outline/folder-arrow-right.svg +0 -3
- data/app/assets/icons/outline/folder-duplicate.svg +0 -3
- data/app/assets/icons/outline/folder-open.svg +0 -3
- data/app/assets/icons/outline/folder-plus.svg +0 -3
- data/app/assets/icons/outline/folder.svg +0 -3
- data/app/assets/icons/outline/forward-step.svg +0 -3
- data/app/assets/icons/outline/forward.svg +0 -3
- data/app/assets/icons/outline/gift-box.svg +0 -3
- data/app/assets/icons/outline/globe.svg +0 -3
- data/app/assets/icons/outline/grid-plus.svg +0 -3
- data/app/assets/icons/outline/grid.svg +0 -3
- data/app/assets/icons/outline/headphones.svg +0 -3
- data/app/assets/icons/outline/heart.svg +0 -3
- data/app/assets/icons/outline/home.svg +0 -3
- data/app/assets/icons/outline/hourglass.svg +0 -3
- data/app/assets/icons/outline/image.svg +0 -3
- data/app/assets/icons/outline/inbox-full.svg +0 -3
- data/app/assets/icons/outline/inbox.svg +0 -3
- data/app/assets/icons/outline/indent.svg +0 -3
- data/app/assets/icons/outline/info-circle.svg +0 -3
- data/app/assets/icons/outline/keyboard.svg +0 -5
- data/app/assets/icons/outline/label.svg +0 -3
- data/app/assets/icons/outline/landmark.svg +0 -3
- data/app/assets/icons/outline/layers.svg +0 -3
- data/app/assets/icons/outline/letter-bold.svg +0 -3
- data/app/assets/icons/outline/letter-italic.svg +0 -3
- data/app/assets/icons/outline/letter-underline.svg +0 -3
- data/app/assets/icons/outline/life-saver.svg +0 -3
- data/app/assets/icons/outline/lightbulb.svg +0 -3
- data/app/assets/icons/outline/link.svg +0 -3
- data/app/assets/icons/outline/list-music.svg +0 -3
- data/app/assets/icons/outline/list.svg +0 -3
- data/app/assets/icons/outline/lock-open.svg +0 -3
- data/app/assets/icons/outline/lock-time.svg +0 -3
- data/app/assets/icons/outline/lock.svg +0 -3
- data/app/assets/icons/outline/mail-box.svg +0 -3
- data/app/assets/icons/outline/map-pin-alt.svg +0 -4
- data/app/assets/icons/outline/map-pin.svg +0 -3
- data/app/assets/icons/outline/message-caption.svg +0 -3
- data/app/assets/icons/outline/message-dots.svg +0 -3
- data/app/assets/icons/outline/messages.svg +0 -3
- data/app/assets/icons/outline/microphone.svg +0 -3
- data/app/assets/icons/outline/minimize.svg +0 -3
- data/app/assets/icons/outline/minus.svg +0 -3
- data/app/assets/icons/outline/mobile-phone.svg +0 -3
- data/app/assets/icons/outline/moon.svg +0 -3
- data/app/assets/icons/outline/newspaper.svg +0 -3
- data/app/assets/icons/outline/ordered-list.svg +0 -3
- data/app/assets/icons/outline/outdent.svg +0 -3
- data/app/assets/icons/outline/palette.svg +0 -3
- data/app/assets/icons/outline/paper-clip.svg +0 -3
- data/app/assets/icons/outline/paper-plane.svg +0 -3
- data/app/assets/icons/outline/paragraph.svg +0 -3
- data/app/assets/icons/outline/pause.svg +0 -3
- data/app/assets/icons/outline/pen-nib.svg +0 -3
- data/app/assets/icons/outline/pen.svg +0 -3
- data/app/assets/icons/outline/phone.svg +0 -3
- data/app/assets/icons/outline/play.svg +0 -3
- data/app/assets/icons/outline/plus.svg +0 -3
- data/app/assets/icons/outline/printer.svg +0 -3
- data/app/assets/icons/outline/profile-card.svg +0 -3
- data/app/assets/icons/outline/question-circle.svg +0 -3
- data/app/assets/icons/outline/quote.svg +0 -3
- data/app/assets/icons/outline/receipt.svg +0 -3
- data/app/assets/icons/outline/rectangle-list.svg +0 -3
- data/app/assets/icons/outline/redo.svg +0 -3
- data/app/assets/icons/outline/refresh.svg +0 -3
- data/app/assets/icons/outline/reply-all.svg +0 -3
- data/app/assets/icons/outline/reply.svg +0 -3
- data/app/assets/icons/outline/restore-window.svg +0 -3
- data/app/assets/icons/outline/rocket.svg +0 -3
- data/app/assets/icons/outline/ruler-combined.svg +0 -3
- data/app/assets/icons/outline/sale-percent.svg +0 -3
- data/app/assets/icons/outline/scale-balanced.svg +0 -3
- data/app/assets/icons/outline/search.svg +0 -3
- data/app/assets/icons/outline/share-all.svg +0 -3
- data/app/assets/icons/outline/share-nodes.svg +0 -3
- data/app/assets/icons/outline/shield-check.svg +0 -3
- data/app/assets/icons/outline/shield.svg +0 -3
- data/app/assets/icons/outline/shopping-bag.svg +0 -3
- data/app/assets/icons/outline/shuffle.svg +0 -3
- data/app/assets/icons/outline/sort-horizontal.svg +0 -3
- data/app/assets/icons/outline/sort.svg +0 -3
- data/app/assets/icons/outline/star-half-stroke.svg +0 -3
- data/app/assets/icons/outline/star-half.svg +0 -3
- data/app/assets/icons/outline/star.svg +0 -3
- data/app/assets/icons/outline/store.svg +0 -3
- data/app/assets/icons/outline/sun.svg +0 -3
- data/app/assets/icons/outline/swatchbook.svg +0 -3
- data/app/assets/icons/outline/table-column.svg +0 -3
- data/app/assets/icons/outline/table-row.svg +0 -3
- data/app/assets/icons/outline/tablet.svg +0 -3
- data/app/assets/icons/outline/tag.svg +0 -3
- data/app/assets/icons/outline/terminal.svg +0 -3
- data/app/assets/icons/outline/text-size.svg +0 -3
- data/app/assets/icons/outline/text-slash.svg +0 -3
- data/app/assets/icons/outline/thumbs-down.svg +0 -3
- data/app/assets/icons/outline/thumbs-up.svg +0 -3
- data/app/assets/icons/outline/ticket.svg +0 -3
- data/app/assets/icons/outline/trash-bin.svg +0 -3
- data/app/assets/icons/outline/truck.svg +0 -3
- data/app/assets/icons/outline/undo.svg +0 -3
- data/app/assets/icons/outline/upload.svg +0 -3
- data/app/assets/icons/outline/user-add.svg +0 -3
- data/app/assets/icons/outline/user-circle.svg +0 -3
- data/app/assets/icons/outline/user-edit.svg +0 -3
- data/app/assets/icons/outline/user-headset.svg +0 -3
- data/app/assets/icons/outline/user-remove.svg +0 -3
- data/app/assets/icons/outline/user-settings.svg +0 -3
- data/app/assets/icons/outline/user.svg +0 -3
- data/app/assets/icons/outline/users-group.svg +0 -3
- data/app/assets/icons/outline/users.svg +0 -3
- data/app/assets/icons/outline/video-camera.svg +0 -3
- data/app/assets/icons/outline/volume-down.svg +0 -3
- data/app/assets/icons/outline/volume-up.svg +0 -3
- data/app/assets/icons/outline/wallet.svg +0 -3
- data/app/assets/icons/outline/wand-magic-sparkles.svg +0 -3
- data/app/assets/icons/outline/window.svg +0 -3
- data/app/assets/icons/outline/zoom-in.svg +0 -3
- data/app/assets/icons/outline/zoom-out.svg +0 -3
- data/app/assets/icons/solid/X.svg +0 -3
- data/app/assets/icons/solid/address-book.svg +0 -3
- data/app/assets/icons/solid/adjustments-horizontal.svg +0 -3
- data/app/assets/icons/solid/adjustments-vertical.svg +0 -3
- data/app/assets/icons/solid/annotation.svg +0 -3
- data/app/assets/icons/solid/apple.svg +0 -3
- data/app/assets/icons/solid/archive-arrow-down.svg +0 -3
- data/app/assets/icons/solid/archive.svg +0 -4
- data/app/assets/icons/solid/arrow-right-alt.svg +0 -3
- data/app/assets/icons/solid/arrow-up-right-from-square.svg +0 -4
- data/app/assets/icons/solid/backward-step.svg +0 -3
- data/app/assets/icons/solid/badge-check.svg +0 -3
- data/app/assets/icons/solid/bell-active-alt.svg +0 -3
- data/app/assets/icons/solid/bell-active.svg +0 -5
- data/app/assets/icons/solid/bell-ring.svg +0 -3
- data/app/assets/icons/solid/bell.svg +0 -3
- data/app/assets/icons/solid/blender-phone.svg +0 -3
- data/app/assets/icons/solid/book-open.svg +0 -3
- data/app/assets/icons/solid/book.svg +0 -3
- data/app/assets/icons/solid/bookmark.svg +0 -3
- data/app/assets/icons/solid/brain.svg +0 -3
- data/app/assets/icons/solid/briefcase.svg +0 -3
- data/app/assets/icons/solid/bug.svg +0 -3
- data/app/assets/icons/solid/building.svg +0 -3
- data/app/assets/icons/solid/bullhorn.svg +0 -3
- data/app/assets/icons/solid/calendar-edit.svg +0 -4
- data/app/assets/icons/solid/calendar-month.svg +0 -3
- data/app/assets/icons/solid/calendar-plus.svg +0 -3
- data/app/assets/icons/solid/calendar-week.svg +0 -3
- data/app/assets/icons/solid/camera-photo.svg +0 -3
- data/app/assets/icons/solid/caption.svg +0 -3
- data/app/assets/icons/solid/caret-down.svg +0 -3
- data/app/assets/icons/solid/caret-left.svg +0 -3
- data/app/assets/icons/solid/caret-right.svg +0 -3
- data/app/assets/icons/solid/caret-sort.svg +0 -3
- data/app/assets/icons/solid/caret-up.svg +0 -3
- data/app/assets/icons/solid/cart-plus-alt.svg +0 -4
- data/app/assets/icons/solid/cart-plus.svg +0 -4
- data/app/assets/icons/solid/cart.svg +0 -3
- data/app/assets/icons/solid/cash.svg +0 -5
- data/app/assets/icons/solid/chart-mixed-dollar.svg +0 -3
- data/app/assets/icons/solid/chart-pie.svg +0 -4
- data/app/assets/icons/solid/check-circle.svg +0 -3
- data/app/assets/icons/solid/check-plus-circle.svg +0 -4
- data/app/assets/icons/solid/circle-pause.svg +0 -3
- data/app/assets/icons/solid/circle-plus.svg +0 -3
- data/app/assets/icons/solid/clapperboard-play.svg +0 -3
- data/app/assets/icons/solid/clipboard-check.svg +0 -3
- data/app/assets/icons/solid/clipboard-list.svg +0 -3
- data/app/assets/icons/solid/clipboard.svg +0 -3
- data/app/assets/icons/solid/clock.svg +0 -3
- data/app/assets/icons/solid/close-circle.svg +0 -3
- data/app/assets/icons/solid/cloud-arrow-up.svg +0 -4
- data/app/assets/icons/solid/code-branch.svg +0 -3
- data/app/assets/icons/solid/code-fork.svg +0 -3
- data/app/assets/icons/solid/code-merge.svg +0 -3
- data/app/assets/icons/solid/code-pull-request.svg +0 -3
- data/app/assets/icons/solid/cog.svg +0 -3
- data/app/assets/icons/solid/column.svg +0 -3
- data/app/assets/icons/solid/computer-speaker.svg +0 -4
- data/app/assets/icons/solid/credit-card.svg +0 -4
- data/app/assets/icons/solid/css.svg +0 -3
- data/app/assets/icons/solid/database.svg +0 -3
- data/app/assets/icons/solid/desktop-pc.svg +0 -3
- data/app/assets/icons/solid/discord.svg +0 -3
- data/app/assets/icons/solid/download.svg +0 -4
- data/app/assets/icons/solid/draw-square.svg +0 -4
- data/app/assets/icons/solid/dribbble.svg +0 -3
- data/app/assets/icons/solid/dropbox.svg +0 -4
- data/app/assets/icons/solid/edit.svg +0 -4
- data/app/assets/icons/solid/envelope-open.svg +0 -4
- data/app/assets/icons/solid/envelope.svg +0 -4
- data/app/assets/icons/solid/exclamation-circle.svg +0 -3
- data/app/assets/icons/solid/eye-slash.svg +0 -5
- data/app/assets/icons/solid/eye.svg +0 -3
- data/app/assets/icons/solid/face-explode.svg +0 -3
- data/app/assets/icons/solid/face-grin-stars.svg +0 -3
- data/app/assets/icons/solid/face-grin.svg +0 -3
- data/app/assets/icons/solid/face-laugh.svg +0 -3
- data/app/assets/icons/solid/facebook.svg +0 -3
- data/app/assets/icons/solid/file-chart-bar.svg +0 -3
- data/app/assets/icons/solid/file-check.svg +0 -4
- data/app/assets/icons/solid/file-circle-plus.svg +0 -4
- data/app/assets/icons/solid/file-clone.svg +0 -4
- data/app/assets/icons/solid/file-code.svg +0 -3
- data/app/assets/icons/solid/file-copy-alt.svg +0 -4
- data/app/assets/icons/solid/file-copy.svg +0 -4
- data/app/assets/icons/solid/file-csv.svg +0 -3
- data/app/assets/icons/solid/file-export.svg +0 -3
- data/app/assets/icons/solid/file-image.svg +0 -3
- data/app/assets/icons/solid/file-import.svg +0 -3
- data/app/assets/icons/solid/file-invoice.svg +0 -3
- data/app/assets/icons/solid/file-lines.svg +0 -3
- data/app/assets/icons/solid/file-music.svg +0 -3
- data/app/assets/icons/solid/file-paste.svg +0 -4
- data/app/assets/icons/solid/file-pdf.svg +0 -3
- data/app/assets/icons/solid/file-pen.svg +0 -4
- data/app/assets/icons/solid/file-ppt.svg +0 -3
- data/app/assets/icons/solid/file-search.svg +0 -3
- data/app/assets/icons/solid/file-shield.svg +0 -4
- data/app/assets/icons/solid/file-video.svg +0 -3
- data/app/assets/icons/solid/file-word.svg +0 -3
- data/app/assets/icons/solid/file-zip.svg +0 -3
- data/app/assets/icons/solid/file.svg +0 -3
- data/app/assets/icons/solid/filter.svg +0 -3
- data/app/assets/icons/solid/fire.svg +0 -3
- data/app/assets/icons/solid/flag.svg +0 -3
- data/app/assets/icons/solid/flowbite.svg +0 -6
- data/app/assets/icons/solid/folder-arrow-right.svg +0 -3
- data/app/assets/icons/solid/folder-duplicate.svg +0 -4
- data/app/assets/icons/solid/folder-open.svg +0 -3
- data/app/assets/icons/solid/folder-plus.svg +0 -3
- data/app/assets/icons/solid/folder.svg +0 -3
- data/app/assets/icons/solid/forward-step.svg +0 -3
- data/app/assets/icons/solid/forward.svg +0 -3
- data/app/assets/icons/solid/gift-box.svg +0 -3
- data/app/assets/icons/solid/github.svg +0 -3
- data/app/assets/icons/solid/globe.svg +0 -3
- data/app/assets/icons/solid/google.svg +0 -3
- data/app/assets/icons/solid/grid-plus.svg +0 -3
- data/app/assets/icons/solid/grid.svg +0 -3
- data/app/assets/icons/solid/headphones.svg +0 -3
- data/app/assets/icons/solid/heart.svg +0 -3
- data/app/assets/icons/solid/home.svg +0 -3
- data/app/assets/icons/solid/hourglass.svg +0 -3
- data/app/assets/icons/solid/html.svg +0 -3
- data/app/assets/icons/solid/image.svg +0 -4
- data/app/assets/icons/solid/inbox-full.svg +0 -3
- data/app/assets/icons/solid/inbox.svg +0 -3
- data/app/assets/icons/solid/indent.svg +0 -3
- data/app/assets/icons/solid/info-circle.svg +0 -3
- data/app/assets/icons/solid/keyboard.svg +0 -3
- data/app/assets/icons/solid/label.svg +0 -3
- data/app/assets/icons/solid/landmark.svg +0 -4
- data/app/assets/icons/solid/layers.svg +0 -4
- data/app/assets/icons/solid/life-saver.svg +0 -3
- data/app/assets/icons/solid/lightbulb.svg +0 -3
- data/app/assets/icons/solid/linkedin.svg +0 -4
- data/app/assets/icons/solid/list-music.svg +0 -3
- data/app/assets/icons/solid/lock-open.svg +0 -3
- data/app/assets/icons/solid/lock-time.svg +0 -4
- data/app/assets/icons/solid/lock.svg +0 -3
- data/app/assets/icons/solid/mail-box.svg +0 -3
- data/app/assets/icons/solid/map-pin-alt.svg +0 -3
- data/app/assets/icons/solid/map-pin.svg +0 -3
- data/app/assets/icons/solid/message-caption.svg +0 -3
- data/app/assets/icons/solid/message-dots.svg +0 -3
- data/app/assets/icons/solid/messages.svg +0 -4
- data/app/assets/icons/solid/microphone.svg +0 -4
- data/app/assets/icons/solid/mobile-phone.svg +0 -3
- data/app/assets/icons/solid/moon.svg +0 -3
- data/app/assets/icons/solid/newspaper.svg +0 -3
- data/app/assets/icons/solid/npm.svg +0 -3
- data/app/assets/icons/solid/outdent.svg +0 -3
- data/app/assets/icons/solid/palette.svg +0 -3
- data/app/assets/icons/solid/paper-plane.svg +0 -3
- data/app/assets/icons/solid/paragraph.svg +0 -3
- data/app/assets/icons/solid/pause.svg +0 -3
- data/app/assets/icons/solid/pen-nib.svg +0 -3
- data/app/assets/icons/solid/pen.svg +0 -3
- data/app/assets/icons/solid/phone.svg +0 -3
- data/app/assets/icons/solid/play.svg +0 -3
- data/app/assets/icons/solid/printer.svg +0 -3
- data/app/assets/icons/solid/profile-card.svg +0 -3
- data/app/assets/icons/solid/question-circle.svg +0 -3
- data/app/assets/icons/solid/quote.svg +0 -3
- data/app/assets/icons/solid/react.svg +0 -4
- data/app/assets/icons/solid/receipt.svg +0 -3
- data/app/assets/icons/solid/rectangle-list.svg +0 -3
- data/app/assets/icons/solid/reply-all.svg +0 -3
- data/app/assets/icons/solid/reply.svg +0 -3
- data/app/assets/icons/solid/rocket.svg +0 -3
- data/app/assets/icons/solid/sale-percent.svg +0 -3
- data/app/assets/icons/solid/scale-balanced.svg +0 -3
- data/app/assets/icons/solid/search.svg +0 -4
- data/app/assets/icons/solid/share-all.svg +0 -3
- data/app/assets/icons/solid/share-nodes.svg +0 -3
- data/app/assets/icons/solid/shield-check.svg +0 -3
- data/app/assets/icons/solid/shield.svg +0 -3
- data/app/assets/icons/solid/shopping-bag.svg +0 -3
- data/app/assets/icons/solid/stackoverflow.svg +0 -4
- data/app/assets/icons/solid/star-half-stroke.svg +0 -3
- data/app/assets/icons/solid/star-half.svg +0 -3
- data/app/assets/icons/solid/star.svg +0 -3
- data/app/assets/icons/solid/store.svg +0 -3
- data/app/assets/icons/solid/sun.svg +0 -3
- data/app/assets/icons/solid/swatchbook.svg +0 -3
- data/app/assets/icons/solid/table-column.svg +0 -3
- data/app/assets/icons/solid/table-row.svg +0 -3
- data/app/assets/icons/solid/tablet.svg +0 -3
- data/app/assets/icons/solid/tag.svg +0 -3
- data/app/assets/icons/solid/tailwind.svg +0 -3
- data/app/assets/icons/solid/terminal.svg +0 -3
- data/app/assets/icons/solid/thumbs-down.svg +0 -3
- data/app/assets/icons/solid/thumbs-up.svg +0 -3
- data/app/assets/icons/solid/ticket.svg +0 -3
- data/app/assets/icons/solid/trash-bin.svg +0 -3
- data/app/assets/icons/solid/truck.svg +0 -3
- data/app/assets/icons/solid/twitter.svg +0 -3
- data/app/assets/icons/solid/upload.svg +0 -3
- data/app/assets/icons/solid/user-add.svg +0 -3
- data/app/assets/icons/solid/user-circle.svg +0 -3
- data/app/assets/icons/solid/user-edit.svg +0 -3
- data/app/assets/icons/solid/user-headset.svg +0 -3
- data/app/assets/icons/solid/user-remove.svg +0 -3
- data/app/assets/icons/solid/user-settings.svg +0 -3
- data/app/assets/icons/solid/user.svg +0 -3
- data/app/assets/icons/solid/users-group.svg +0 -3
- data/app/assets/icons/solid/users.svg +0 -3
- data/app/assets/icons/solid/video-camera.svg +0 -3
- data/app/assets/icons/solid/volume-down.svg +0 -4
- data/app/assets/icons/solid/volume-up.svg +0 -5
- data/app/assets/icons/solid/vue.svg +0 -3
- data/app/assets/icons/solid/wallet.svg +0 -4
- data/app/assets/icons/solid/wand-magic-sparkles.svg +0 -4
- data/app/assets/icons/solid/window-restore.svg +0 -4
- data/app/assets/icons/solid/window.svg +0 -3
- data/app/assets/icons/solid/youtube.svg +0 -3
- data/app/assets/icons/solid/zoom-in.svg +0 -3
- data/app/assets/icons/solid/zoom-out.svg +0 -3
- data/app/views/components/action_button/action_button_component.html.erb +0 -7
- data/app/views/components/action_button/action_button_component.rb +0 -15
- data/app/views/components/attributes.rb +0 -184
- data/app/views/components/base.rb +0 -29
- data/app/views/components/block/block_component.html.erb +0 -3
- data/app/views/components/block/block_component.rb +0 -44
- data/app/views/components/breadcrumbs/breadcrumbs_component.html.erb +0 -96
- data/app/views/components/breadcrumbs/breadcrumbs_component.rb +0 -9
- data/app/views/components/button/button_component.html.erb +0 -11
- data/app/views/components/button/button_component.rb +0 -128
- data/app/views/components/dyna_frame_content/dyna_frame_content_component.html.erb +0 -8
- data/app/views/components/dyna_frame_content/dyna_frame_content_component.rb +0 -6
- data/app/views/components/dyna_frame_host/dyna_frame_host_component.html.erb +0 -3
- data/app/views/components/dyna_frame_host/dyna_frame_host_component.rb +0 -18
- data/app/views/components/empty_card/empty_card_component.html.erb +0 -6
- data/app/views/components/empty_card/empty_card_component.rb +0 -7
- data/app/views/components/form/form_builder.rb +0 -75
- data/app/views/components/form/form_component.html.erb +0 -73
- data/app/views/components/form/form_component.rb +0 -23
- data/app/views/components/has_many_panel/has_many_panel_component.html.erb +0 -25
- data/app/views/components/has_many_panel/has_many_panel_component.rb +0 -16
- data/app/views/components/header/header_component.html.erb +0 -1
- data/app/views/components/header/header_component.rb +0 -7
- data/app/views/components/interactive_action_form/interactive_action_form_component.html.erb +0 -39
- data/app/views/components/interactive_action_form/interactive_action_form_component.rb +0 -8
- data/app/views/components/nav_grid_menu/nav_grid_menu_component.html.erb +0 -24
- data/app/views/components/nav_grid_menu/nav_grid_menu_component.rb +0 -23
- data/app/views/components/nav_grid_menu_item/nav_grid_menu_item_component.html.erb +0 -4
- data/app/views/components/nav_grid_menu_item/nav_grid_menu_item_component.rb +0 -20
- data/app/views/components/nav_user/nav_user_component.html.erb +0 -50
- data/app/views/components/nav_user/nav_user_component.rb +0 -32
- data/app/views/components/nav_user_link/nav_user_link_component.html.erb +0 -7
- data/app/views/components/nav_user_link/nav_user_link_component.rb +0 -23
- data/app/views/components/nav_user_section/nav_user_section_component.html.erb +0 -7
- data/app/views/components/nav_user_section/nav_user_section_component.rb +0 -18
- data/app/views/components/nested_resource_form_fields/nested_resource_form_fields_component.html.erb +0 -64
- data/app/views/components/nested_resource_form_fields/nested_resource_form_fields_component.rb +0 -29
- data/app/views/components/pagination/pagination_component.html.erb +0 -6
- data/app/views/components/pagination/pagination_component.rb +0 -94
- data/app/views/components/panel/panel_component.html.erb +0 -17
- data/app/views/components/panel/panel_component.rb +0 -17
- data/app/views/components/resource_header/resource_header_component.html.erb +0 -83
- data/app/views/components/resource_header/resource_header_component.rb +0 -30
- data/app/views/components/resource_layout/resource_layout_component.html.erb +0 -53
- data/app/views/components/resource_layout/resource_layout_component.rb +0 -41
- data/app/views/components/sidebar/sidebar_component.html.erb +0 -69
- data/app/views/components/sidebar/sidebar_component.rb +0 -23
- data/app/views/components/sidebar_menu/sidebar_menu_component.html.erb +0 -5
- data/app/views/components/sidebar_menu/sidebar_menu_component.rb +0 -17
- data/app/views/components/sidebar_menu_item/sidebar_menu_item_component.html.erb +0 -64
- data/app/views/components/sidebar_menu_item/sidebar_menu_item_component.rb +0 -52
- data/app/views/components/skeleton/table/table_component.html.erb +0 -18
- data/app/views/components/skeleton/table/table_component.rb +0 -6
- data/app/views/components/table/table_component.html.erb +0 -43
- data/app/views/components/table/table_component.rb +0 -159
- data/app/views/components/table_search_input/table_search_input_component.html.erb +0 -48
- data/app/views/components/table_search_input/table_search_input_component.rb +0 -15
- data/app/views/components/table_toolbar/table_toolbar_component.html.erb +0 -7
- data/app/views/components/table_toolbar/table_toolbar_component.rb +0 -17
- data/app/views/components/toolbar/toolbar_component.html.erb +0 -67
- data/app/views/components/toolbar/toolbar_component.rb +0 -26
- data/app/views/layouts/resource.html copy.erb +0 -49
- data/app/views/plutonium/_resource_header.html copy.erb +0 -287
- data/lib/generators/pu/gen/component/component_generator.rb +0 -99
- data/lib/generators/pu/gen/component/templates/component.html.erb.tt +0 -3
- data/lib/generators/pu/gen/component/templates/component.rb.tt +0 -15
- data/lib/generators/pu/gen/component/templates/controller.js.tt +0 -8
- data/lib/plutonium/builders/menus/sidebar_menu.rb.bk +0 -26
- data/lib/plutonium/builders/menus/sidebar_menu_item.rb.bk +0 -28
- data/lib/plutonium/component_registry.rb +0 -19
- data/lib/plutonium/core/action.rb +0 -49
- data/lib/plutonium/core/actions/basic_action.rb +0 -16
- data/lib/plutonium/core/actions/collection.rb +0 -37
- data/lib/plutonium/core/actions/destroy_action.rb +0 -23
- data/lib/plutonium/core/actions/edit_action.rb +0 -21
- data/lib/plutonium/core/actions/interactive_action.rb +0 -64
- data/lib/plutonium/core/actions/new_action.rb +0 -20
- data/lib/plutonium/core/actions/show_action.rb +0 -19
- data/lib/plutonium/core/associations/renderers/base.rb +0 -77
- data/lib/plutonium/core/associations/renderers/factory.rb +0 -36
- data/lib/plutonium/core/associations/renderers/has_many_renderer.rb +0 -18
- data/lib/plutonium/core/autodiscovery/association_renderer_discoverer.rb +0 -31
- data/lib/plutonium/core/autodiscovery/discoverer.rb +0 -15
- data/lib/plutonium/core/autodiscovery/input_discoverer.rb +0 -31
- data/lib/plutonium/core/autodiscovery/renderer_discoverer.rb +0 -31
- data/lib/plutonium/core/definers/action_definer.rb +0 -25
- data/lib/plutonium/core/definers/association_renderer_definer.rb +0 -33
- data/lib/plutonium/core/definers/field_definer.rb +0 -19
- data/lib/plutonium/core/definers/field_input_definer.rb +0 -77
- data/lib/plutonium/core/definers/field_renderer_definer.rb +0 -37
- data/lib/plutonium/core/fields/inputs/attachment_input.rb +0 -24
- data/lib/plutonium/core/fields/inputs/base.rb +0 -110
- data/lib/plutonium/core/fields/inputs/belongs_to_association_input.rb +0 -15
- data/lib/plutonium/core/fields/inputs/checkbox_input.rb +0 -15
- data/lib/plutonium/core/fields/inputs/date_time_input.rb +0 -15
- data/lib/plutonium/core/fields/inputs/factory.rb +0 -50
- data/lib/plutonium/core/fields/inputs/has_many_association_input.rb +0 -15
- data/lib/plutonium/core/fields/inputs/nested_input.rb +0 -72
- data/lib/plutonium/core/fields/inputs/noop_input.rb +0 -16
- data/lib/plutonium/core/fields/inputs/phone_input.rb +0 -22
- data/lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb +0 -48
- data/lib/plutonium/core/fields/inputs/simple_form_association_input.rb +0 -26
- data/lib/plutonium/core/fields/inputs/simple_form_input.rb +0 -13
- data/lib/plutonium/core/fields/renderers/association_renderer.rb +0 -28
- data/lib/plutonium/core/fields/renderers/attachment_renderer.rb +0 -21
- data/lib/plutonium/core/fields/renderers/base.rb +0 -83
- data/lib/plutonium/core/fields/renderers/basic_renderer.rb +0 -13
- data/lib/plutonium/core/fields/renderers/factory.rb +0 -37
- data/lib/plutonium/core/renderable.rb +0 -20
- data/lib/plutonium/core/ui/collection.rb +0 -18
- data/lib/plutonium/core/ui/detail.rb +0 -15
- data/lib/plutonium/core/ui/form.rb +0 -12
- data/lib/plutonium/helpers/action_buttons_helper.rb +0 -32
- data/lib/plutonium/helpers/component_helper.rb +0 -14
- data/lib/plutonium/helpers/form_helper.rb +0 -50
- data/lib/plutonium/icons.rb +0 -32
- data/lib/plutonium/preserved__/field.rb.bk +0 -65
- data/lib/plutonium/preserved__/input.rb.bk +0 -93
- data/lib/plutonium/ui/table/components/pagy_page_info.rb +0 -70
- data/src/js/controllers/has_many_panel_controller.js +0 -8
- data/src/js/controllers/interactive_action_form_controller.js +0 -13
- data/src/js/controllers/nav_grid_menu_controller.js +0 -8
- data/src/js/controllers/nav_grid_menu_item_controller.js +0 -8
- data/src/js/controllers/nav_user_controller.js +0 -8
- data/src/js/controllers/nav_user_link_controller.js +0 -8
- data/src/js/controllers/nav_user_section_controller.js +0 -8
- data/src/js/controllers/resource_layout_controller.js +0 -8
- data/src/js/controllers/sidebar_controller.js +0 -8
- data/src/js/controllers/sidebar_menu_controller.js +0 -8
- data/src/js/controllers/sidebar_menu_item_controller.js +0 -8
- data/src/js/controllers/table_controller.js +0 -8
- data/src/js/controllers/table_search_input_controller.js +0 -8
- data/src/js/controllers/table_toolbar_controller.js +0 -8
- data/src/js/controllers/toolbar_controller.js +0 -8
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
module PlutoniumUi
|
|
2
|
-
class SidebarMenuItemComponent < PlutoniumUi::Base
|
|
3
|
-
renders_many :sub_items, "::PlutoniumUi::SidebarMenuItemComponent"
|
|
4
|
-
|
|
5
|
-
option :name
|
|
6
|
-
option :url, default: -> { "" }
|
|
7
|
-
option :options, default: -> { {} }
|
|
8
|
-
option :icon, optional: true
|
|
9
|
-
|
|
10
|
-
private
|
|
11
|
-
|
|
12
|
-
def base_attributes
|
|
13
|
-
# base attributes go here
|
|
14
|
-
{
|
|
15
|
-
id: "sidebar-menu-item-#{name.parameterize}",
|
|
16
|
-
classname: "sidebar-menu-item",
|
|
17
|
-
controller: ["sidebar-menu-item", sub_items.any? ? "resource-collapse" : nil],
|
|
18
|
-
link_button_class: "flex items-center p-2 w-full text-base font-normal text-gray-900 rounded-lg transition duration-75 group hover:bg-gray-100 dark:text-white dark:hover:bg-gray-700",
|
|
19
|
-
link_link_class: "flex items-center p-2 text-base font-normal text-gray-900 rounded-lg dark:text-white hover:bg-gray-100 dark:hover:bg-gray-700 group",
|
|
20
|
-
link_label_class: "flex-1 ml-3 text-left whitespace-nowrap",
|
|
21
|
-
sub_link_button_class: "flex items-center p-2 pl-11 w-full text-base font-normal text-gray-900 rounded-lg transition duration-75 group hover:bg-gray-100 dark:text-white dark:hover:bg-gray-700",
|
|
22
|
-
icon_class: "text-gray-400 transition duration-75 dark:text-gray-400 group-hover:text-gray-900 dark:group-hover:text-white"
|
|
23
|
-
}
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def filtered_attributes
|
|
27
|
-
%i[link_button_class link_label_class sub_link_button_class link_link_class icon_class]
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def link_button_class
|
|
31
|
-
raw_attributes_hash[:link_button_class]
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def link_link_class
|
|
35
|
-
raw_attributes_hash[:link_link_class]
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def link_label_class
|
|
39
|
-
raw_attributes_hash[:link_label_class]
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def sub_link_button_class
|
|
43
|
-
raw_attributes_hash[:sub_link_button_class]
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def icon_class
|
|
47
|
-
raw_attributes_hash[:icon_class]
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
Plutonium::ComponentRegistry.register :sidebar_menu_item, to: PlutoniumUi::SidebarMenuItemComponent
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<div role="status" class="p-4 space-y-4 border border-gray-200 divide-y divide-gray-200 rounded shadow motion-safe:animate-pulse dark:divide-gray-700 md:p-6 dark:border-gray-700">
|
|
3
|
-
<div class="flex items-center justify-between">
|
|
4
|
-
<div>
|
|
5
|
-
<div class="h-2.5 bg-gray-300 rounded-full dark:bg-gray-600 w-24 mb-2.5"></div>
|
|
6
|
-
<div class="w-32 h-2 bg-gray-200 rounded-full dark:bg-gray-700"></div>
|
|
7
|
-
</div>
|
|
8
|
-
<div class="h-2.5 bg-gray-300 rounded-full dark:bg-gray-700 w-12"></div>
|
|
9
|
-
</div>
|
|
10
|
-
<div class="flex items-center justify-between pt-4">
|
|
11
|
-
<div>
|
|
12
|
-
<div class="h-2.5 bg-gray-300 rounded-full dark:bg-gray-600 w-24 mb-2.5"></div>
|
|
13
|
-
<div class="w-32 h-2 bg-gray-200 rounded-full dark:bg-gray-700"></div>
|
|
14
|
-
</div>
|
|
15
|
-
<div class="h-2.5 bg-gray-300 rounded-full dark:bg-gray-700 w-12"></div>
|
|
16
|
-
</div>
|
|
17
|
-
<span class="sr-only">Loading...</span>
|
|
18
|
-
</div>
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
<table <%= attributes_html %>>
|
|
2
|
-
<thead class="<%= table_head_classname %>">
|
|
3
|
-
<tr>
|
|
4
|
-
<th scope="col" class="p-4">
|
|
5
|
-
<div class="flex items-center">
|
|
6
|
-
<input id="checkbox-all-search" type="checkbox" class="w-4 h-4 text-primary-600 bg-gray-100 border-gray-300 rounded focus:ring-primary-500 dark:focus:ring-primary-600 dark:ring-offset-gray-800 dark:focus:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600">
|
|
7
|
-
<label for="checkbox-all-search" class="sr-only">checkbox</label>
|
|
8
|
-
</div>
|
|
9
|
-
</th>
|
|
10
|
-
<% @columns.each do |column| %>
|
|
11
|
-
<th scope="col" class="<%= table_head_cell_classname %>">
|
|
12
|
-
<%= table_head_cell column %>
|
|
13
|
-
</th>
|
|
14
|
-
<% end %>
|
|
15
|
-
<% if actions_block.present? %>
|
|
16
|
-
<th scope="col" class="<%= table_actions_head_classname %>"> </th>
|
|
17
|
-
<% end %>
|
|
18
|
-
</tr>
|
|
19
|
-
</thead>
|
|
20
|
-
<tbody>
|
|
21
|
-
<% @rows.each do |row| %>
|
|
22
|
-
<tr class="<%= table_row_classname %>">
|
|
23
|
-
<th scope="row" class="w-4 p-4">
|
|
24
|
-
<div class="flex items-center">
|
|
25
|
-
<input id="checkbox-table-search-1" type="checkbox" class="w-4 h-4 text-primary-600 bg-gray-100 border-gray-300 rounded focus:ring-primary-500 dark:focus:ring-primary-600 dark:ring-offset-gray-800 dark:focus:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600">
|
|
26
|
-
<label for="checkbox-table-search-1" class="sr-only">checkbox</label>
|
|
27
|
-
</div>
|
|
28
|
-
</th>
|
|
29
|
-
<% @columns.each do |column| %>
|
|
30
|
-
<td class="<%= table_row_cell_classname %>">
|
|
31
|
-
<%# the capture ensures, that we do not only return the return of the block, but all the html from the block %>
|
|
32
|
-
<%= view_context.capture(row, &column.td_block) %>
|
|
33
|
-
</td>
|
|
34
|
-
<% end %>
|
|
35
|
-
<% if actions_block.present? %>
|
|
36
|
-
<td class="<%= table_actions_row_classname %>">
|
|
37
|
-
<%= view_context.capture(row, &actions_block) %>
|
|
38
|
-
</td>
|
|
39
|
-
<% end %>
|
|
40
|
-
</tr>
|
|
41
|
-
<% end %>
|
|
42
|
-
</tbody>
|
|
43
|
-
</table>
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
module PlutoniumUi
|
|
2
|
-
# TableComponent is a UI component that represents a table with sortable columns and optional row actions.
|
|
3
|
-
class TableComponent < PlutoniumUi::Base
|
|
4
|
-
option :rows
|
|
5
|
-
|
|
6
|
-
attr_reader :columns, :actions_block
|
|
7
|
-
|
|
8
|
-
# Initializes the TableComponent with the given options.
|
|
9
|
-
#
|
|
10
|
-
# @param options [Hash] The options for the component.
|
|
11
|
-
def initialize(...)
|
|
12
|
-
super
|
|
13
|
-
@columns = []
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# Defines a column in the table.
|
|
17
|
-
#
|
|
18
|
-
# @param name [Symbol] The name of the column.
|
|
19
|
-
# @param label [String] The label of the column.
|
|
20
|
-
# @param search_object [Object] The search object associated with the column.
|
|
21
|
-
# @param block [Proc] An optional block for additional column customization.
|
|
22
|
-
def column(name:, label:, search_object:, &)
|
|
23
|
-
@columns ||= []
|
|
24
|
-
@columns << Column.new(name:, label:, search_object:, &)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# Returns the base attributes for the table.
|
|
28
|
-
#
|
|
29
|
-
# @return [Hash] The base attributes hash.
|
|
30
|
-
def base_attributes
|
|
31
|
-
{
|
|
32
|
-
classname: "table-auto w-full text-sm text-left rtl:text-right text-gray-500 dark:text-gray-200",
|
|
33
|
-
table_head_classname: "text-xs text-gray-700 uppercase bg-gray-200 dark:bg-gray-700 dark:text-gray-200",
|
|
34
|
-
table_head_cell_classname: "px-6 py-3",
|
|
35
|
-
table_row_classname: "bg-white border-b dark:bg-gray-800 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600",
|
|
36
|
-
table_row_cell_classname: "px-6 py-4 whitespace-nowrap max-w-[250px] hover:max-w-fit overflow-hidden text-ellipsis",
|
|
37
|
-
table_actions_head_classname: "px-6 py-3 text-end",
|
|
38
|
-
table_actions_row_classname: "flex justify-end px-6 py-4"
|
|
39
|
-
}
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def filtered_attributes
|
|
43
|
-
base_attributes.keys - possible_attributes
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Defines a block of actions to be included in each row.
|
|
47
|
-
#
|
|
48
|
-
# @param block [Proc] The block defining the actions.
|
|
49
|
-
def with_actions(&block)
|
|
50
|
-
@actions_block = block
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
private
|
|
54
|
-
|
|
55
|
-
# Ensures that the view component calls the block, and @columns get populated.
|
|
56
|
-
def before_render
|
|
57
|
-
content
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# Retrieves the CSS class for the table head.
|
|
61
|
-
#
|
|
62
|
-
# @return [String] The CSS class for the table head.
|
|
63
|
-
def table_head_classname
|
|
64
|
-
raw_attributes_hash[:table_head_classname]
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# Retrieves the CSS class for a table head cell.
|
|
68
|
-
#
|
|
69
|
-
# @return [String] The CSS class for a table head cell.
|
|
70
|
-
def table_head_cell_classname
|
|
71
|
-
raw_attributes_hash[:table_head_cell_classname]
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
# Retrieves the CSS class for a table row.
|
|
75
|
-
#
|
|
76
|
-
# @return [String] The CSS class for a table row.
|
|
77
|
-
def table_row_classname
|
|
78
|
-
raw_attributes_hash[:table_row_classname]
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
# Retrieves the CSS class for a table row cell.
|
|
82
|
-
#
|
|
83
|
-
# @return [String] The CSS class for a table row cell.
|
|
84
|
-
def table_row_cell_classname
|
|
85
|
-
raw_attributes_hash[:table_row_cell_classname]
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
# Retrieves the CSS class for the table actions head.
|
|
89
|
-
#
|
|
90
|
-
# @return [String] The CSS class for the table actions head.
|
|
91
|
-
def table_actions_head_classname
|
|
92
|
-
raw_attributes_hash[:table_actions_head_classname]
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
# Retrieves the CSS class for the table actions row.
|
|
96
|
-
#
|
|
97
|
-
# @return [String] The CSS class for the table actions row.
|
|
98
|
-
def table_actions_row_classname
|
|
99
|
-
raw_attributes_hash[:table_actions_row_classname]
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
# Generates the content for a table head cell, including sorting links if applicable.
|
|
103
|
-
#
|
|
104
|
-
# @param column [Column] The column object.
|
|
105
|
-
# @return [String] The HTML content for the table head cell.
|
|
106
|
-
def table_head_cell(column)
|
|
107
|
-
name = column.name
|
|
108
|
-
label = column.label
|
|
109
|
-
search_object = column.search_object
|
|
110
|
-
|
|
111
|
-
if (sort_params = search_object.sort_params_for(name))
|
|
112
|
-
tag.div class: "inline-flex" do
|
|
113
|
-
concat begin
|
|
114
|
-
link_to(sort_params[:url], class: "flex", title: sort_params[:direction] || "Sort") do
|
|
115
|
-
concat label
|
|
116
|
-
if sort_params[:direction].present?
|
|
117
|
-
icon = (sort_params[:direction] == "ASC") ? "up" : "down"
|
|
118
|
-
concat " "
|
|
119
|
-
concat render_icon("outline/arrow-#{icon}")
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
if sort_params[:position].present?
|
|
125
|
-
concat " "
|
|
126
|
-
concat link_to(
|
|
127
|
-
sort_params[:position] + 1,
|
|
128
|
-
sort_params[:reset_url],
|
|
129
|
-
class: "inline-flex items-center justify-center w-4 h-4 text-xs font-bold text-white bg-yellow-500 border-1 border-white rounded-full dark:border-gray-90",
|
|
130
|
-
title: "Clear sorting"
|
|
131
|
-
)
|
|
132
|
-
end
|
|
133
|
-
end
|
|
134
|
-
else
|
|
135
|
-
label
|
|
136
|
-
end
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
# A value object to hold the column definition.
|
|
140
|
-
class Column
|
|
141
|
-
attr_reader :name, :label, :search_object, :td_block
|
|
142
|
-
|
|
143
|
-
# Initializes a Column object with the given attributes.
|
|
144
|
-
#
|
|
145
|
-
# @param name [Symbol] The name of the column.
|
|
146
|
-
# @param label [String] The label of the column.
|
|
147
|
-
# @param search_object [Object] The search object associated with the column.
|
|
148
|
-
# @param block [Proc] An optional block for additional column customization.
|
|
149
|
-
def initialize(name:, label:, search_object:, &block)
|
|
150
|
-
@name = name
|
|
151
|
-
@label = label
|
|
152
|
-
@search_object = search_object
|
|
153
|
-
@td_block = block
|
|
154
|
-
end
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
Plutonium::ComponentRegistry.register :table, to: PlutoniumUi::TableComponent
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
<div <%= attributes_html %>>
|
|
2
|
-
<%= simple_form_for :q, url: "", method: :get, html: { class: "flex items-center", data: { controller: "form", turbo_frame: nil } } do |f| %>
|
|
3
|
-
<label for="search" class="sr-only">Search</label>
|
|
4
|
-
<div class="relative w-full">
|
|
5
|
-
<div class="absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none">
|
|
6
|
-
<svg aria-hidden="true" class="w-5 h-5 text-gray-500 dark:text-gray-200" fill="currentColor" viewbox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
|
7
|
-
<path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" clip-rule="evenodd" />
|
|
8
|
-
</svg>
|
|
9
|
-
</div>
|
|
10
|
-
|
|
11
|
-
<%=
|
|
12
|
-
render search_object.search_filter.input_definitions[:search].with(
|
|
13
|
-
form: f,
|
|
14
|
-
record:nil,
|
|
15
|
-
wrapper: false, label: false,
|
|
16
|
-
as: :string, # force string for search
|
|
17
|
-
placeholder: "search...",
|
|
18
|
-
required: false,
|
|
19
|
-
input_html: {
|
|
20
|
-
id: "search",
|
|
21
|
-
value: search_object.search_query,
|
|
22
|
-
class: "bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-primary-500 focus:border-primary-500 block w-full pl-10 p-2 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-500 dark:focus:border-primary-500",
|
|
23
|
-
data: {
|
|
24
|
-
action: "form#submit",
|
|
25
|
-
# form_target: "focus",
|
|
26
|
-
turbo_permanent: true
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
)
|
|
30
|
-
%>
|
|
31
|
-
</div>
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
<%# preserve collection filters %>
|
|
35
|
-
|
|
36
|
-
<%= f.hidden_field :scope, value: raw_resource_query_params[:scope] %>
|
|
37
|
-
<%= f.simple_fields_for :sort_fields do |nested| %>
|
|
38
|
-
<% Array(raw_resource_query_params[:sort_fields]).each do |key| %>
|
|
39
|
-
<%= nested.hidden_field nil, value: key %>
|
|
40
|
-
<% end %>
|
|
41
|
-
<% end %>
|
|
42
|
-
<%= f.simple_fields_for :sort_directions do |nested| %>
|
|
43
|
-
<% (raw_resource_query_params[:sort_directions] || {}).each do |key, value| %>
|
|
44
|
-
<%= nested.hidden_field key, value: %>
|
|
45
|
-
<% end %>
|
|
46
|
-
<% end %>
|
|
47
|
-
<% end %>
|
|
48
|
-
</div>
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
module PlutoniumUi
|
|
2
|
-
class TableSearchInputComponent < PlutoniumUi::Base
|
|
3
|
-
option :search_object
|
|
4
|
-
|
|
5
|
-
private
|
|
6
|
-
|
|
7
|
-
def base_attributes
|
|
8
|
-
{
|
|
9
|
-
controller: "table-search-input"
|
|
10
|
-
}
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
Plutonium::ComponentRegistry.register :table_search_input, to: PlutoniumUi::TableSearchInputComponent
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
<div <%= attributes_html %>>
|
|
2
|
-
<%= render_component :toolbar, actions:, resource: resource_class do %>
|
|
3
|
-
<% if search_object.search_filter.present? && current_policy.search? %>
|
|
4
|
-
<%= render_component "table_search_input", search_object: search_object %>
|
|
5
|
-
<% end %>
|
|
6
|
-
<% end %>
|
|
7
|
-
</div>
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
module PlutoniumUi
|
|
2
|
-
class TableToolbarComponent < PlutoniumUi::Base
|
|
3
|
-
option :resource_class
|
|
4
|
-
option :search_object
|
|
5
|
-
option :actions
|
|
6
|
-
|
|
7
|
-
private
|
|
8
|
-
|
|
9
|
-
def base_attributes
|
|
10
|
-
{
|
|
11
|
-
controller: "table-toolbar"
|
|
12
|
-
}
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
Plutonium::ComponentRegistry.register :table_toolbar, to: PlutoniumUi::TableToolbarComponent
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
<%#= render_component :panel do %>
|
|
2
|
-
<div <%= attributes_html %>>
|
|
3
|
-
<div class="w-full md:w-1/2">
|
|
4
|
-
<%= content %>
|
|
5
|
-
</div>
|
|
6
|
-
<div class="<%= toolbar_actions_classname %>">
|
|
7
|
-
<% actions.values.each do |action| %>
|
|
8
|
-
<%= toolbar_action_button resource, action %>
|
|
9
|
-
<% end %>
|
|
10
|
-
|
|
11
|
-
<!--
|
|
12
|
-
<div class="flex items-center space-x-3 w-full md:w-auto">
|
|
13
|
-
<button id="actionsDropdownButton" data-dropdown-toggle="actionsDropdown" class="w-full md:w-auto flex items-center justify-center py-2 px-4 text-sm font-medium text-gray-900 focus:outline-none bg-white rounded-lg border border-gray-200 hover:bg-gray-100 hover:text-primary-700 focus:z-10 focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 dark:bg-gray-800 dark:text-gray-200 dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-700" type="button">
|
|
14
|
-
<svg class="-ml-1 mr-1.5 w-5 h-5" fill="currentColor" viewbox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
15
|
-
<path clip-rule="evenodd" fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" />
|
|
16
|
-
</svg>
|
|
17
|
-
Actions
|
|
18
|
-
</button>
|
|
19
|
-
<div id="actionsDropdown" class="hidden z-10 w-44 bg-white rounded divide-y divide-gray-100 shadow dark:bg-gray-700 dark:divide-gray-600">
|
|
20
|
-
<ul class="py-1 text-sm text-gray-700 dark:text-gray-200" aria-labelledby="actionsDropdownButton">
|
|
21
|
-
<li>
|
|
22
|
-
<a href="#" class="block py-2 px-4 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white">Mass Edit</a>
|
|
23
|
-
</li>
|
|
24
|
-
</ul>
|
|
25
|
-
<div class="py-1">
|
|
26
|
-
<a href="#" class="block py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 dark:hover:bg-gray-600 dark:text-gray-200 dark:hover:text-white">Delete all</a>
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
29
|
-
<button id="filterDropdownButton" data-dropdown-toggle="filterDropdown" class="w-full md:w-auto flex items-center justify-center py-2 px-4 text-sm font-medium text-gray-900 focus:outline-none bg-white rounded-lg border border-gray-200 hover:bg-gray-100 hover:text-primary-700 focus:z-10 focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 dark:bg-gray-800 dark:text-gray-200 dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-700" type="button">
|
|
30
|
-
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="h-4 w-4 mr-2 text-gray-400" viewbox="0 0 20 20" fill="currentColor">
|
|
31
|
-
<path fill-rule="evenodd" d="M3 3a1 1 0 011-1h12a1 1 0 011 1v3a1 1 0 01-.293.707L12 11.414V15a1 1 0 01-.293.707l-2 2A1 1 0 018 17v-5.586L3.293 6.707A1 1 0 013 6V3z" clip-rule="evenodd" />
|
|
32
|
-
</svg>
|
|
33
|
-
Filter
|
|
34
|
-
<svg class="-mr-1 ml-1.5 w-5 h-5" fill="currentColor" viewbox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
35
|
-
<path clip-rule="evenodd" fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" />
|
|
36
|
-
</svg>
|
|
37
|
-
</button>
|
|
38
|
-
<div id="filterDropdown" class="z-10 hidden w-48 p-3 bg-white rounded-lg shadow dark:bg-gray-700">
|
|
39
|
-
<h6 class="mb-3 text-sm font-medium text-gray-900 dark:text-white">Choose brand</h6>
|
|
40
|
-
<ul class="space-y-2 text-sm" aria-labelledby="filterDropdownButton">
|
|
41
|
-
<li class="flex items-center">
|
|
42
|
-
<input id="apple" type="checkbox" value="" class="w-4 h-4 bg-gray-100 border-gray-300 rounded text-primary-600 focus:ring-primary-500 dark:focus:ring-primary-600 dark:ring-offset-gray-700 focus:ring-2 dark:bg-gray-600 dark:border-gray-500">
|
|
43
|
-
<label for="apple" class="ml-2 text-sm font-medium text-gray-900 dark:text-gray-100">Apple (56)</label>
|
|
44
|
-
</li>
|
|
45
|
-
<li class="flex items-center">
|
|
46
|
-
<input id="fitbit" type="checkbox" value="" class="w-4 h-4 bg-gray-100 border-gray-300 rounded text-primary-600 focus:ring-primary-500 dark:focus:ring-primary-600 dark:ring-offset-gray-700 focus:ring-2 dark:bg-gray-600 dark:border-gray-500">
|
|
47
|
-
<label for="fitbit" class="ml-2 text-sm font-medium text-gray-900 dark:text-gray-100">Microsoft (16)</label>
|
|
48
|
-
</li>
|
|
49
|
-
<li class="flex items-center">
|
|
50
|
-
<input id="razor" type="checkbox" value="" class="w-4 h-4 bg-gray-100 border-gray-300 rounded text-primary-600 focus:ring-primary-500 dark:focus:ring-primary-600 dark:ring-offset-gray-700 focus:ring-2 dark:bg-gray-600 dark:border-gray-500">
|
|
51
|
-
<label for="razor" class="ml-2 text-sm font-medium text-gray-900 dark:text-gray-100">Razor (49)</label>
|
|
52
|
-
</li>
|
|
53
|
-
<li class="flex items-center">
|
|
54
|
-
<input id="nikon" type="checkbox" value="" class="w-4 h-4 bg-gray-100 border-gray-300 rounded text-primary-600 focus:ring-primary-500 dark:focus:ring-primary-600 dark:ring-offset-gray-700 focus:ring-2 dark:bg-gray-600 dark:border-gray-500">
|
|
55
|
-
<label for="nikon" class="ml-2 text-sm font-medium text-gray-900 dark:text-gray-100">Nikon (12)</label>
|
|
56
|
-
</li>
|
|
57
|
-
<li class="flex items-center">
|
|
58
|
-
<input id="benq" type="checkbox" value="" class="w-4 h-4 bg-gray-100 border-gray-300 rounded text-primary-600 focus:ring-primary-500 dark:focus:ring-primary-600 dark:ring-offset-gray-700 focus:ring-2 dark:bg-gray-600 dark:border-gray-500">
|
|
59
|
-
<label for="benq" class="ml-2 text-sm font-medium text-gray-900 dark:text-gray-100">BenQ (74)</label>
|
|
60
|
-
</li>
|
|
61
|
-
</ul>
|
|
62
|
-
</div>
|
|
63
|
-
</div>
|
|
64
|
-
-->
|
|
65
|
-
</div>
|
|
66
|
-
</div>
|
|
67
|
-
<%# end %>
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
module PlutoniumUi
|
|
2
|
-
class ToolbarComponent < PlutoniumUi::Base
|
|
3
|
-
option :resource
|
|
4
|
-
option :actions, default: proc { {} }
|
|
5
|
-
|
|
6
|
-
private
|
|
7
|
-
|
|
8
|
-
def base_attributes
|
|
9
|
-
{
|
|
10
|
-
classname: "flex flex-col md:flex-row items-center justify-between space-y-3 md:space-y-0 md:space-x-4",
|
|
11
|
-
toolbar_actions_classname: "w-full md:w-auto flex flex-col md:flex-row space-y-1 md:space-y-0 items-stretch md:items-center justify-end shrink-0",
|
|
12
|
-
controller: "toolbar"
|
|
13
|
-
}
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def filtered_attributes
|
|
17
|
-
%i[toolbar_actions_classname]
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def toolbar_actions_classname
|
|
21
|
-
raw_attributes_hash[:toolbar_actions_classname]
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
Plutonium::ComponentRegistry.register :toolbar, to: PlutoniumUi::ToolbarComponent
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en" data-bs-theme="auto">
|
|
3
|
-
<head>
|
|
4
|
-
<title><%= page_title @page_title %></title>
|
|
5
|
-
<meta charset="utf-8">
|
|
6
|
-
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
7
|
-
<meta name="turbo-cache-control" content="no-cache">
|
|
8
|
-
<meta name="turbo-refresh-method" content="morph">
|
|
9
|
-
<%= csrf_meta_tags %>
|
|
10
|
-
<%= csp_meta_tag %>
|
|
11
|
-
<%= yield(:meta) %>
|
|
12
|
-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/quill/1.3.7/quill.snow.min.css" integrity="sha512-/FHUK/LsH78K9XTqsR9hbzr21J8B8RwHR/r8Jv9fzry6NVAOVIGFKQCNINsbhK7a1xubVu2r5QZcz2T9cKpubw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
13
|
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/quill/1.3.7/quill.min.js" integrity="sha512-P2W2rr8ikUPfa31PLBo5bcBQrsa+TNj8jiKadtaIrHQGMo6hQM6RdPjQYxlNguwHz8AwSQ28VkBK6kHBLgd/8g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
|
14
|
-
|
|
15
|
-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slim-select/2.6.0/slimselect.min.css" integrity="sha512-GvqWM4KWH8mbgWIyvwdH8HgjUbyZTXrCq0sjGij9fDNiXz3vJoy3jCcAaWNekH2rJe4hXVWCJKN+bEW8V7AAEQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
16
|
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/slim-select/2.6.0/slimselect.min.js" integrity="sha512-0E8oaoA2v32h26IycsmRDShtQ8kMgD91zWVBxdIvUCjU3xBw81PV61QBsBqNQpWkp/zYJZip8Ag3ifmzz1wCKQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
|
17
|
-
|
|
18
|
-
<%= Plutonium::Config.stylesheet_tag.call self %>
|
|
19
|
-
<%= Plutonium::Config.script_tag.call self %>
|
|
20
|
-
<%= yield(:head) %>
|
|
21
|
-
</head>
|
|
22
|
-
<body class="bg-body-tertiary">
|
|
23
|
-
<%= modal_frame_tag do %>
|
|
24
|
-
<%= yield(:modal) %>
|
|
25
|
-
<% end %>
|
|
26
|
-
<%= render "flash" %>
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
<%= content_for?(:header) ? yield(:header) : render("header") %>
|
|
32
|
-
<div class="container-fluid">
|
|
33
|
-
<div class="row">
|
|
34
|
-
<div class="col-12 col-sm-3 col-xl-2 pt-2">
|
|
35
|
-
<%= render "sidebar", sidebar_menu: @sidebar_menu %>
|
|
36
|
-
</div>
|
|
37
|
-
<div class="col-12 col-sm-9 col-xl-10 pt-2">
|
|
38
|
-
<div class="container-fluid">
|
|
39
|
-
<%= yield(:toolbar) %>
|
|
40
|
-
<%= yield %>
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
</div>
|
|
45
|
-
<%= render "color_modes" %>
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
</body>
|
|
49
|
-
</html>
|