vident 1.0.0.beta1 → 1.0.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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -0
  3. data/README.md +177 -23
  4. data/lib/generators/vident/install/install_generator.rb +53 -0
  5. data/lib/generators/vident/install/templates/vident.rb +20 -0
  6. data/lib/vident/caching.rb +3 -9
  7. data/lib/vident/child_element_helper.rb +64 -0
  8. data/lib/vident/component.rb +4 -11
  9. data/lib/vident/component_attribute_resolver.rb +21 -36
  10. data/lib/vident/component_class_lists.rb +4 -3
  11. data/lib/vident/stable_id.rb +48 -17
  12. data/lib/vident/stimulus/naming.rb +19 -0
  13. data/lib/vident/stimulus/primitive.rb +38 -0
  14. data/lib/vident/stimulus.rb +31 -0
  15. data/lib/vident/stimulus_action.rb +58 -23
  16. data/lib/vident/stimulus_attribute_base.rb +27 -23
  17. data/lib/vident/stimulus_attributes.rb +56 -185
  18. data/lib/vident/stimulus_builder.rb +66 -87
  19. data/lib/vident/stimulus_class.rb +3 -9
  20. data/lib/vident/stimulus_class_collection.rb +1 -5
  21. data/lib/vident/stimulus_collection_base.rb +4 -12
  22. data/lib/vident/stimulus_component.rb +8 -7
  23. data/lib/vident/stimulus_controller.rb +10 -13
  24. data/lib/vident/stimulus_data_attribute_builder.rb +15 -74
  25. data/lib/vident/stimulus_helper.rb +4 -12
  26. data/lib/vident/stimulus_null.rb +21 -0
  27. data/lib/vident/stimulus_outlet.rb +4 -11
  28. data/lib/vident/stimulus_outlet_collection.rb +1 -5
  29. data/lib/vident/stimulus_param.rb +42 -0
  30. data/lib/vident/stimulus_param_collection.rb +11 -0
  31. data/lib/vident/stimulus_target.rb +7 -17
  32. data/lib/vident/stimulus_target_collection.rb +2 -6
  33. data/lib/vident/stimulus_value.rb +14 -44
  34. data/lib/vident/stimulus_value_collection.rb +1 -5
  35. data/lib/vident/tailwind.rb +0 -2
  36. data/lib/vident/version.rb +1 -1
  37. data/lib/vident.rb +8 -13
  38. data/skills/vident/SKILL.md +628 -0
  39. metadata +11 -2
  40. data/lib/vident/tag_helper.rb +0 -65
@@ -1,65 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Vident
4
- module TagHelper
5
- # Generate a tag with the given name and options, including stimulus data attributes
6
- def tag(
7
- tag_name,
8
- stimulus_controllers: nil,
9
- stimulus_targets: nil,
10
- stimulus_actions: nil,
11
- stimulus_outlets: nil,
12
- stimulus_values: nil,
13
- stimulus_classes: nil,
14
- stimulus_controller: nil,
15
- stimulus_target: nil,
16
- stimulus_action: nil,
17
- stimulus_outlet: nil,
18
- stimulus_value: nil,
19
- stimulus_class: nil,
20
- **options,
21
- &block
22
- )
23
- # Ensure the plural attributes are actually enumerables
24
- tag_attribute_must_be_collection!(stimulus_controllers, "stimulus_controllers")
25
- tag_attribute_must_be_collection!(stimulus_targets, "stimulus_targets")
26
- tag_attribute_must_be_collection!(stimulus_actions, "stimulus_actions")
27
- tag_attribute_must_be_collection!(stimulus_outlets, "stimulus_outlets")
28
- tag_attribute_must_be_collection!(stimulus_values, "stimulus_values")
29
- tag_attribute_must_be_collection!(stimulus_classes, "stimulus_classes")
30
-
31
- stimulus_controllers_collection = send(:stimulus_controllers, *tag_wrap_single_stimulus_attribute(stimulus_controllers, stimulus_controller))
32
- stimulus_targets_collection = send(:stimulus_targets, *tag_wrap_single_stimulus_attribute(stimulus_targets, stimulus_target))
33
- stimulus_actions_collection = send(:stimulus_actions, *tag_wrap_single_stimulus_attribute(stimulus_actions, stimulus_action))
34
- stimulus_outlets_collection = send(:stimulus_outlets, *tag_wrap_single_stimulus_attribute(stimulus_outlets, stimulus_outlet))
35
- stimulus_values_collection = send(:stimulus_values, stimulus_values || stimulus_value)
36
- stimulus_classes_collection = send(:stimulus_classes, stimulus_classes || stimulus_class)
37
-
38
- stimulus_data_attributes = StimulusDataAttributeBuilder.new(
39
- controllers: stimulus_controllers_collection,
40
- actions: stimulus_actions_collection,
41
- targets: stimulus_targets_collection,
42
- outlets: stimulus_outlets_collection,
43
- values: stimulus_values_collection,
44
- classes: stimulus_classes_collection
45
- ).build
46
- generate_tag(tag_name, stimulus_data_attributes, options, &block)
47
- end
48
-
49
- private
50
-
51
- def tag_attribute_must_be_collection!(collection, name)
52
- return unless collection
53
- raise ArgumentError, "'#{name}:' must be an enumerable. Did you mean '#{name.to_s.singularize}:'?" unless collection.is_a?(Enumerable)
54
- end
55
-
56
- def tag_wrap_single_stimulus_attribute(plural, singular)
57
- return plural if plural
58
- singular.nil? ? nil : [singular]
59
- end
60
-
61
- def generate_tag(tag_name, stimulus_data_attributes, options, &block)
62
- raise NoMethodError, "Not implemented"
63
- end
64
- end
65
- end