stimeo-ui 0.1.0.pre.alpha.1
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/LICENSE +21 -0
- data/README.md +72 -0
- data/dist/controllers/accordion_controller.js +76 -0
- data/dist/controllers/announcer_controller.js +184 -0
- data/dist/controllers/aspect_ratio_controller.js +36 -0
- data/dist/controllers/auto_submit_controller.js +147 -0
- data/dist/controllers/avatar_controller.js +66 -0
- data/dist/controllers/breadcrumb_controller.js +123 -0
- data/dist/controllers/bulk_select_controller.js +104 -0
- data/dist/controllers/calendar_controller.js +394 -0
- data/dist/controllers/character_counter_controller.js +179 -0
- data/dist/controllers/checkbox_controller.js +73 -0
- data/dist/controllers/combobox_controller.js +186 -0
- data/dist/controllers/command_palette_controller.js +381 -0
- data/dist/controllers/conditional_fields_controller.js +112 -0
- data/dist/controllers/confirm_controller.js +276 -0
- data/dist/controllers/context_menu_controller.js +112 -0
- data/dist/controllers/countdown_controller.js +202 -0
- data/dist/controllers/dialog_controller.js +207 -0
- data/dist/controllers/direct_upload_controller.js +212 -0
- data/dist/controllers/dirty_form_controller.js +128 -0
- data/dist/controllers/dropdown_controller.js +66 -0
- data/dist/controllers/empty_state_controller.js +67 -0
- data/dist/controllers/flash_controller.js +221 -0
- data/dist/controllers/focus_controller.js +216 -0
- data/dist/controllers/form_field_controller.js +154 -0
- data/dist/controllers/form_validation_controller.js +202 -0
- data/dist/controllers/frame_loading_controller.js +177 -0
- data/dist/controllers/highlight_controller.js +107 -0
- data/dist/controllers/hover_card_controller.js +165 -0
- data/dist/controllers/idle_controller.js +141 -0
- data/dist/controllers/input_mask_controller.js +166 -0
- data/dist/controllers/lazy_frame_controller.js +68 -0
- data/dist/controllers/listbox_controller.js +256 -0
- data/dist/controllers/local_time_controller.js +81 -0
- data/dist/controllers/menu_controller.js +134 -0
- data/dist/controllers/meter_controller.js +96 -0
- data/dist/controllers/nested_form_controller.js +131 -0
- data/dist/controllers/network_status_controller.js +126 -0
- data/dist/controllers/number_input_controller.js +306 -0
- data/dist/controllers/otp_controller.js +201 -0
- data/dist/controllers/overflow_indicator_controller.js +169 -0
- data/dist/controllers/overflow_menu_controller.js +274 -0
- data/dist/controllers/pagination_controller.js +89 -0
- data/dist/controllers/password_strength_controller.js +175 -0
- data/dist/controllers/persist_controller.js +259 -0
- data/dist/controllers/popover_controller.js +94 -0
- data/dist/controllers/portal_controller.js +63 -0
- data/dist/controllers/preview_guard_controller.js +69 -0
- data/dist/controllers/progress_controller.js +93 -0
- data/dist/controllers/radio_group_controller.js +128 -0
- data/dist/controllers/rating_controller.js +179 -0
- data/dist/controllers/relative_time_controller.js +129 -0
- data/dist/controllers/reset_before_cache_controller.js +62 -0
- data/dist/controllers/resizable_controller.js +163 -0
- data/dist/controllers/roving_controller.js +116 -0
- data/dist/controllers/scroll_area_controller.js +183 -0
- data/dist/controllers/scroll_visibility_controller.js +103 -0
- data/dist/controllers/scrollspy_controller.js +171 -0
- data/dist/controllers/skeleton_controller.js +125 -0
- data/dist/controllers/slider_controller.js +109 -0
- data/dist/controllers/spinner_controller.js +164 -0
- data/dist/controllers/step_indicator_controller.js +55 -0
- data/dist/controllers/stepper_controller.js +78 -0
- data/dist/controllers/stick_to_bottom_controller.js +100 -0
- data/dist/controllers/sticky_observer_controller.js +53 -0
- data/dist/controllers/submit_once_controller.js +206 -0
- data/dist/controllers/switch_controller.js +50 -0
- data/dist/controllers/tabs_controller.js +63 -0
- data/dist/controllers/textarea_autosize_controller.js +72 -0
- data/dist/controllers/theme_controller.js +154 -0
- data/dist/controllers/toast_controller.js +310 -0
- data/dist/controllers/toggle_group_controller.js +130 -0
- data/dist/controllers/toolbar_controller.js +113 -0
- data/dist/controllers/tooltip_controller.js +165 -0
- data/dist/controllers/transition_controller.js +203 -0
- data/dist/index.js +12241 -0
- data/dist/positioning/index.js +145 -0
- data/lib/generators/stimeo/install/install_generator.rb +114 -0
- data/lib/generators/stimeo/install/templates/stimeo.js +12 -0
- data/lib/stimeo/ui/version.rb +10 -0
- data/lib/stimeo/ui.rb +19 -0
- data/lib/stimeo-ui.rb +4 -0
- metadata +152 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { computePosition, autoUpdate, offset, flip, shift } from '@floating-ui/dom';
|
|
2
|
+
import { Controller } from '@hotwired/stimulus';
|
|
3
|
+
|
|
4
|
+
// src/positioning/index.ts
|
|
5
|
+
var AnchoredController = class extends Controller {
|
|
6
|
+
static targets = ["anchor", "floating"];
|
|
7
|
+
static values = {
|
|
8
|
+
placement: { type: String, default: "bottom" },
|
|
9
|
+
offset: { type: Number, default: 0 },
|
|
10
|
+
flip: { type: Boolean, default: true },
|
|
11
|
+
shift: { type: Boolean, default: true },
|
|
12
|
+
padding: { type: Number, default: 0 },
|
|
13
|
+
strategy: { type: String, default: "absolute" },
|
|
14
|
+
active: { type: Boolean, default: true }
|
|
15
|
+
};
|
|
16
|
+
static events = ["position"];
|
|
17
|
+
/** `autoUpdate` cleanup while tracking; `null` when detached. */
|
|
18
|
+
#stop = null;
|
|
19
|
+
/** True between connect and disconnect (Stimulus may fire value callbacks before connect). */
|
|
20
|
+
#connected = false;
|
|
21
|
+
/** Serialized options of the live observer, or `null` when detached — see {@link #sync}. */
|
|
22
|
+
#appliedKey = null;
|
|
23
|
+
connect() {
|
|
24
|
+
this.#connected = true;
|
|
25
|
+
this.#sync();
|
|
26
|
+
}
|
|
27
|
+
disconnect() {
|
|
28
|
+
this.#connected = false;
|
|
29
|
+
this.#sync();
|
|
30
|
+
}
|
|
31
|
+
// Every value change (active or an option) re-syncs. `#sync` is idempotent and
|
|
32
|
+
// order-independent, so no Value has to be declared in a particular position.
|
|
33
|
+
activeValueChanged() {
|
|
34
|
+
this.#sync();
|
|
35
|
+
}
|
|
36
|
+
placementValueChanged() {
|
|
37
|
+
this.#sync();
|
|
38
|
+
}
|
|
39
|
+
offsetValueChanged() {
|
|
40
|
+
this.#sync();
|
|
41
|
+
}
|
|
42
|
+
flipValueChanged() {
|
|
43
|
+
this.#sync();
|
|
44
|
+
}
|
|
45
|
+
shiftValueChanged() {
|
|
46
|
+
this.#sync();
|
|
47
|
+
}
|
|
48
|
+
paddingValueChanged() {
|
|
49
|
+
this.#sync();
|
|
50
|
+
}
|
|
51
|
+
strategyValueChanged() {
|
|
52
|
+
this.#sync();
|
|
53
|
+
}
|
|
54
|
+
/** Current Values mapped to the positioning engine's options. */
|
|
55
|
+
get #options() {
|
|
56
|
+
return {
|
|
57
|
+
placement: this.placementValue,
|
|
58
|
+
offset: this.offsetValue,
|
|
59
|
+
flip: this.flipValue,
|
|
60
|
+
shift: this.shiftValue,
|
|
61
|
+
padding: this.paddingValue,
|
|
62
|
+
// Narrow the free-form Value to the engine's union; anything but "fixed"
|
|
63
|
+
// falls back to the default "absolute".
|
|
64
|
+
strategy: this.strategyValue === "fixed" ? "fixed" : "absolute"
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Reconciles the live observer with the desired state — track iff connected,
|
|
69
|
+
* `active`, and both targets exist — re-attaching only when that state or the
|
|
70
|
+
* options actually changed. Stimulus fires the value-changed callbacks on
|
|
71
|
+
* connect in declaration order and may run them before or after `connect()`;
|
|
72
|
+
* keying on the applied options collapses that whole burst (in any order) to a
|
|
73
|
+
* single attach, while an option change at runtime re-attaches exactly once. So
|
|
74
|
+
* correctness never depends on `active` being declared last.
|
|
75
|
+
*/
|
|
76
|
+
#sync() {
|
|
77
|
+
const shouldTrack = this.#connected && this.activeValue && this.hasAnchorTarget && this.hasFloatingTarget;
|
|
78
|
+
const key = shouldTrack ? JSON.stringify(this.#options) : null;
|
|
79
|
+
if (key === this.#appliedKey) return;
|
|
80
|
+
this.#detach();
|
|
81
|
+
this.#appliedKey = key;
|
|
82
|
+
if (shouldTrack) this.#attach();
|
|
83
|
+
}
|
|
84
|
+
#attach() {
|
|
85
|
+
this.#stop = attachPositioning(
|
|
86
|
+
this.anchorTarget,
|
|
87
|
+
this.floatingTarget,
|
|
88
|
+
this.#options,
|
|
89
|
+
(result) => this.#onComputed(result)
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
#detach() {
|
|
93
|
+
this.#stop?.();
|
|
94
|
+
this.#stop = null;
|
|
95
|
+
}
|
|
96
|
+
/** Reflects the resolved side onto the CSS hook and announces the placement. */
|
|
97
|
+
#onComputed(result) {
|
|
98
|
+
this.floatingTarget.setAttribute("data-anchored-placement", result.placement);
|
|
99
|
+
this.dispatch("position", {
|
|
100
|
+
detail: { placement: result.placement, x: result.x, y: result.y }
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
// src/positioning/index.ts
|
|
106
|
+
function buildMiddleware(options) {
|
|
107
|
+
const padding = options.padding ?? 0;
|
|
108
|
+
const middleware = [];
|
|
109
|
+
if (options.offset) middleware.push(offset(options.offset));
|
|
110
|
+
if (options.flip !== false) middleware.push(flip({ padding }));
|
|
111
|
+
if (options.shift !== false) middleware.push(shift({ padding }));
|
|
112
|
+
return middleware;
|
|
113
|
+
}
|
|
114
|
+
async function position(anchor, floating, options = {}) {
|
|
115
|
+
const strategy = options.strategy ?? "absolute";
|
|
116
|
+
const config = {
|
|
117
|
+
placement: options.placement ?? "bottom",
|
|
118
|
+
middleware: buildMiddleware(options),
|
|
119
|
+
strategy
|
|
120
|
+
};
|
|
121
|
+
const { x, y, placement } = await computePosition(anchor, floating, config);
|
|
122
|
+
Object.assign(floating.style, {
|
|
123
|
+
position: strategy,
|
|
124
|
+
left: `${x}px`,
|
|
125
|
+
top: `${y}px`
|
|
126
|
+
});
|
|
127
|
+
return { x, y, placement };
|
|
128
|
+
}
|
|
129
|
+
function attachPositioning(anchor, floating, options = {}, onComputed) {
|
|
130
|
+
return autoUpdate(anchor, floating, () => {
|
|
131
|
+
void position(anchor, floating, options).then((result) => onComputed?.(result));
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
var positioningControllers = {
|
|
135
|
+
"stimeo--anchored": AnchoredController
|
|
136
|
+
};
|
|
137
|
+
function registerPositioning(application) {
|
|
138
|
+
for (const [identifier, controller] of Object.entries(positioningControllers)) {
|
|
139
|
+
application.register(identifier, controller);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export { AnchoredController, attachPositioning, position, positioningControllers, registerPositioning };
|
|
144
|
+
//# sourceMappingURL=index.js.map
|
|
145
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "fileutils"
|
|
4
|
+
require "pathname"
|
|
5
|
+
require "rails/generators/base"
|
|
6
|
+
require "stimeo/ui"
|
|
7
|
+
|
|
8
|
+
module Stimeo
|
|
9
|
+
module Generators
|
|
10
|
+
# `bin/rails generate stimeo:install`
|
|
11
|
+
#
|
|
12
|
+
# Sets up an importmap-rails app to use Stimeo UI without npm:
|
|
13
|
+
# 1. vendors the gem's prebuilt JS into vendor/javascript/stimeo/
|
|
14
|
+
# 2. pins "stimeo-ui" in config/importmap.rb
|
|
15
|
+
# 3. registers every stimeo--* controller with the app's Stimulus
|
|
16
|
+
# application (app/javascript/controllers/stimeo.js)
|
|
17
|
+
#
|
|
18
|
+
# Re-running is safe: the vendor copy is refreshed in place, while pins
|
|
19
|
+
# and imports are only appended when missing — so after a gem update you
|
|
20
|
+
# just run the generator again to pick up the new JS.
|
|
21
|
+
class InstallGenerator < Rails::Generators::Base
|
|
22
|
+
source_root File.expand_path("templates", __dir__)
|
|
23
|
+
|
|
24
|
+
VENDOR_DIR = "vendor/javascript/stimeo"
|
|
25
|
+
|
|
26
|
+
def copy_dist
|
|
27
|
+
source = Pathname.new(Stimeo::UI.dist_dir)
|
|
28
|
+
vendor = destination_pathname.join(VENDOR_DIR)
|
|
29
|
+
# Refresh: wipe the vendored copy first so files removed/renamed in a
|
|
30
|
+
# newer gem release don't linger here after re-running the generator.
|
|
31
|
+
FileUtils.rm_rf(vendor)
|
|
32
|
+
Dir[source.join("**/*.js").to_s].each do |file|
|
|
33
|
+
relative = Pathname.new(file).relative_path_from(source)
|
|
34
|
+
# The inspector CLI is a Node tool, not browser code — keep it out
|
|
35
|
+
# of the asset path (use the npm package for `stimeo check`).
|
|
36
|
+
next if relative.to_s.start_with?("inspector/")
|
|
37
|
+
|
|
38
|
+
target = vendor.join(relative)
|
|
39
|
+
FileUtils.mkdir_p(target.dirname)
|
|
40
|
+
FileUtils.cp(file, target)
|
|
41
|
+
end
|
|
42
|
+
say_status :vendor, "#{VENDOR_DIR} (prebuilt JS from the stimeo-ui gem)"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def pin_importmap
|
|
46
|
+
importmap = destination_pathname.join("config/importmap.rb")
|
|
47
|
+
unless importmap.exist?
|
|
48
|
+
say_status :skip, "config/importmap.rb not found — this generator targets " \
|
|
49
|
+
"importmap-rails; with a JS bundler use `npm install stimeo-ui` " \
|
|
50
|
+
"instead (see the README)", :yellow
|
|
51
|
+
return
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
if importmap.read.include?('pin "stimeo-ui"')
|
|
55
|
+
say_status :identical, "config/importmap.rb (stimeo-ui already pinned)", :blue
|
|
56
|
+
else
|
|
57
|
+
append_to_file "config/importmap.rb", <<~RUBY
|
|
58
|
+
|
|
59
|
+
# Stimeo UI (vendored by `rails g stimeo:install`)
|
|
60
|
+
pin "stimeo-ui", to: "stimeo/index.js"
|
|
61
|
+
# Opt-in positioning module — also pin @floating-ui/dom if you enable it:
|
|
62
|
+
# pin "stimeo-ui/positioning", to: "stimeo/positioning/index.js"
|
|
63
|
+
RUBY
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def register_controllers
|
|
68
|
+
# Only create it the first time. The file is "safe to edit"; re-running
|
|
69
|
+
# the generator must not clobber a user's customised registration.
|
|
70
|
+
registration = destination_pathname.join("app/javascript/controllers/stimeo.js")
|
|
71
|
+
if registration.exist?
|
|
72
|
+
say_status :identical, "app/javascript/controllers/stimeo.js (kept your edits)", :blue
|
|
73
|
+
else
|
|
74
|
+
copy_file "stimeo.js", "app/javascript/controllers/stimeo.js"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
index = destination_pathname.join("app/javascript/controllers/index.js")
|
|
78
|
+
if !index.exist?
|
|
79
|
+
say_status :action_required, 'add `import "controllers/stimeo"` wherever your ' \
|
|
80
|
+
"Stimulus application boots", :yellow
|
|
81
|
+
elsif index.read.include?("controllers/stimeo")
|
|
82
|
+
say_status :identical, "controllers/index.js (already imports controllers/stimeo)", :blue
|
|
83
|
+
else
|
|
84
|
+
append_to_file "app/javascript/controllers/index.js", <<~JS
|
|
85
|
+
import "controllers/stimeo"
|
|
86
|
+
JS
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def show_next_steps
|
|
91
|
+
say <<~MSG
|
|
92
|
+
|
|
93
|
+
Stimeo UI is installed. Drive components from HTML alone, e.g.:
|
|
94
|
+
|
|
95
|
+
<div data-controller="stimeo--dropdown">
|
|
96
|
+
<button data-stimeo--dropdown-target="trigger"
|
|
97
|
+
data-action="click->stimeo--dropdown#toggle">Menu</button>
|
|
98
|
+
<div data-stimeo--dropdown-target="menu" hidden>...</div>
|
|
99
|
+
</div>
|
|
100
|
+
|
|
101
|
+
Docs: https://github.com/taiyaky/stimeo-ui
|
|
102
|
+
MSG
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
private
|
|
106
|
+
|
|
107
|
+
# Generator actions (copy_file/append_to_file) already resolve against
|
|
108
|
+
# destination_root; this helper is for the direct file checks above.
|
|
109
|
+
def destination_pathname
|
|
110
|
+
Pathname.new(destination_root)
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Registers every stimeo--* controller with the app's Stimulus application.
|
|
2
|
+
// Generated by `rails g stimeo:install`. Safe to edit.
|
|
3
|
+
//
|
|
4
|
+
// To cherry-pick instead of registering all controllers, import them
|
|
5
|
+
// individually from "stimeo-ui/controllers/<name>" and register under your own
|
|
6
|
+
// identifiers. Note: with a JS bundler this works as-is; with importmap-rails
|
|
7
|
+
// each "stimeo-ui/controllers/<name>" needs its own pin (this generator only
|
|
8
|
+
// pins the "stimeo-ui" entrypoint), so add those pins to config/importmap.rb.
|
|
9
|
+
import { application } from "controllers/application";
|
|
10
|
+
import { registerStimeo } from "stimeo-ui";
|
|
11
|
+
|
|
12
|
+
registerStimeo(application);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Stimeo
|
|
4
|
+
module UI
|
|
5
|
+
# Kept in lockstep with package.json: npm `0.1.0-alpha.1` ⇔ gem
|
|
6
|
+
# `0.1.0.pre.alpha.1` (RubyGems forbids dashes). Bump both together —
|
|
7
|
+
# see RELEASING.md for the synchronized release procedure.
|
|
8
|
+
VERSION = "0.1.0.pre.alpha.1"
|
|
9
|
+
end
|
|
10
|
+
end
|
data/lib/stimeo/ui.rb
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "ui/version"
|
|
4
|
+
|
|
5
|
+
module Stimeo
|
|
6
|
+
# The stimeo-ui gem is distribution only: it bundles the prebuilt JS
|
|
7
|
+
# (dist/, identical to the npm package) and the `stimeo:install`
|
|
8
|
+
# generator that vendors it into a Rails app. All behavior lives in
|
|
9
|
+
# the JS; there is no Ruby runtime component.
|
|
10
|
+
module UI
|
|
11
|
+
# Gem root — inside the packaged gem, dist/ sits alongside lib/.
|
|
12
|
+
ROOT = File.expand_path("../..", __dir__)
|
|
13
|
+
|
|
14
|
+
# The prebuilt JS payload shipped inside the gem.
|
|
15
|
+
def self.dist_dir
|
|
16
|
+
File.join(ROOT, "dist")
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
data/lib/stimeo-ui.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: stimeo-ui
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0.pre.alpha.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Stimeo Labs
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2026-06-20 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: railties
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '7.0'
|
|
20
|
+
- - "<"
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: '9'
|
|
23
|
+
type: :runtime
|
|
24
|
+
prerelease: false
|
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
+
requirements:
|
|
27
|
+
- - ">="
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '7.0'
|
|
30
|
+
- - "<"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '9'
|
|
33
|
+
description: 'Behavior-only, accessible UI primitives for Rails: WAI-ARIA state, keyboard
|
|
34
|
+
interaction, focus management and Turbo resilience as data-attribute-driven Stimulus
|
|
35
|
+
controllers, with no CSS. Ships the prebuilt stimeo-ui JS and a `stimeo:install`
|
|
36
|
+
generator that vendors it into an importmap-rails app.'
|
|
37
|
+
email:
|
|
38
|
+
executables: []
|
|
39
|
+
extensions: []
|
|
40
|
+
extra_rdoc_files: []
|
|
41
|
+
files:
|
|
42
|
+
- LICENSE
|
|
43
|
+
- README.md
|
|
44
|
+
- dist/controllers/accordion_controller.js
|
|
45
|
+
- dist/controllers/announcer_controller.js
|
|
46
|
+
- dist/controllers/aspect_ratio_controller.js
|
|
47
|
+
- dist/controllers/auto_submit_controller.js
|
|
48
|
+
- dist/controllers/avatar_controller.js
|
|
49
|
+
- dist/controllers/breadcrumb_controller.js
|
|
50
|
+
- dist/controllers/bulk_select_controller.js
|
|
51
|
+
- dist/controllers/calendar_controller.js
|
|
52
|
+
- dist/controllers/character_counter_controller.js
|
|
53
|
+
- dist/controllers/checkbox_controller.js
|
|
54
|
+
- dist/controllers/combobox_controller.js
|
|
55
|
+
- dist/controllers/command_palette_controller.js
|
|
56
|
+
- dist/controllers/conditional_fields_controller.js
|
|
57
|
+
- dist/controllers/confirm_controller.js
|
|
58
|
+
- dist/controllers/context_menu_controller.js
|
|
59
|
+
- dist/controllers/countdown_controller.js
|
|
60
|
+
- dist/controllers/dialog_controller.js
|
|
61
|
+
- dist/controllers/direct_upload_controller.js
|
|
62
|
+
- dist/controllers/dirty_form_controller.js
|
|
63
|
+
- dist/controllers/dropdown_controller.js
|
|
64
|
+
- dist/controllers/empty_state_controller.js
|
|
65
|
+
- dist/controllers/flash_controller.js
|
|
66
|
+
- dist/controllers/focus_controller.js
|
|
67
|
+
- dist/controllers/form_field_controller.js
|
|
68
|
+
- dist/controllers/form_validation_controller.js
|
|
69
|
+
- dist/controllers/frame_loading_controller.js
|
|
70
|
+
- dist/controllers/highlight_controller.js
|
|
71
|
+
- dist/controllers/hover_card_controller.js
|
|
72
|
+
- dist/controllers/idle_controller.js
|
|
73
|
+
- dist/controllers/input_mask_controller.js
|
|
74
|
+
- dist/controllers/lazy_frame_controller.js
|
|
75
|
+
- dist/controllers/listbox_controller.js
|
|
76
|
+
- dist/controllers/local_time_controller.js
|
|
77
|
+
- dist/controllers/menu_controller.js
|
|
78
|
+
- dist/controllers/meter_controller.js
|
|
79
|
+
- dist/controllers/nested_form_controller.js
|
|
80
|
+
- dist/controllers/network_status_controller.js
|
|
81
|
+
- dist/controllers/number_input_controller.js
|
|
82
|
+
- dist/controllers/otp_controller.js
|
|
83
|
+
- dist/controllers/overflow_indicator_controller.js
|
|
84
|
+
- dist/controllers/overflow_menu_controller.js
|
|
85
|
+
- dist/controllers/pagination_controller.js
|
|
86
|
+
- dist/controllers/password_strength_controller.js
|
|
87
|
+
- dist/controllers/persist_controller.js
|
|
88
|
+
- dist/controllers/popover_controller.js
|
|
89
|
+
- dist/controllers/portal_controller.js
|
|
90
|
+
- dist/controllers/preview_guard_controller.js
|
|
91
|
+
- dist/controllers/progress_controller.js
|
|
92
|
+
- dist/controllers/radio_group_controller.js
|
|
93
|
+
- dist/controllers/rating_controller.js
|
|
94
|
+
- dist/controllers/relative_time_controller.js
|
|
95
|
+
- dist/controllers/reset_before_cache_controller.js
|
|
96
|
+
- dist/controllers/resizable_controller.js
|
|
97
|
+
- dist/controllers/roving_controller.js
|
|
98
|
+
- dist/controllers/scroll_area_controller.js
|
|
99
|
+
- dist/controllers/scroll_visibility_controller.js
|
|
100
|
+
- dist/controllers/scrollspy_controller.js
|
|
101
|
+
- dist/controllers/skeleton_controller.js
|
|
102
|
+
- dist/controllers/slider_controller.js
|
|
103
|
+
- dist/controllers/spinner_controller.js
|
|
104
|
+
- dist/controllers/step_indicator_controller.js
|
|
105
|
+
- dist/controllers/stepper_controller.js
|
|
106
|
+
- dist/controllers/stick_to_bottom_controller.js
|
|
107
|
+
- dist/controllers/sticky_observer_controller.js
|
|
108
|
+
- dist/controllers/submit_once_controller.js
|
|
109
|
+
- dist/controllers/switch_controller.js
|
|
110
|
+
- dist/controllers/tabs_controller.js
|
|
111
|
+
- dist/controllers/textarea_autosize_controller.js
|
|
112
|
+
- dist/controllers/theme_controller.js
|
|
113
|
+
- dist/controllers/toast_controller.js
|
|
114
|
+
- dist/controllers/toggle_group_controller.js
|
|
115
|
+
- dist/controllers/toolbar_controller.js
|
|
116
|
+
- dist/controllers/tooltip_controller.js
|
|
117
|
+
- dist/controllers/transition_controller.js
|
|
118
|
+
- dist/index.js
|
|
119
|
+
- dist/positioning/index.js
|
|
120
|
+
- lib/generators/stimeo/install/install_generator.rb
|
|
121
|
+
- lib/generators/stimeo/install/templates/stimeo.js
|
|
122
|
+
- lib/stimeo-ui.rb
|
|
123
|
+
- lib/stimeo/ui.rb
|
|
124
|
+
- lib/stimeo/ui/version.rb
|
|
125
|
+
homepage: https://github.com/taiyaky/stimeo-ui
|
|
126
|
+
licenses:
|
|
127
|
+
- MIT
|
|
128
|
+
metadata:
|
|
129
|
+
source_code_uri: https://github.com/taiyaky/stimeo-ui
|
|
130
|
+
bug_tracker_uri: https://github.com/taiyaky/stimeo-ui/issues
|
|
131
|
+
changelog_uri: https://github.com/taiyaky/stimeo-ui/releases
|
|
132
|
+
rubygems_mfa_required: 'true'
|
|
133
|
+
post_install_message:
|
|
134
|
+
rdoc_options: []
|
|
135
|
+
require_paths:
|
|
136
|
+
- lib
|
|
137
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
138
|
+
requirements:
|
|
139
|
+
- - ">="
|
|
140
|
+
- !ruby/object:Gem::Version
|
|
141
|
+
version: '3.1'
|
|
142
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
|
+
requirements:
|
|
144
|
+
- - ">="
|
|
145
|
+
- !ruby/object:Gem::Version
|
|
146
|
+
version: '0'
|
|
147
|
+
requirements: []
|
|
148
|
+
rubygems_version: 3.5.22
|
|
149
|
+
signing_key:
|
|
150
|
+
specification_version: 4
|
|
151
|
+
summary: Headless Stimulus UI framework for Ruby on Rails.
|
|
152
|
+
test_files: []
|