rails-active-ui 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/Rakefile +6 -0
- data/app/assets/stylesheets.css +73555 -0
- data/app/components/accordion_component.rb +34 -0
- data/app/components/ad_component.rb +28 -0
- data/app/components/api_component.rb +24 -0
- data/app/components/breadcrumb_component.rb +26 -0
- data/app/components/button_component.rb +49 -0
- data/app/components/calendar_component.rb +34 -0
- data/app/components/card_component.rb +56 -0
- data/app/components/checkbox_component.rb +41 -0
- data/app/components/column_component.rb +62 -0
- data/app/components/comment_component.rb +45 -0
- data/app/components/concerns/alignable.rb +21 -0
- data/app/components/concerns/attachable.rb +16 -0
- data/app/components/concerns/orientable.rb +21 -0
- data/app/components/concerns/positionable.rb +21 -0
- data/app/components/concerns/sizeable.rb +18 -0
- data/app/components/container_component.rb +23 -0
- data/app/components/dimmer_component.rb +30 -0
- data/app/components/divider_component.rb +30 -0
- data/app/components/dropdown_component.rb +63 -0
- data/app/components/embed_component.rb +32 -0
- data/app/components/emoji_component.rb +15 -0
- data/app/components/feed_component.rb +22 -0
- data/app/components/flag_component.rb +15 -0
- data/app/components/flyout_component.rb +41 -0
- data/app/components/form_component.rb +39 -0
- data/app/components/grid_component.rb +85 -0
- data/app/components/h_stack_component.rb +67 -0
- data/app/components/header_component.rb +60 -0
- data/app/components/icon_component.rb +41 -0
- data/app/components/image_component.rb +46 -0
- data/app/components/input_component.rb +52 -0
- data/app/components/item_component.rb +39 -0
- data/app/components/item_group_component.rb +30 -0
- data/app/components/label_component.rb +49 -0
- data/app/components/link_component.rb +23 -0
- data/app/components/list_component.rb +39 -0
- data/app/components/loader_component.rb +33 -0
- data/app/components/menu_component.rb +64 -0
- data/app/components/menu_item_component.rb +52 -0
- data/app/components/message_component.rb +54 -0
- data/app/components/modal_component.rb +50 -0
- data/app/components/nag_component.rb +25 -0
- data/app/components/overlay_component.rb +16 -0
- data/app/components/placeholder_component.rb +39 -0
- data/app/components/popup_component.rb +31 -0
- data/app/components/progress_component.rb +48 -0
- data/app/components/pusher_component.rb +18 -0
- data/app/components/rail_component.rb +31 -0
- data/app/components/rating_component.rb +41 -0
- data/app/components/reset_component.rb +12 -0
- data/app/components/reveal_component.rb +39 -0
- data/app/components/row_component.rb +39 -0
- data/app/components/search_component.rb +44 -0
- data/app/components/segment_component.rb +57 -0
- data/app/components/segment_group_component.rb +36 -0
- data/app/components/shape_component.rb +25 -0
- data/app/components/sidebar_component.rb +33 -0
- data/app/components/site_component.rb +12 -0
- data/app/components/slider_component.rb +46 -0
- data/app/components/state_component.rb +25 -0
- data/app/components/statistic_component.rb +43 -0
- data/app/components/step_component.rb +56 -0
- data/app/components/step_group_component.rb +38 -0
- data/app/components/sticky_component.rb +22 -0
- data/app/components/sub_header_component.rb +15 -0
- data/app/components/sub_menu_component.rb +24 -0
- data/app/components/tab_component.rb +24 -0
- data/app/components/table_cell_component.rb +60 -0
- data/app/components/table_component.rb +160 -0
- data/app/components/table_row_component.rb +43 -0
- data/app/components/text_component.rb +73 -0
- data/app/components/toast_component.rb +36 -0
- data/app/components/transition_component.rb +32 -0
- data/app/components/v_stack_component.rb +31 -0
- data/app/components/visibility_component.rb +22 -0
- data/app/helpers/component_helper.rb +109 -0
- data/app/helpers/fui_helper.rb +53 -0
- data/app/javascript/accordion.js +547 -0
- data/app/javascript/accordion.min.js +11 -0
- data/app/javascript/api.js +1112 -0
- data/app/javascript/api.min.js +11 -0
- data/app/javascript/calendar.js +1960 -0
- data/app/javascript/calendar.min.js +11 -0
- data/app/javascript/checkbox.js +819 -0
- data/app/javascript/checkbox.min.js +11 -0
- data/app/javascript/dimmer.js +686 -0
- data/app/javascript/dimmer.min.js +11 -0
- data/app/javascript/dropdown.js +4019 -0
- data/app/javascript/dropdown.min.js +11 -0
- data/app/javascript/embed.js +646 -0
- data/app/javascript/embed.min.js +11 -0
- data/app/javascript/flyout.js +1405 -0
- data/app/javascript/flyout.min.js +11 -0
- data/app/javascript/form.js +2070 -0
- data/app/javascript/form.min.js +11 -0
- data/app/javascript/jquery.js +10716 -0
- data/app/javascript/jquery.min.js +2 -0
- data/app/javascript/modal.js +1507 -0
- data/app/javascript/modal.min.js +11 -0
- data/app/javascript/nag.js +522 -0
- data/app/javascript/nag.min.js +11 -0
- data/app/javascript/popup.js +1457 -0
- data/app/javascript/popup.min.js +11 -0
- data/app/javascript/progress.js +922 -0
- data/app/javascript/progress.min.js +11 -0
- data/app/javascript/rating.js +496 -0
- data/app/javascript/rating.min.js +11 -0
- data/app/javascript/search.js +1519 -0
- data/app/javascript/search.min.js +11 -0
- data/app/javascript/shape.js +721 -0
- data/app/javascript/shape.min.js +11 -0
- data/app/javascript/sidebar.js +952 -0
- data/app/javascript/sidebar.min.js +11 -0
- data/app/javascript/site.js +415 -0
- data/app/javascript/site.min.js +11 -0
- data/app/javascript/slider.js +1449 -0
- data/app/javascript/slider.min.js +11 -0
- data/app/javascript/state.js +653 -0
- data/app/javascript/state.min.js +11 -0
- data/app/javascript/sticky.js +852 -0
- data/app/javascript/sticky.min.js +11 -0
- data/app/javascript/tab.js +867 -0
- data/app/javascript/tab.min.js +11 -0
- data/app/javascript/toast.js +916 -0
- data/app/javascript/toast.min.js +11 -0
- data/app/javascript/transition.js +955 -0
- data/app/javascript/transition.min.js +11 -0
- data/app/javascript/ui/controllers/fui_accordion_controller.js +45 -0
- data/app/javascript/ui/controllers/fui_api_controller.js +80 -0
- data/app/javascript/ui/controllers/fui_calendar_controller.js +66 -0
- data/app/javascript/ui/controllers/fui_checkbox_controller.js +48 -0
- data/app/javascript/ui/controllers/fui_dimmer_controller.js +45 -0
- data/app/javascript/ui/controllers/fui_dropdown_controller.js +68 -0
- data/app/javascript/ui/controllers/fui_embed_controller.js +49 -0
- data/app/javascript/ui/controllers/fui_flyout_controller.js +49 -0
- data/app/javascript/ui/controllers/fui_form_controller.js +62 -0
- data/app/javascript/ui/controllers/fui_modal_controller.js +61 -0
- data/app/javascript/ui/controllers/fui_nag_controller.js +52 -0
- data/app/javascript/ui/controllers/fui_popup_controller.js +58 -0
- data/app/javascript/ui/controllers/fui_progress_controller.js +60 -0
- data/app/javascript/ui/controllers/fui_rating_controller.js +49 -0
- data/app/javascript/ui/controllers/fui_search_controller.js +76 -0
- data/app/javascript/ui/controllers/fui_shape_controller.js +45 -0
- data/app/javascript/ui/controllers/fui_sidebar_controller.js +48 -0
- data/app/javascript/ui/controllers/fui_site_controller.js +29 -0
- data/app/javascript/ui/controllers/fui_slider_controller.js +53 -0
- data/app/javascript/ui/controllers/fui_state_controller.js +63 -0
- data/app/javascript/ui/controllers/fui_sticky_controller.js +50 -0
- data/app/javascript/ui/controllers/fui_tab_controller.js +57 -0
- data/app/javascript/ui/controllers/fui_toast_controller.js +60 -0
- data/app/javascript/ui/controllers/fui_transition_controller.js +60 -0
- data/app/javascript/ui/controllers/fui_visibility_controller.js +55 -0
- data/app/javascript/ui/index.js +114 -0
- data/app/javascript/visibility.js +1196 -0
- data/app/javascript/visibility.min.js +11 -0
- data/app/lib/component.rb +63 -0
- data/config/importmap.rb +27 -0
- data/config/initializers/ruby_template_handler.rb +31 -0
- data/config/routes.rb +2 -0
- data/lib/tasks/ui_tasks.rake +4 -0
- data/lib/ui/engine.rb +27 -0
- data/lib/ui/version.rb +3 -0
- data/lib/ui.rb +6 -0
- metadata +220 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Controller } from "@hotwired/stimulus"
|
|
2
|
+
|
|
3
|
+
// Fomantic-UI Transition — CSS animation framework.
|
|
4
|
+
// Bridges: $.fn.transition
|
|
5
|
+
//
|
|
6
|
+
// Usage:
|
|
7
|
+
// <div data-controller="fui-transition"
|
|
8
|
+
// data-fui-transition-animation-value="fade"
|
|
9
|
+
// data-fui-transition-duration-value="500">
|
|
10
|
+
// Content to animate
|
|
11
|
+
// </div>
|
|
12
|
+
//
|
|
13
|
+
export default class extends Controller {
|
|
14
|
+
static values = {
|
|
15
|
+
animation: { type: String, default: "fade" },
|
|
16
|
+
duration: { type: Number, default: 500 },
|
|
17
|
+
queue: { type: Boolean, default: true },
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
connect() {}
|
|
21
|
+
disconnect() {}
|
|
22
|
+
|
|
23
|
+
animate() {
|
|
24
|
+
$(this.element).transition({
|
|
25
|
+
animation: this.animationValue,
|
|
26
|
+
duration: this.durationValue,
|
|
27
|
+
queue: this.queueValue,
|
|
28
|
+
onStart: () => { this.dispatch("start") },
|
|
29
|
+
onComplete: () => { this.dispatch("complete") },
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
show() {
|
|
34
|
+
$(this.element).transition({
|
|
35
|
+
animation: this.animationValue + " in",
|
|
36
|
+
duration: this.durationValue,
|
|
37
|
+
onComplete: () => { this.dispatch("show") },
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
hide() {
|
|
42
|
+
$(this.element).transition({
|
|
43
|
+
animation: this.animationValue + " out",
|
|
44
|
+
duration: this.durationValue,
|
|
45
|
+
onComplete: () => { this.dispatch("hide") },
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
toggle() {
|
|
50
|
+
$(this.element).transition({
|
|
51
|
+
animation: this.animationValue,
|
|
52
|
+
duration: this.durationValue,
|
|
53
|
+
onComplete: () => { this.dispatch("toggle") },
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
stop() {
|
|
58
|
+
$(this.element).transition("stop all")
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Controller } from "@hotwired/stimulus"
|
|
2
|
+
|
|
3
|
+
// Fomantic-UI Visibility — scroll-based visibility detection.
|
|
4
|
+
// Bridges: $.fn.visibility
|
|
5
|
+
//
|
|
6
|
+
// Usage:
|
|
7
|
+
// <div data-controller="fui-visibility"
|
|
8
|
+
// data-fui-visibility-once-value="true"
|
|
9
|
+
// data-fui-visibility-type-value="image">
|
|
10
|
+
// <img data-src="/images/photo.jpg">
|
|
11
|
+
// </div>
|
|
12
|
+
//
|
|
13
|
+
export default class extends Controller {
|
|
14
|
+
static values = {
|
|
15
|
+
once: { type: Boolean, default: true },
|
|
16
|
+
continuous: { type: Boolean, default: false },
|
|
17
|
+
offset: { type: Number, default: 0 },
|
|
18
|
+
type: { type: String, default: "" },
|
|
19
|
+
throttle: { type: Number, default: 0 },
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
connect() {
|
|
23
|
+
$(this.element).visibility(this._options())
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
disconnect() {
|
|
27
|
+
$(this.element).visibility("destroy")
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
disable() { $(this.element).visibility("disable callbacks") }
|
|
31
|
+
enable() { $(this.element).visibility("enable callbacks") }
|
|
32
|
+
refresh() { $(this.element).visibility("refresh") }
|
|
33
|
+
|
|
34
|
+
// -- Private --
|
|
35
|
+
|
|
36
|
+
_options() {
|
|
37
|
+
const opts = {
|
|
38
|
+
once: this.onceValue,
|
|
39
|
+
continuous: this.continuousValue,
|
|
40
|
+
offset: this.offsetValue,
|
|
41
|
+
throttle: this.throttleValue,
|
|
42
|
+
onOnScreen: () => { this.dispatch("onScreen") },
|
|
43
|
+
onOffScreen: () => { this.dispatch("offScreen") },
|
|
44
|
+
onTopVisible: () => { this.dispatch("topVisible") },
|
|
45
|
+
onBottomVisible: () => { this.dispatch("bottomVisible") },
|
|
46
|
+
onPassing: () => { this.dispatch("passing") },
|
|
47
|
+
onTopPassed: () => { this.dispatch("topPassed") },
|
|
48
|
+
onBottomPassed: () => { this.dispatch("bottomPassed") },
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (this.typeValue) opts.type = this.typeValue
|
|
52
|
+
|
|
53
|
+
return opts
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// Fomantic-UI Stimulus Controllers (jQuery Bridge)
|
|
2
|
+
//
|
|
3
|
+
// Each controller is a thin lifecycle bridge that initializes the corresponding
|
|
4
|
+
// Fomantic-UI jQuery plugin in connect() and destroys it in disconnect().
|
|
5
|
+
// Stimulus handles the DOM lifecycle (Turbo-compatible), jQuery/Fomantic handles
|
|
6
|
+
// the actual widget behavior.
|
|
7
|
+
//
|
|
8
|
+
// Prerequisites: jQuery and the Fomantic-UI component JS files must be loaded
|
|
9
|
+
// globally (via <script> tags) before these controllers are used.
|
|
10
|
+
//
|
|
11
|
+
// Usage (in your app's JavaScript entry point):
|
|
12
|
+
//
|
|
13
|
+
// import { Application } from "@hotwired/stimulus"
|
|
14
|
+
// import { registerFuiControllers } from "ui"
|
|
15
|
+
//
|
|
16
|
+
// const application = Application.start()
|
|
17
|
+
// registerFuiControllers(application)
|
|
18
|
+
//
|
|
19
|
+
|
|
20
|
+
// Globals
|
|
21
|
+
import FuiSiteController from "ui/controllers/fui_site_controller"
|
|
22
|
+
|
|
23
|
+
// Collections
|
|
24
|
+
import FuiFormController from "ui/controllers/fui_form_controller"
|
|
25
|
+
|
|
26
|
+
// Modules
|
|
27
|
+
import FuiAccordionController from "ui/controllers/fui_accordion_controller"
|
|
28
|
+
import FuiCalendarController from "ui/controllers/fui_calendar_controller"
|
|
29
|
+
import FuiCheckboxController from "ui/controllers/fui_checkbox_controller"
|
|
30
|
+
import FuiDimmerController from "ui/controllers/fui_dimmer_controller"
|
|
31
|
+
import FuiDropdownController from "ui/controllers/fui_dropdown_controller"
|
|
32
|
+
import FuiEmbedController from "ui/controllers/fui_embed_controller"
|
|
33
|
+
import FuiFlyoutController from "ui/controllers/fui_flyout_controller"
|
|
34
|
+
import FuiModalController from "ui/controllers/fui_modal_controller"
|
|
35
|
+
import FuiNagController from "ui/controllers/fui_nag_controller"
|
|
36
|
+
import FuiPopupController from "ui/controllers/fui_popup_controller"
|
|
37
|
+
import FuiProgressController from "ui/controllers/fui_progress_controller"
|
|
38
|
+
import FuiSliderController from "ui/controllers/fui_slider_controller"
|
|
39
|
+
import FuiRatingController from "ui/controllers/fui_rating_controller"
|
|
40
|
+
import FuiSearchController from "ui/controllers/fui_search_controller"
|
|
41
|
+
import FuiShapeController from "ui/controllers/fui_shape_controller"
|
|
42
|
+
import FuiSidebarController from "ui/controllers/fui_sidebar_controller"
|
|
43
|
+
import FuiStickyController from "ui/controllers/fui_sticky_controller"
|
|
44
|
+
import FuiTabController from "ui/controllers/fui_tab_controller"
|
|
45
|
+
import FuiToastController from "ui/controllers/fui_toast_controller"
|
|
46
|
+
import FuiTransitionController from "ui/controllers/fui_transition_controller"
|
|
47
|
+
|
|
48
|
+
// Behaviors
|
|
49
|
+
import FuiApiController from "ui/controllers/fui_api_controller"
|
|
50
|
+
import FuiStateController from "ui/controllers/fui_state_controller"
|
|
51
|
+
import FuiVisibilityController from "ui/controllers/fui_visibility_controller"
|
|
52
|
+
|
|
53
|
+
const controllers = {
|
|
54
|
+
"fui-site": FuiSiteController,
|
|
55
|
+
"fui-form": FuiFormController,
|
|
56
|
+
"fui-accordion": FuiAccordionController,
|
|
57
|
+
"fui-calendar": FuiCalendarController,
|
|
58
|
+
"fui-checkbox": FuiCheckboxController,
|
|
59
|
+
"fui-dimmer": FuiDimmerController,
|
|
60
|
+
"fui-dropdown": FuiDropdownController,
|
|
61
|
+
"fui-embed": FuiEmbedController,
|
|
62
|
+
"fui-flyout": FuiFlyoutController,
|
|
63
|
+
"fui-modal": FuiModalController,
|
|
64
|
+
"fui-nag": FuiNagController,
|
|
65
|
+
"fui-popup": FuiPopupController,
|
|
66
|
+
"fui-progress": FuiProgressController,
|
|
67
|
+
"fui-slider": FuiSliderController,
|
|
68
|
+
"fui-rating": FuiRatingController,
|
|
69
|
+
"fui-search": FuiSearchController,
|
|
70
|
+
"fui-shape": FuiShapeController,
|
|
71
|
+
"fui-sidebar": FuiSidebarController,
|
|
72
|
+
"fui-sticky": FuiStickyController,
|
|
73
|
+
"fui-tab": FuiTabController,
|
|
74
|
+
"fui-toast": FuiToastController,
|
|
75
|
+
"fui-transition": FuiTransitionController,
|
|
76
|
+
"fui-api": FuiApiController,
|
|
77
|
+
"fui-state": FuiStateController,
|
|
78
|
+
"fui-visibility": FuiVisibilityController,
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export function registerFuiControllers(application) {
|
|
82
|
+
for (const [identifier, controllerClass] of Object.entries(controllers)) {
|
|
83
|
+
application.register(identifier, controllerClass)
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Also export individual controllers for selective registration
|
|
88
|
+
export {
|
|
89
|
+
FuiSiteController,
|
|
90
|
+
FuiFormController,
|
|
91
|
+
FuiAccordionController,
|
|
92
|
+
FuiCalendarController,
|
|
93
|
+
FuiCheckboxController,
|
|
94
|
+
FuiDimmerController,
|
|
95
|
+
FuiDropdownController,
|
|
96
|
+
FuiEmbedController,
|
|
97
|
+
FuiFlyoutController,
|
|
98
|
+
FuiModalController,
|
|
99
|
+
FuiNagController,
|
|
100
|
+
FuiPopupController,
|
|
101
|
+
FuiProgressController,
|
|
102
|
+
FuiSliderController,
|
|
103
|
+
FuiRatingController,
|
|
104
|
+
FuiSearchController,
|
|
105
|
+
FuiShapeController,
|
|
106
|
+
FuiSidebarController,
|
|
107
|
+
FuiStickyController,
|
|
108
|
+
FuiTabController,
|
|
109
|
+
FuiToastController,
|
|
110
|
+
FuiTransitionController,
|
|
111
|
+
FuiApiController,
|
|
112
|
+
FuiStateController,
|
|
113
|
+
FuiVisibilityController,
|
|
114
|
+
}
|