neo_components 0.1.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 +7 -0
- data/app/assets/icons/academy.svg +3 -0
- data/app/assets/icons/adjustments-horizontal.svg +3 -0
- data/app/assets/icons/adjustments-vertical.svg +3 -0
- data/app/assets/icons/arrow-down-tray.svg +3 -0
- data/app/assets/icons/arrow-left.svg +3 -0
- data/app/assets/icons/arrow-long-down.svg +3 -0
- data/app/assets/icons/arrow-long-right.svg +3 -0
- data/app/assets/icons/arrow-long-up.svg +3 -0
- data/app/assets/icons/arrow-right.svg +3 -0
- data/app/assets/icons/arrow-up-tray.svg +3 -0
- data/app/assets/icons/arrow-uturn-left.svg +3 -0
- data/app/assets/icons/arrow-uturn-right.svg +3 -0
- data/app/assets/icons/assign-user.svg +13 -0
- data/app/assets/icons/at-symbol.svg +3 -0
- data/app/assets/icons/bars-4.svg +3 -0
- data/app/assets/icons/bell.svg +3 -0
- data/app/assets/icons/book.svg +3 -0
- data/app/assets/icons/bookmark.svg +3 -0
- data/app/assets/icons/building-office-2.svg +3 -0
- data/app/assets/icons/calendar.svg +3 -0
- data/app/assets/icons/celebration.svg +15 -0
- data/app/assets/icons/check-badge-solid.svg +3 -0
- data/app/assets/icons/check-circle-solid.svg +3 -0
- data/app/assets/icons/check-circle.svg +3 -0
- data/app/assets/icons/check-list.svg +12 -0
- data/app/assets/icons/check.svg +3 -0
- data/app/assets/icons/chevron-double-right.svg +3 -0
- data/app/assets/icons/chevron-down.svg +3 -0
- data/app/assets/icons/chevron-left.svg +3 -0
- data/app/assets/icons/chevron-right.svg +3 -0
- data/app/assets/icons/chevron-up.svg +3 -0
- data/app/assets/icons/circle-stack.svg +3 -0
- data/app/assets/icons/clipboard-document-check-solid.svg +4 -0
- data/app/assets/icons/clipboard-document-check.svg +3 -0
- data/app/assets/icons/clock.svg +3 -0
- data/app/assets/icons/complete.svg +3 -0
- data/app/assets/icons/course.svg +3 -0
- data/app/assets/icons/device-phone-mobile.svg +3 -0
- data/app/assets/icons/document-arrow-up.svg +4 -0
- data/app/assets/icons/document-text.svg +4 -0
- data/app/assets/icons/ellipsis-vertical.svg +3 -0
- data/app/assets/icons/exclaimation-circle-solid.svg +3 -0
- data/app/assets/icons/eye.svg +4 -0
- data/app/assets/icons/flag.svg +3 -0
- data/app/assets/icons/funnel.svg +3 -0
- data/app/assets/icons/green-circle.svg +3 -0
- data/app/assets/icons/green-tick.svg +3 -0
- data/app/assets/icons/grid.svg +6 -0
- data/app/assets/icons/home.svg +3 -0
- data/app/assets/icons/i-vector.svg +3 -0
- data/app/assets/icons/lessons.svg +11 -0
- data/app/assets/icons/magnifying-glass.svg +3 -0
- data/app/assets/icons/minus.svg +3 -0
- data/app/assets/icons/numbered-list.svg +3 -0
- data/app/assets/icons/pencil.svg +3 -0
- data/app/assets/icons/play.svg +3 -0
- data/app/assets/icons/plus.svg +3 -0
- data/app/assets/icons/power.svg +3 -0
- data/app/assets/icons/question-mark-circle.svg +3 -0
- data/app/assets/icons/quiz-score.svg +15 -0
- data/app/assets/icons/re-invite.svg +3 -0
- data/app/assets/icons/red-circle.svg +3 -0
- data/app/assets/icons/share.svg +3 -0
- data/app/assets/icons/smiley-five.svg +5 -0
- data/app/assets/icons/smiley-four.svg +5 -0
- data/app/assets/icons/smiley-one.svg +5 -0
- data/app/assets/icons/smiley-three.svg +5 -0
- data/app/assets/icons/smiley-two.svg +5 -0
- data/app/assets/icons/sparkle.svg +3 -0
- data/app/assets/icons/star-transparent.svg +3 -0
- data/app/assets/icons/stop.svg +4 -0
- data/app/assets/icons/support-placeholder.svg +4 -0
- data/app/assets/icons/tag.svg +4 -0
- data/app/assets/icons/timer.svg +5 -0
- data/app/assets/icons/transcript.svg +31 -0
- data/app/assets/icons/trash.svg +3 -0
- data/app/assets/icons/upload-info.svg +7 -0
- data/app/assets/icons/user-circle.svg +3 -0
- data/app/assets/icons/user-group.svg +3 -0
- data/app/assets/icons/user.svg +3 -0
- data/app/assets/icons/users.svg +3 -0
- data/app/assets/icons/winner.svg +35 -0
- data/app/assets/icons/x-circle-solid.svg +3 -0
- data/app/assets/icons/x-circle.svg +3 -0
- data/app/assets/icons/x-mark.svg +3 -0
- data/app/assets/stylesheets/breadcrumbs.tailwind.css +45 -0
- data/app/assets/stylesheets/buttons.tailwind.css +98 -0
- data/app/assets/stylesheets/course_progress.css +75 -0
- data/app/assets/stylesheets/custom.css +67 -0
- data/app/assets/stylesheets/date_picker.tailwind.css +7 -0
- data/app/assets/stylesheets/directives.tailwind.css +3 -0
- data/app/assets/stylesheets/dropdown.tailwind.css +11 -0
- data/app/assets/stylesheets/file_selector.tailwind.css +47 -0
- data/app/assets/stylesheets/icons.css.erb +244 -0
- data/app/assets/stylesheets/inputs.tailwind.css +53 -0
- data/app/assets/stylesheets/menu_component.tailwind.css +39 -0
- data/app/assets/stylesheets/mobile_inputs.tailwind.css +11 -0
- data/app/assets/stylesheets/modalbox.tailwind.css +35 -0
- data/app/assets/stylesheets/profile_icon.tailwind.css +15 -0
- data/app/assets/stylesheets/textarea.tailwind.css +43 -0
- data/app/assets/stylesheets/tooltip.css +88 -0
- data/app/assets/stylesheets/typography.tailwind.css +70 -0
- data/app/helpers/ui_helper.rb +31 -0
- data/app/helpers/view_component/accordion_component.rb +12 -0
- data/app/helpers/view_component/breadcrumbs_component.rb +30 -0
- data/app/helpers/view_component/button_component.rb +180 -0
- data/app/helpers/view_component/chip_component.rb +54 -0
- data/app/helpers/view_component/component_helper.rb +21 -0
- data/app/helpers/view_component/course_card_component.rb +9 -0
- data/app/helpers/view_component/course_carousal_component.rb +14 -0
- data/app/helpers/view_component/course_select_component.rb +32 -0
- data/app/helpers/view_component/doc_section_component.rb +10 -0
- data/app/helpers/view_component/icon_component.rb +24 -0
- data/app/helpers/view_component/input_component/date_picker_component.rb +127 -0
- data/app/helpers/view_component/input_component/dropdown_component.rb +99 -0
- data/app/helpers/view_component/input_component/file_selector_component.rb +123 -0
- data/app/helpers/view_component/input_component/input_checkbox_component.rb +54 -0
- data/app/helpers/view_component/input_component/input_mobile_component.rb +68 -0
- data/app/helpers/view_component/input_component/input_radio_component.rb +54 -0
- data/app/helpers/view_component/input_component/input_text_component.rb +137 -0
- data/app/helpers/view_component/input_component/textarea_component.rb +101 -0
- data/app/helpers/view_component/input_component.rb +290 -0
- data/app/helpers/view_component/input_textarea_component.rb +28 -0
- data/app/helpers/view_component/long_course_card_component.rb +10 -0
- data/app/helpers/view_component/member_list_component.rb +17 -0
- data/app/helpers/view_component/menu_component.rb +31 -0
- data/app/helpers/view_component/menu_component_helper.rb +22 -0
- data/app/helpers/view_component/menu_item.rb +12 -0
- data/app/helpers/view_component/modal_box_component.rb +29 -0
- data/app/helpers/view_component/modal_component.rb +12 -0
- data/app/helpers/view_component/notification_bar_component.rb +22 -0
- data/app/helpers/view_component/paginator_component.rb +9 -0
- data/app/helpers/view_component/profile_icon_component.rb +46 -0
- data/app/helpers/view_component/progress_component.rb +12 -0
- data/app/helpers/view_component/table_component.rb +22 -0
- data/app/helpers/view_component/typography_component.rb +83 -0
- data/app/javascript/neo_components/controllers/collapsible_controller.js +37 -0
- data/app/javascript/neo_components/controllers/date_picker_controller.js +17 -0
- data/app/javascript/neo_components/controllers/file_selector_controller.js +145 -0
- data/app/javascript/neo_components/controllers/input_mobile_controller.js +7 -0
- data/app/javascript/neo_components/controllers/menu_component_controller.js +26 -0
- data/app/javascript/neo_components/controllers/modal_loader_controller.js +13 -0
- data/app/javascript/neo_components/controllers/modals_controller.js +26 -0
- data/app/javascript/neo_components/controllers/notification_bar_controller.js +9 -0
- data/app/javascript/neo_components/controllers/pagination_controller.js +11 -0
- data/app/javascript/neo_components/controllers/tab_change_controller.js +23 -0
- data/app/javascript/neo_components/controllers/tabs_controller.js +29 -0
- data/app/javascript/neo_components/controllers/text_clamp_controller.js +29 -0
- data/app/views/shared/components/_progress_bar_short.html.erb +8 -0
- data/app/views/shared/components/_tooltip.html.erb +7 -0
- data/app/views/view_components/accordion_component/_accordion.html.erb +22 -0
- data/app/views/view_components/breadcrumbs_component/_breadcrumbs.html.erb +38 -0
- data/app/views/view_components/button_component/_button.html.erb +13 -0
- data/app/views/view_components/buttons/_danger.html.erb +30 -0
- data/app/views/view_components/buttons/_primary.html.erb +31 -0
- data/app/views/view_components/buttons/_secondary.html.erb +29 -0
- data/app/views/view_components/chip_component/_chip_component.html.erb +9 -0
- data/app/views/view_components/course_carousal/_course_card_component.html.erb +65 -0
- data/app/views/view_components/course_carousal/_course_carousal_body_component.html.erb +25 -0
- data/app/views/view_components/course_carousal/_course_carousal_component.html.erb +8 -0
- data/app/views/view_components/course_carousal/_long_course_card_component.html.erb +70 -0
- data/app/views/view_components/course_select/_course_select_component.html.erb +19 -0
- data/app/views/view_components/course_select/_list_component.html.erb +14 -0
- data/app/views/view_components/course_select/_list_item_component.html.erb +86 -0
- data/app/views/view_components/course_select/_load_more.html.erb +17 -0
- data/app/views/view_components/course_select/_search_component.html.erb +48 -0
- data/app/views/view_components/course_select/_sidebar_component.html.erb +41 -0
- data/app/views/view_components/doc_section/_doc_section_component.html.erb +6 -0
- data/app/views/view_components/inputs/_checkbox_field.html.erb +19 -0
- data/app/views/view_components/inputs/_date_select_component.html.erb +37 -0
- data/app/views/view_components/inputs/_dropdown_field.html.erb +22 -0
- data/app/views/view_components/inputs/_file_selector.html.erb +16 -0
- data/app/views/view_components/inputs/_input_checkbox_component.html.erb +7 -0
- data/app/views/view_components/inputs/_input_mobile_component.html.erb +16 -0
- data/app/views/view_components/inputs/_input_radio_component.html.erb +7 -0
- data/app/views/view_components/inputs/_input_text_component.html.erb +16 -0
- data/app/views/view_components/inputs/_mobile_field.html.erb +31 -0
- data/app/views/view_components/inputs/_radio_field.html.erb +25 -0
- data/app/views/view_components/inputs/_text_field.html.erb +52 -0
- data/app/views/view_components/inputs/_textarea.html.erb +26 -0
- data/app/views/view_components/inputs/date_picker_component/_date_picker.html.erb +16 -0
- data/app/views/view_components/inputs/date_picker_component/_input_box.html.erb +34 -0
- data/app/views/view_components/inputs/dropdown_component/_dropdown.html.erb +16 -0
- data/app/views/view_components/inputs/dropdown_component/_select_box.html.erb +10 -0
- data/app/views/view_components/inputs/file_selector_component/_file_selector_box.html.erb +76 -0
- data/app/views/view_components/inputs/input_checkbox/_checkbox.html.erb +20 -0
- data/app/views/view_components/inputs/input_mobile/_code.html.erb +13 -0
- data/app/views/view_components/inputs/input_mobile/_mobile_box.html.erb +4 -0
- data/app/views/view_components/inputs/input_mobile/_number.html.erb +13 -0
- data/app/views/view_components/inputs/input_radio/_radio_button.html.erb +14 -0
- data/app/views/view_components/inputs/input_text/_text_box.html.erb +33 -0
- data/app/views/view_components/inputs/textarea_component/_text_area_box.html.erb +16 -0
- data/app/views/view_components/inputs/textarea_component/_textarea.html.erb +16 -0
- data/app/views/view_components/member_list/_member_list.html.erb +4 -0
- data/app/views/view_components/member_list/_member_search.html.erb +15 -0
- data/app/views/view_components/member_list/_members.html.erb +65 -0
- data/app/views/view_components/menu_component/_menu_component.html.erb +16 -0
- data/app/views/view_components/menu_component/_menu_item_button.html.erb +17 -0
- data/app/views/view_components/menu_component/_menu_item_link.html.erb +5 -0
- data/app/views/view_components/menu_component_old/_menu_component.html.erb +17 -0
- data/app/views/view_components/menu_component_old/_menu_item_button.html.erb +7 -0
- data/app/views/view_components/menu_component_old/_menu_item_link.html.erb +5 -0
- data/app/views/view_components/modal_component/_modal_box_component.html.erb +28 -0
- data/app/views/view_components/modals/_modal_component.html.erb +25 -0
- data/app/views/view_components/notification_bar/_notification_bar.html.erb +17 -0
- data/app/views/view_components/paginator/_next_page.html.erb +7 -0
- data/app/views/view_components/paginator/_paginator_component.html.erb +6 -0
- data/app/views/view_components/paginator/_prev_page.html.erb +7 -0
- data/app/views/view_components/profile_icon_component/_profile_icon.html.erb +3 -0
- data/app/views/view_components/progress_component/_progressbar.html.erb +5 -0
- data/app/views/view_components/typography/_h1_component.html.erb +1 -0
- data/app/views/view_components/typography/_h2_component.html.erb +1 -0
- data/app/views/view_components/typography/_h3_component.html.erb +1 -0
- data/app/views/view_components/typography/_heading_component.html.erb +3 -0
- data/app/views/view_components/typography/_link_component.html.erb +1 -0
- data/app/views/view_components/typography/_linked_text_component.html.erb +3 -0
- data/app/views/view_components/typography/_text_component.html.erb +1 -0
- data/config/importmap.rb +5 -0
- data/lib/neo_components/engine.rb +38 -0
- data/lib/neo_components/version.rb +5 -0
- data/lib/neo_components.rb +4 -0
- metadata +327 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<div data-controller="searches" class="w-full mb-4">
|
|
2
|
+
<%= form_with url: searches_path, method: :post, data: { action: "submit->searches#formSubmit", searches_target: "form" }, class: "w-full" do |form| %>
|
|
3
|
+
<%= _course_select_sidebar_component(tags: tags, form: form) %>
|
|
4
|
+
|
|
5
|
+
<%= form.hidden_field :context, value: search_context.context.to_s %>
|
|
6
|
+
|
|
7
|
+
<% if search_context.team_assign? %>
|
|
8
|
+
<%= form.hidden_field :team_id, value: search_context.team.id %>
|
|
9
|
+
<% elsif search_context.user_assign? %>
|
|
10
|
+
<%= form.hidden_field :user_id, value: search_context.user.id %>
|
|
11
|
+
<% elsif search_context.program? %>
|
|
12
|
+
<%= form.hidden_field :program_id, value: search_context.program.id %>
|
|
13
|
+
<% end %>
|
|
14
|
+
|
|
15
|
+
<div class="relative rounded-md border border-line-colour-light w-full">
|
|
16
|
+
<%= input_field(
|
|
17
|
+
field_name: :term,
|
|
18
|
+
placeholder: "Search courses ...",
|
|
19
|
+
type: "search",
|
|
20
|
+
value: search_context.term,
|
|
21
|
+
left_icon: "magnifying-glass",
|
|
22
|
+
width: "w-full",
|
|
23
|
+
html_options: {
|
|
24
|
+
data: {
|
|
25
|
+
searches_target: 'searchInput',
|
|
26
|
+
},
|
|
27
|
+
id: 'course-search'
|
|
28
|
+
}
|
|
29
|
+
) %>
|
|
30
|
+
|
|
31
|
+
<div class="absolute inset-y-0 right-4 flex items-center cursor-pointer" data-action="click->searches#formSubmit">
|
|
32
|
+
<span class="flex cursor-pointer items-center text-primary-light text-base">Search</span>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
<% end %>
|
|
36
|
+
|
|
37
|
+
<div class="flex items-center justify-end w-full gap-4 my-4">
|
|
38
|
+
<div class="cursor-pointer" data-action="click->searches#clearSearch">
|
|
39
|
+
<span class="flex cursor-pointer items-center text-primary-light text-sm">Clear search </span>
|
|
40
|
+
</div>
|
|
41
|
+
|
|
42
|
+
<div data-action="click->searches#openFilter"class="cursor-pointer">
|
|
43
|
+
<%= button(label: 'Filter', type: "secondary", size: "sm", icon_name: "funnel", icon_position: "right") %>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<div id="selected-tags"></div>
|
|
48
|
+
</div>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<div class="md:w-80 w-full bg-white box-shadow-medium fixed right-0 top-0 h-screen hidden z-50" data-searches-target="filters">
|
|
2
|
+
<div class="flex flex-row items-center justify-between border-b-2 border-line-colour mb-4 p-4">
|
|
3
|
+
<h2 class="text-lg font-semibold">Filter by</h2>
|
|
4
|
+
<span class="icon icon-close icon-base cursor-pointer bg-black" data-action="click->searches#closeFilter"></span>
|
|
5
|
+
</div>
|
|
6
|
+
<div class="h-full flex flex-col justify-between">
|
|
7
|
+
<div class="overflow-y-auto max-h-[calc(100vh-220px)] pb-4">
|
|
8
|
+
<div class="flex flex-col gap-2 p-4 border-b-2 border-line-colour">
|
|
9
|
+
<div class="flex justify-between">
|
|
10
|
+
<h3 class="text-xs font-medium text-primary mb-2">Levels</h3>
|
|
11
|
+
<span class="text-xs cursor-pointer mb-2" data-action="click->searches#clearFilters">Clear filter</span>
|
|
12
|
+
</div>
|
|
13
|
+
<ul class="flex flex-col gap-4">
|
|
14
|
+
<% tags.level.each do |tag| %>
|
|
15
|
+
<li class="mb-2 flex items-center">
|
|
16
|
+
<%= form.check_box :tags, { multiple: true, class: 'mr-2 h-3 w-3 tags-checkbox', id: dom_id(tag, 'check'), data: { searches_target: 'checkbox' } }, tag.name, nil %>
|
|
17
|
+
<label for="<%= dom_id(tag, 'check') %>" class="text-sm"><%= tag.name %></label>
|
|
18
|
+
</li>
|
|
19
|
+
<% end %>
|
|
20
|
+
</ul>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="flex flex-col gap-2 p-4">
|
|
23
|
+
<div class="pt-2">
|
|
24
|
+
<h3 class="text-xs font-medium text-primary mb-2">Category</h3>
|
|
25
|
+
</div>
|
|
26
|
+
<ul class="flex flex-col gap-4">
|
|
27
|
+
<% tags.category.each do |tag| %>
|
|
28
|
+
<li class="mb-2 flex items-center">
|
|
29
|
+
<%= form.check_box :tags, { multiple: true, class: 'mr-2 h-3 w-3 tags-checkbox', id: dom_id(tag, 'check'), data: { searches_target: 'checkbox' } }, tag.name, nil %>
|
|
30
|
+
<label for="<%= dom_id(tag, 'check') %>" class="text-sm"><%= tag.name %></label>
|
|
31
|
+
</li>
|
|
32
|
+
<% end %>
|
|
33
|
+
</ul>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<div class="flex gap-4 p-4 text-sm justify-center fixed bottom-0 md:w-80 w-full bg-white items-center border-t-2 border-line-colour">
|
|
39
|
+
<%= form.submit 'Apply Filters', class: 'btn-primary w-full' %>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<div class="flex items-center gap-2 <%= width %>">
|
|
2
|
+
<% if form.present? %>
|
|
3
|
+
<%= form.check_box field_name,
|
|
4
|
+
{ multiple: allow_multiple, class: "input-check" },
|
|
5
|
+
value,
|
|
6
|
+
nil
|
|
7
|
+
%>
|
|
8
|
+
<%= form.label field_name, label, class: "label-text" if label.present? %>
|
|
9
|
+
<% else %>
|
|
10
|
+
<input class="input-check"
|
|
11
|
+
type="checkbox"
|
|
12
|
+
id="<%= field_name %>_<%= value %>"
|
|
13
|
+
name="<%= field_name %><%= "[]" if allow_multiple %>"
|
|
14
|
+
value="<%= value %>">
|
|
15
|
+
<% if label.present? %>
|
|
16
|
+
<label class="label-text" for="<%= field_name %>_<%= value %>"><%= label %></label>
|
|
17
|
+
<% end %>
|
|
18
|
+
<% end %>
|
|
19
|
+
</div>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<div class="relative flex flex-col gap-3" data-controller="date-picker">
|
|
2
|
+
<%= form.label local_assigns[:field_name], local_assigns[:label], class: "text-sm font-medium" %>
|
|
3
|
+
<div class="relative flex w-full flex-row items-center">
|
|
4
|
+
<!-- <input type="date" id="datePicker" class="invisible p-0 w-[2px]" data-action="change->date-picker#datePicked" data-date-picker-target="datePicker" min="<%#= local_assigns[:min] %>" max="<%#= local_assigns[:max] %>"/>-->
|
|
5
|
+
<%= date_field_tag(
|
|
6
|
+
'', # This hidden field won't be submitted
|
|
7
|
+
nil,
|
|
8
|
+
id: 'datePicker',
|
|
9
|
+
class: 'invisible p-0 w-[2px]',
|
|
10
|
+
min: local_assigns[:min],
|
|
11
|
+
max: local_assigns[:max],
|
|
12
|
+
data: {
|
|
13
|
+
action: 'change->date-picker#datePicked',
|
|
14
|
+
date_picker_target: 'datePicker'
|
|
15
|
+
}
|
|
16
|
+
)
|
|
17
|
+
%>
|
|
18
|
+
|
|
19
|
+
<%= input_field(
|
|
20
|
+
form: local_assigns[:form],
|
|
21
|
+
field_name: local_assigns[:field_name],
|
|
22
|
+
placeholder: local_assigns[:placeholder],
|
|
23
|
+
type: "text",
|
|
24
|
+
width: "w-full",
|
|
25
|
+
html_options: {
|
|
26
|
+
data: {
|
|
27
|
+
date_picker_target: "dateSelector"
|
|
28
|
+
},
|
|
29
|
+
readonly: true
|
|
30
|
+
}
|
|
31
|
+
) %>
|
|
32
|
+
|
|
33
|
+
<div class="absolute right-2 flex items-center pl-2">
|
|
34
|
+
<span class="cursor-pointer icon-small icon icon-calendar bg-letter-color" data-action="click->date-picker#openDatePicker"></span>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<div class="flex flex-col gap-4 <%= width %>">
|
|
2
|
+
<% if label.present? %>
|
|
3
|
+
<label class="text-letter-color-light text-sm md:text-base leading-tight">
|
|
4
|
+
<%= label %>
|
|
5
|
+
</label>
|
|
6
|
+
<% end %>
|
|
7
|
+
|
|
8
|
+
<% merged_html_options = (html_options || {}).merge(
|
|
9
|
+
class: "px-4 py-3 rounded border border-line-colour w-full text-letter-color-light text-base focus:border-primary focus:ring-0 #{width}"
|
|
10
|
+
) %>
|
|
11
|
+
|
|
12
|
+
<% if form.present? %>
|
|
13
|
+
<%= form.select field_name,
|
|
14
|
+
options_for_select(options, value),
|
|
15
|
+
{ include_blank: merged_html_options[:include_blank] },
|
|
16
|
+
merged_html_options %>
|
|
17
|
+
<% else %>
|
|
18
|
+
<%= select_tag field_name,
|
|
19
|
+
options_for_select([["Select an option", ""]]+options, value),
|
|
20
|
+
merged_html_options %>
|
|
21
|
+
<% end %>
|
|
22
|
+
</div>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<div class="file-selector-component-container">
|
|
2
|
+
<% if file_selector.label.present? %>
|
|
3
|
+
<span class="<%= file_selector.label_style %>">
|
|
4
|
+
<%= file_selector.label %>
|
|
5
|
+
</span>
|
|
6
|
+
<% end %>
|
|
7
|
+
|
|
8
|
+
<%= render 'view_components/inputs/file_selector_component/file_selector_box', { file_selector: } %>
|
|
9
|
+
|
|
10
|
+
<% if file_selector.support_text.present? %>
|
|
11
|
+
<div class="<%= file_selector.support_text_style %>">
|
|
12
|
+
<span><%= file_selector.support_text %></span>
|
|
13
|
+
<span><%= file_selector.support_text_two %></span>
|
|
14
|
+
</div>
|
|
15
|
+
<% end %>
|
|
16
|
+
</div>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<div class="w-full flex flex-col gap-1 group">
|
|
2
|
+
<% if input.label.present? %>
|
|
3
|
+
<%= label_tag input.name do %>
|
|
4
|
+
<span class="<%= input.label_style %> inline-block mb-1"><%= input.label %></span>
|
|
5
|
+
<%= render 'view_components/inputs/input_mobile/mobile_box', { input: } %>
|
|
6
|
+
<% end %>
|
|
7
|
+
<% else %>
|
|
8
|
+
<%= render 'view_components/inputs/input_mobile/mobile_box', { input: } %>
|
|
9
|
+
<% end %>
|
|
10
|
+
|
|
11
|
+
<% if input.subtext.present? %>
|
|
12
|
+
<span class="<%= input.subtext_style %>">
|
|
13
|
+
<%= input.subtext %>
|
|
14
|
+
</span>
|
|
15
|
+
<% end %>
|
|
16
|
+
</div>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<div class="w-full flex flex-col gap-1">
|
|
2
|
+
<% if input.label.present? %>
|
|
3
|
+
<label class="group">
|
|
4
|
+
<span class="<%= input.label_style %> inline-block mb-1"><%= input.label %></span>
|
|
5
|
+
<%= render 'view_components/inputs/input_text/text_box', { input: } %>
|
|
6
|
+
</label>
|
|
7
|
+
<% else %>
|
|
8
|
+
<%= render 'view_components/inputs/input_text/text_box', { input: } %>
|
|
9
|
+
<% end %>
|
|
10
|
+
|
|
11
|
+
<% if input.subtext.present? %>
|
|
12
|
+
<span class="<%= input.subtext_style %>">
|
|
13
|
+
<%= input.subtext %>
|
|
14
|
+
</span>
|
|
15
|
+
<% end %>
|
|
16
|
+
</div>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<div class="flex flex-col gap-4 w-full">
|
|
2
|
+
<% if label.present? %>
|
|
3
|
+
<label class="text-letter-color-light text-sm md:text-base leading-tight">
|
|
4
|
+
<%= label %>
|
|
5
|
+
</label>
|
|
6
|
+
<% end %>
|
|
7
|
+
<div class="bg-white justify-between items-center flex rounded border border-line-colour">
|
|
8
|
+
<% if flag.present? %>
|
|
9
|
+
<div class="flex items-center justify-center border-r h-[52px] w-[96px] border-line-colour focus-within:border-primary">
|
|
10
|
+
<%= image_tag flag, alt: "IN", class: "h-8 w-8 rounded-full flag-box-shadow" %>
|
|
11
|
+
</div>
|
|
12
|
+
<% end %>
|
|
13
|
+
|
|
14
|
+
<%
|
|
15
|
+
base_data = { controller: "input-mobile", action: "input->input-mobile#validateInput" }
|
|
16
|
+
merged_data = base_data.merge((html_options && html_options[:data]) || {})
|
|
17
|
+
html_options_without_data = (html_options || {}).except(:data)
|
|
18
|
+
%>
|
|
19
|
+
|
|
20
|
+
<%= form.number_field field_name,
|
|
21
|
+
{
|
|
22
|
+
placeholder: placeholder,
|
|
23
|
+
pattern: "[0-9]{10}",
|
|
24
|
+
value: value,
|
|
25
|
+
title: "Enter exactly 10 digits",
|
|
26
|
+
class: "w-full text-letter-color-light text-base px-4 py-3 border-none rounded focus:ring-0 focus:outline-none",
|
|
27
|
+
required: true,
|
|
28
|
+
data: merged_data
|
|
29
|
+
}.merge(html_options_without_data) %>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<% html_data = html_options[:data] || {} %>
|
|
2
|
+
<% merged_options = html_options.merge(data: html_data) %>
|
|
3
|
+
<% custom_class = merged_options.delete(:class) || "" %>
|
|
4
|
+
<% radio_value = value || option %>
|
|
5
|
+
|
|
6
|
+
<label class="h-12 px-4 py-3 bg-white flex justify-between items-center gap-2.5 cursor-pointer <%= width %> <%= height %>">
|
|
7
|
+
<% if option.present? %>
|
|
8
|
+
<div class="flex flex-row items-center w-full">
|
|
9
|
+
<span class="text-letter-color-light text-base font-normal"><%= option %></span>
|
|
10
|
+
</div>
|
|
11
|
+
<% end %>
|
|
12
|
+
|
|
13
|
+
<% if form.present? %>
|
|
14
|
+
<%= form.radio_button field_name, radio_value, merged_options.merge(class: "form-radio w-5 h-5 #{custom_class}") %>
|
|
15
|
+
<% else %>
|
|
16
|
+
<input type="radio"
|
|
17
|
+
name="<%= field_name %>"
|
|
18
|
+
value="<%= radio_value %>"
|
|
19
|
+
id="<%= merged_options[:id] %>"
|
|
20
|
+
class="form-radio w-5 h-5 <%= custom_class %>"
|
|
21
|
+
<%= "checked" if merged_options[:checked] %>
|
|
22
|
+
<%= "disabled" if merged_options[:disabled] %>
|
|
23
|
+
<%= tag.attributes(data: merged_options[:data]) %>>
|
|
24
|
+
<% end %>
|
|
25
|
+
</label>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<div class="flex flex-col gap-4 <%= width %> ">
|
|
2
|
+
<% if label.present? %>
|
|
3
|
+
<label class="text-letter-color-light text-sm md:text-base leading-tight">
|
|
4
|
+
<%= label %>
|
|
5
|
+
</label>
|
|
6
|
+
<% end %>
|
|
7
|
+
|
|
8
|
+
<% input_classes = "w-full text-letter-color-light text-base px-4 py-3 border-none rounded" %>
|
|
9
|
+
<% input_classes += " #{height}" if height.present? %>
|
|
10
|
+
<% input_classes += (left_icon.present? || right_icon.present?) ? " focus:ring-0 focus:outline-none" : " focus:border focus:border-primary" %>
|
|
11
|
+
<% html_options[:class] = [input_classes, html_options[:class]].compact.join(" ") %>
|
|
12
|
+
<% is_text_area = type == "text_area" %>
|
|
13
|
+
|
|
14
|
+
<% field_options = html_options.merge(placeholder: placeholder) %>
|
|
15
|
+
<% field_options[:value] = value if value.present? %>
|
|
16
|
+
<% field_options[:rows] = rows if is_text_area && rows.present? %>
|
|
17
|
+
|
|
18
|
+
<div class="bg-white justify-between items-center flex rounded border border-line-colour">
|
|
19
|
+
<% if left_icon.present? %>
|
|
20
|
+
<div class="pl-4 flex items-center">
|
|
21
|
+
<%= icon(left_icon, css: "icon-small") %>
|
|
22
|
+
</div>
|
|
23
|
+
<% end %>
|
|
24
|
+
|
|
25
|
+
<% if form.present? %>
|
|
26
|
+
<% case type %>
|
|
27
|
+
<% when "password" %>
|
|
28
|
+
<%= form.password_field field_name, field_options %>
|
|
29
|
+
<% when "email" %>
|
|
30
|
+
<%= form.email_field field_name, field_options %>
|
|
31
|
+
<% when "number" %>
|
|
32
|
+
<%= form.number_field field_name, field_options%>
|
|
33
|
+
<% when "text_area" %>
|
|
34
|
+
<%= form.text_area field_name,field_options%>
|
|
35
|
+
<% else %>
|
|
36
|
+
<%= form.text_field field_name, field_options %>
|
|
37
|
+
<% end %>
|
|
38
|
+
<% else %>
|
|
39
|
+
<% if is_text_area %>
|
|
40
|
+
<textarea placeholder="<%= placeholder %>" rows="<%= rows %>" class="<%= html_options[:class] %>"><%= value %>></textarea>
|
|
41
|
+
<% else %>
|
|
42
|
+
<%= text_field_tag field_name, value,field_options %>
|
|
43
|
+
<% end %>
|
|
44
|
+
<% end %>
|
|
45
|
+
|
|
46
|
+
<% if right_icon.present? %>
|
|
47
|
+
<div class="pt-2">
|
|
48
|
+
<%= icon(right_icon, css: "icon-mini") %>
|
|
49
|
+
</div>
|
|
50
|
+
<% end %>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<div class="flex flex-col gap-4">
|
|
2
|
+
<% if label.present? %>
|
|
3
|
+
<% if form.present? %>
|
|
4
|
+
<%= form.label field_name, label, class: "text-letter-color-light text-sm md:text-base leading-tight" %>
|
|
5
|
+
<% else %>
|
|
6
|
+
<%= label_tag field_name, label, class: "text-letter-color-light text-sm md:text-base leading-tight" %>
|
|
7
|
+
<% end %>
|
|
8
|
+
<% end %>
|
|
9
|
+
|
|
10
|
+
<div class="bg-white rounded border border-line-colour flex items-center">
|
|
11
|
+
<% if form.present? %>
|
|
12
|
+
<%= form.text_area field_name,
|
|
13
|
+
html_options.merge(
|
|
14
|
+
class: "w-full text-letter-color-light text-base px-4 py-3 border-none rounded focus:border focus:border-primary"
|
|
15
|
+
)
|
|
16
|
+
%>
|
|
17
|
+
<% else %>
|
|
18
|
+
<%= text_area_tag field_name,
|
|
19
|
+
value,
|
|
20
|
+
html_options.merge(
|
|
21
|
+
class: "w-full text-letter-color-light text-base px-4 py-3 border-none rounded focus:border focus:border-primary"
|
|
22
|
+
)
|
|
23
|
+
%>
|
|
24
|
+
<% end %>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<div class="w-full flex flex-col gap-1" data-controller="date-picker">
|
|
2
|
+
<% if date_picker.label.present? %>
|
|
3
|
+
<label class="group">
|
|
4
|
+
<span class="<%= date_picker.label_style %>"><%= date_picker.label %></span>
|
|
5
|
+
<%= render 'view_components/inputs/date_picker_component/input_box', { date_picker: } %>
|
|
6
|
+
</label>
|
|
7
|
+
<% else %>
|
|
8
|
+
<%= render 'view_components/inputs/date_picker_component/input_box', { date_picker: } %>
|
|
9
|
+
<% end %>
|
|
10
|
+
|
|
11
|
+
<% if date_picker.support_text.present? %>
|
|
12
|
+
<span class="<%= date_picker.support_text_style %>">
|
|
13
|
+
<%= date_picker.support_text %>
|
|
14
|
+
</span>
|
|
15
|
+
<% end %>
|
|
16
|
+
</div>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<div class="relative flex w-full items-center">
|
|
2
|
+
|
|
3
|
+
<% if date_picker.form.present? %>
|
|
4
|
+
<% field_options = {
|
|
5
|
+
class: date_picker.html_options[:class],
|
|
6
|
+
placeholder: date_picker.placeholder,
|
|
7
|
+
data: { date_picker_target: "dateSelector" },
|
|
8
|
+
disabled: date_picker.disabled
|
|
9
|
+
} %>
|
|
10
|
+
|
|
11
|
+
<% field_options[:value] = date_picker.value if date_picker.value.present? %>
|
|
12
|
+
|
|
13
|
+
<%= date_picker.form.text_field date_picker.name, **field_options %>
|
|
14
|
+
<% else %>
|
|
15
|
+
<%= text_field_tag date_picker.name,
|
|
16
|
+
date_picker.value,
|
|
17
|
+
class: date_picker.html_options[:class],
|
|
18
|
+
placeholder: date_picker.placeholder,
|
|
19
|
+
data: { date_picker_target: "dateSelector" },
|
|
20
|
+
disabled: date_picker.disabled %>
|
|
21
|
+
<% end %>
|
|
22
|
+
<input type="date"
|
|
23
|
+
class="invisible p-0 w-[2px]"
|
|
24
|
+
data-date-picker-target="datePicker"
|
|
25
|
+
data-action="change->date-picker#datePicked"
|
|
26
|
+
min="<%= Date.today.strftime('%Y-%m-%d') %>" />
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
<div class="<%= date_picker.icon_wrapper_style %>" data-action="click->date-picker#openDatePicker">
|
|
30
|
+
<%= icon("calendar", css: date_picker.icon_style) %>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<div class="w-full flex flex-col gap-1">
|
|
2
|
+
<% if dropdown.label.present? %>
|
|
3
|
+
<label class="group">
|
|
4
|
+
<span class="<%= dropdown.label_style %> inline-block mb-1"><%= dropdown.label %></span>
|
|
5
|
+
<%= render 'view_components/inputs/dropdown_component/select_box', { dropdown: } %>
|
|
6
|
+
</label>
|
|
7
|
+
<% else %>
|
|
8
|
+
<%= render 'view_components/inputs/dropdown_component/select_box', { dropdown: } %>
|
|
9
|
+
<% end %>
|
|
10
|
+
|
|
11
|
+
<% if dropdown.support_text.present? %>
|
|
12
|
+
<span class="<%= dropdown.support_text_style %>">
|
|
13
|
+
<%= dropdown.support_text %>
|
|
14
|
+
</span>
|
|
15
|
+
<% end %>
|
|
16
|
+
</div>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<% if dropdown.form.present? %>
|
|
2
|
+
<%= dropdown.form.select dropdown.name,
|
|
3
|
+
options_for_select(dropdown.options, dropdown.value),
|
|
4
|
+
{ prompt: dropdown.prompt },
|
|
5
|
+
dropdown.html_options %>
|
|
6
|
+
<% else %>
|
|
7
|
+
<%= select_tag dropdown.name,
|
|
8
|
+
options_for_select(dropdown.options, dropdown.value),
|
|
9
|
+
dropdown.html_options.merge(include_blank: dropdown.prompt) %>
|
|
10
|
+
<% end %>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<div data-controller="file-selector" data-file-selector-target="wrapper" class="<%= file_selector.wrapper_style %>">
|
|
2
|
+
<div
|
|
3
|
+
class="file-selector-input-box"
|
|
4
|
+
data-action="click->file-selector#chooseFile">
|
|
5
|
+
<div class="flex flex-col gap-1 items-center" data-file-selector-target="chooseFile">
|
|
6
|
+
|
|
7
|
+
<% if file_selector.form.present? %>
|
|
8
|
+
<%= file_selector.form.file_field(
|
|
9
|
+
file_selector.name,
|
|
10
|
+
accept: file_selector.accepted_types,
|
|
11
|
+
class: "hidden",
|
|
12
|
+
disabled: file_selector.disabled,
|
|
13
|
+
data: { file_selector_target: "fileInput" }
|
|
14
|
+
) %>
|
|
15
|
+
<% else %>
|
|
16
|
+
<%= file_field_tag(
|
|
17
|
+
file_selector.name,
|
|
18
|
+
accept: file_selector.accepted_types,
|
|
19
|
+
class: "hidden",
|
|
20
|
+
disabled: file_selector.disabled,
|
|
21
|
+
data: { file_selector_target: "fileInput" }
|
|
22
|
+
) %>
|
|
23
|
+
<% end %>
|
|
24
|
+
|
|
25
|
+
<%= icon("document-arrow-up", css: file_selector.upload_icon_style) %>
|
|
26
|
+
<% if file_selector.error.present? %>
|
|
27
|
+
<p class="general-text-sm-normal file-selctor-error-text">
|
|
28
|
+
<%= file_selector.error %>
|
|
29
|
+
</p>
|
|
30
|
+
<% end %>
|
|
31
|
+
<p class="<%= file_selector.choose_file_style %>">Choose file</p>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<label
|
|
35
|
+
class="hidden flex flex-col items-center justify-center"
|
|
36
|
+
data-file-selector-target="selectedFileName">
|
|
37
|
+
<span data-file-selector-target="fileName" class="general-text-md-normal text-center"></span>
|
|
38
|
+
<span data-file-selector-target="fileSize" class="general-text-sm-normal text-center"></span>
|
|
39
|
+
</label>
|
|
40
|
+
</div>
|
|
41
|
+
|
|
42
|
+
<% if file_selector.type == "image" %>
|
|
43
|
+
<div class="<%= file_selector.preview_style %> hidden" data-file-selector-target="previewContainer">
|
|
44
|
+
<img data-file-selector-target="preview" class="file-selector-preview-image" alt="Preview" />
|
|
45
|
+
<button
|
|
46
|
+
type="button"
|
|
47
|
+
data-action="click->file-selector#resetInput"
|
|
48
|
+
class="file-selector-preview-close">
|
|
49
|
+
<%= icon("x-circle", css: "file-selector-close-icon") %>
|
|
50
|
+
</button>
|
|
51
|
+
</div>
|
|
52
|
+
<% elsif file_selector.type == "video" %>
|
|
53
|
+
<div class="<%= file_selector.preview_style %> hidden" data-file-selector-target="previewContainer">
|
|
54
|
+
<video data-file-selector-target="preview"
|
|
55
|
+
class="file-selector-preview-image" src=""></video>
|
|
56
|
+
<button
|
|
57
|
+
type="button"
|
|
58
|
+
data-action="click->file-selector#resetInput"
|
|
59
|
+
class="file-selector-preview-close">
|
|
60
|
+
<%= icon("x-circle", css: "file-selector-close-icon") %>
|
|
61
|
+
</button>
|
|
62
|
+
</div>
|
|
63
|
+
<% elsif file_selector.type == "document" %>
|
|
64
|
+
<div class="<%= file_selector.preview_style %> hidden" data-file-selector-target="previewContainer">
|
|
65
|
+
<div data-file-selector-target="iconPreview" class="file-selector-doc-preview">
|
|
66
|
+
<%= icon("document-text", css: "file-selector-upload-icon fill-primary") %>
|
|
67
|
+
</div>
|
|
68
|
+
<button
|
|
69
|
+
type="button"
|
|
70
|
+
data-action="click->file-selector#resetInput"
|
|
71
|
+
class="file-selector-preview-close">
|
|
72
|
+
<%= icon("x-circle", css: "file-selector-close-icon") %>
|
|
73
|
+
</button>
|
|
74
|
+
</div>
|
|
75
|
+
<% end %>
|
|
76
|
+
</div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<% element = content_tag :div, class: "flex justify-center items-center" do %>
|
|
2
|
+
<% if input.form.present? %>
|
|
3
|
+
<%= input.form.check_box input.name,
|
|
4
|
+
input.html_options,
|
|
5
|
+
input.value,
|
|
6
|
+
nil %>
|
|
7
|
+
<% else %>
|
|
8
|
+
<%= check_box_tag input.name,
|
|
9
|
+
input.value,
|
|
10
|
+
input.html_options[:checked],
|
|
11
|
+
input.html_options.except(:checked) %>
|
|
12
|
+
<% end %>
|
|
13
|
+
<div class="w-5 h-5 flex justify-center items-center rounded-sm border-2 <%= input.box_style %>">
|
|
14
|
+
<%= icon("check", span_css: "w-5 h-5 #{input.check_style}", stroke_width: '2.0') %>
|
|
15
|
+
</div>
|
|
16
|
+
<% end %>
|
|
17
|
+
|
|
18
|
+
<% label_tag = content_tag :div, input.label, class: "main-text-md-normal" %>
|
|
19
|
+
|
|
20
|
+
<%= arrange_tags(label_tag, element, input.label_position) %>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<% if input.form.present? %>
|
|
2
|
+
<% if input.code_selectable? %>
|
|
3
|
+
<%= input.form.select input.code_name, options_for_select(available_country_codes_list, input.code_value), {}, input.html_options.merge(class: input.code_wrapper_style) %>
|
|
4
|
+
<% else %>
|
|
5
|
+
<%= input.form.text_field input.code_name, input.html_options.merge(class: input.code_wrapper_style, readOnly: true, value: input.code_value) %>
|
|
6
|
+
<% end %>
|
|
7
|
+
<% else %>
|
|
8
|
+
<% if input.code_selectable? %>
|
|
9
|
+
<%= select_tag input.code_name, options_for_select(available_country_codes_list, input.code_value), input.html_options.merge(class: input.code_wrapper_style) %>
|
|
10
|
+
<% else %>
|
|
11
|
+
<%= text_field_tag input.code_name, input.code_value, input.html_options.merge(class: input.code_wrapper_style, readOnly: true) %>
|
|
12
|
+
<% end %>
|
|
13
|
+
<% end %>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<% if input.icon_name.present? %>
|
|
2
|
+
<% icon_tag = content_tag(:div, class: input.icon_style) do %>
|
|
3
|
+
<%= icon(input.icon_name, css: input.icon_size) %>
|
|
4
|
+
<% end %>
|
|
5
|
+
<% end %>
|
|
6
|
+
<%= content_tag :div, class: input.input_wrapper_style do %>
|
|
7
|
+
<% if input.form.present? %>
|
|
8
|
+
<% input_tag = input.form.number_field input.name, input.html_options.merge(value: input.value) %>
|
|
9
|
+
<% else %>
|
|
10
|
+
<% input_tag = number_field_tag input.name, input.value, input.html_options %>
|
|
11
|
+
<% end %>
|
|
12
|
+
<%= arrange_tags(icon_tag, input_tag, input.icon_position) %>
|
|
13
|
+
<% end %>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<% element = content_tag :div, class: "flex justify-center items-center" do %>
|
|
2
|
+
<% if input.form.present? %>
|
|
3
|
+
<%= input.form.radio_button input.name, input.value, **input.html_options %>
|
|
4
|
+
<% else %>
|
|
5
|
+
<%= radio_button_tag input.name, input.value, **input.html_options %>
|
|
6
|
+
<% end %>
|
|
7
|
+
<div class="w-5 h-5 flex justify-center items-center rounded-full border-2 <%= input.radio_circle_style %>">
|
|
8
|
+
<div class="w-2 h-2 inline-block rounded-full <%= input.radio_dot_style %>"></div>
|
|
9
|
+
</div>
|
|
10
|
+
<% end %>
|
|
11
|
+
|
|
12
|
+
<% label_tag = content_tag :div, input.label, class: "main-text-lg-normal" %>
|
|
13
|
+
|
|
14
|
+
<%= arrange_tags(label_tag, element, input.label_position) %>
|