ariadne_view_components 0.0.50-aarch64-linux → 0.0.52-aarch64-linux

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 (24) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/app/assets/builds/ariadne_view_components.css +21 -0
  4. data/app/assets/javascripts/ariadne_view_components.js +1 -1
  5. data/app/assets/javascripts/ariadne_view_components.js.map +1 -1
  6. data/app/assets/javascripts/components/ariadne/options_controller/options_controller.d.ts +2 -3
  7. data/app/assets/javascripts/components/ariadne/synced_boolean_attributes_controller/synced_boolean_attributes_controller.d.ts +1 -0
  8. data/app/components/ariadne/action_card_component.html.erb +4 -2
  9. data/app/components/ariadne/action_card_component.rb +52 -9
  10. data/app/components/ariadne/combobox_component.rb +1 -1
  11. data/app/components/ariadne/options_controller/options_controller.d.ts +2 -3
  12. data/app/components/ariadne/options_controller/options_controller.js +13 -27
  13. data/app/components/ariadne/options_controller/options_controller.ts +12 -30
  14. data/app/components/ariadne/string_match_controller/string_match_controller.ts +1 -0
  15. data/app/components/ariadne/synced_boolean_attributes_controller/synced_boolean_attributes_controller.d.ts +1 -0
  16. data/app/components/ariadne/synced_boolean_attributes_controller/synced_boolean_attributes_controller.js +20 -0
  17. data/app/components/ariadne/synced_boolean_attributes_controller/synced_boolean_attributes_controller.ts +23 -0
  18. data/app/lib/ariadne/fetch_or_fallback_helper.rb +2 -2
  19. data/lib/ariadne/view_components/linters/autocorrectable.rb +1 -1
  20. data/lib/ariadne/view_components/linters/base_linter.rb +2 -2
  21. data/lib/ariadne/view_components/version.rb +1 -1
  22. data/lib/rubocop/cop/ariadne/base_cop.rb +1 -1
  23. data/static/constants.json +18 -3
  24. metadata +2 -2
@@ -30,10 +30,9 @@ export default class OptionsController extends SyncedBooleanAttributesController
30
30
  activeOptionsValue: TActiveOptions;
31
31
  readonly isMultiValue: boolean;
32
32
  readonly toggleableValue: boolean;
33
- optionTargetLookup: Map<Element, TOptionKey>;
34
- connect(): void;
35
33
  select(event: Event, updateTo?: TOutletChangeData<TActiveOptions>): void;
36
- getValueForElement(element: Element): boolean | null;
34
+ optionTargetConnected(element: Element): void;
35
+ getValueForElement(element: Element): boolean;
37
36
  getState(): TActiveOptions;
38
37
  outletUpdate: (event: Event, updateTo?: TOutletChangeData<TActiveOptions>) => void;
39
38
  }
@@ -41,4 +41,5 @@ export default class SyncedBooleanAttributesController<T> extends OutletManagerC
41
41
  updateAttributesForElement(element: Element, value: boolean): void;
42
42
  syncElementAttributes(): void;
43
43
  validateAttrChange(dispatchEvent: TStimulusDispatchEvent<TSyncAttrDetail>): void;
44
+ doesElementHaveOnAttrs(element: Element): boolean;
44
45
  }
@@ -1,6 +1,8 @@
1
1
  <%= render Ariadne::BaseComponent.new(tag: @tag, classes: @classes, attributes: @attributes) do |component| %>
2
- <%= icon %>
3
- <%= title %>
2
+ <%= render Ariadne::LinkComponent.new(tag: @link_tag, href: @href, actionable: @actionable, classes: @link_classes, attributes: @link_attributes) do %>
3
+ <%= icon %>
4
+ <%= title %>
5
+ <% end %>
4
6
  <% if actions? %>
5
7
  <div class="<%= @actions_wrapper_classes %>">
6
8
  <% actions.each do |action| %>
@@ -1,27 +1,61 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ariadne
4
- # Add a general description of component here
5
- # Add additional usage considerations or best practices that may aid the user to use the component correctly.
6
- # @accessibility Add any accessibility considerations
4
+ # Card of anchor tags (most likely) that are used to navigate around a similar idea
7
5
  class ActionCardComponent < Ariadne::Component
8
6
  DEFAULT_TAG = :div
7
+ DEFAULT_TITLE_TAG = :h3
8
+ DEFAULT_ICON_TAG = :svg
9
+ DEFAULT_ACTION_TAG = :a
9
10
  TAG_OPTIONS = [DEFAULT_TAG].freeze
10
11
 
11
12
  DEFAULT_CLASSES = {
12
- wrapper: "ariadne-w-fit ariadne-flex ariadne-flex-col ariadne-items-center",
13
- actions_wrapper: "ariadne-flex",
13
+ wrapper: "ariadne-overflow-hidden ariadne-w-96 ariadne-rounded-lg ariadne-mr-4 [&:last]:ariadne-mr-0",
14
+ actions_wrapper: "ariadne-flex ariadne-w-full",
15
+ icon: "",
16
+ link: "ariadne-flex ariadne-flex-col ariadne-items-center",
17
+ title: "ariadne-text-center ariadne-mb-4 ariadne-text-xl ariadne-font-bold",
18
+ action: "ariadne-w-full ariadne-flex ariadne-items-center ariadne-justify-center ariadne-py-6 ariadne-text-sm",
14
19
  }
15
20
 
16
21
  DEFAULT_ATTRIBUTES = {
17
22
  wrapper: {},
23
+ link: {},
24
+ icon: {},
25
+ title: {},
26
+ action: {},
18
27
  }
19
28
 
20
- renders_one :icon, Ariadne::HeroiconComponent
29
+ renders_one :icon, lambda { |tag: DEFAULT_ICON_TAG, icon: :inbox, size: :lg, variant: HeroiconsHelper::Icon::VARIANT_OUTLINE, classes: "", attributes: {}, text_classes: "", text_attributes: {}|
30
+ Ariadne::HeroiconComponent.new(
31
+ tag: tag,
32
+ size: size,
33
+ variant: variant,
34
+ classes: merge_class_names(DEFAULT_CLASSES[:icon], classes),
35
+ attributes: DEFAULT_ATTRIBUTES[:icon].merge(attributes),
36
+ text_classes: text_classes,
37
+ text_attributes: text_attributes,
38
+ icon: icon,
39
+ )
40
+ }
21
41
 
22
- renders_one :title, Ariadne::HeadingComponent
42
+ renders_one :title, lambda { |tag: DEFAULT_TITLE_TAG, classes: "", attributes: {}|
43
+ Ariadne::HeadingComponent.new(
44
+ tag: tag,
45
+ classes: merge_class_names(DEFAULT_CLASSES[:title], classes),
46
+ attributes: DEFAULT_ATTRIBUTES[:title].merge(attributes),
47
+ )
48
+ }
23
49
 
24
- renders_many :actions, Ariadne::ButtonComponent
50
+ renders_many :actions, lambda { |tag: DEFAULT_ACTION_TAG, href:, actionable: false, classes: "", attributes: {}|
51
+ Ariadne::LinkComponent.new(
52
+ tag: tag,
53
+ href: href,
54
+ actionable: actionable,
55
+ classes: merge_class_names(DEFAULT_CLASSES[:action], classes),
56
+ attributes: DEFAULT_ATTRIBUTES[:action].merge(attributes),
57
+ )
58
+ }
25
59
 
26
60
  # @example Default
27
61
  #
@@ -32,14 +66,23 @@ module Ariadne
32
66
  # @param attributes [Hash] <%= link_to_attributes_docs %>
33
67
  def initialize(
34
68
  tag: DEFAULT_TAG,
69
+ href:,
35
70
  classes: "",
36
71
  attributes: {},
37
- actions_wrapper_classes: ""
72
+ actions_wrapper_classes: "",
73
+ actionable: false,
74
+ link_classes: "",
75
+ link_attributes: {}
38
76
  )
39
77
  @tag = check_incoming_tag(DEFAULT_TAG, tag)
78
+ @href = href
40
79
  @classes = merge_class_names(DEFAULT_CLASSES[:wrapper], classes)
41
80
  @attributes = DEFAULT_ATTRIBUTES[:wrapper].merge(attributes)
42
81
  @actions_wrapper_classes = merge_class_names(DEFAULT_CLASSES[:actions_wrapper], actions_wrapper_classes)
82
+
83
+ @link_classes = merge_class_names(DEFAULT_CLASSES[:link], link_classes)
84
+ @link_attributes = DEFAULT_ATTRIBUTES[:link].merge(link_attributes)
85
+ @actionable = actionable
43
86
  end
44
87
  end
45
88
  end
@@ -59,7 +59,7 @@ module Ariadne
59
59
  "data-options-toggleable-value": toggleable_options,
60
60
  "data-toggleable-close-on-outside-click-value": close_on_outside_click,
61
61
  "data-toggleable-state-value": initially_open,
62
-
62
+ "aria-multiselectable": !single_selection,
63
63
  })
64
64
  .merge(attributes)
65
65
 
@@ -30,10 +30,9 @@ export default class OptionsController extends SyncedBooleanAttributesController
30
30
  activeOptionsValue: TActiveOptions;
31
31
  readonly isMultiValue: boolean;
32
32
  readonly toggleableValue: boolean;
33
- optionTargetLookup: Map<Element, TOptionKey>;
34
- connect(): void;
35
33
  select(event: Event, updateTo?: TOutletChangeData<TActiveOptions>): void;
36
- getValueForElement(element: Element): boolean | null;
34
+ optionTargetConnected(element: Element): void;
35
+ getValueForElement(element: Element): boolean;
37
36
  getState(): TActiveOptions;
38
37
  outletUpdate: (event: Event, updateTo?: TOutletChangeData<TActiveOptions>) => void;
39
38
  }
@@ -3,19 +3,14 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
3
3
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
- var _OptionsController_instances, _OptionsController_shouldChangeState, _OptionsController_activateIndex, _OptionsController_deactivateIndex, _OptionsController_getElementKey, _OptionsController_buildActiveTargets;
6
+ var _OptionsController_instances, _OptionsController_shouldChangeState, _OptionsController_activateKey, _OptionsController_deactivateKey, _OptionsController_getElementKey;
7
7
  import SyncedBooleanAttributesController from '../synced_boolean_attributes_controller/synced_boolean_attributes_controller';
8
8
  class OptionsController extends SyncedBooleanAttributesController {
9
9
  constructor() {
10
10
  super(...arguments);
11
11
  _OptionsController_instances.add(this);
12
- this.optionTargetLookup = new Map();
13
12
  this.outletUpdate = this.select;
14
13
  }
15
- connect() {
16
- __classPrivateFieldGet(this, _OptionsController_instances, "m", _OptionsController_buildActiveTargets).call(this);
17
- this.syncElementAttributes();
18
- }
19
14
  select(event, updateTo = {}) {
20
15
  var _a;
21
16
  const activeOptions = updateTo.data;
@@ -30,16 +25,22 @@ class OptionsController extends SyncedBooleanAttributesController {
30
25
  if (shouldChangeState) {
31
26
  const willBeActive = !isCurrentlyActive;
32
27
  this.updateAttributesForElement(target, willBeActive);
33
- willBeActive ? __classPrivateFieldGet(this, _OptionsController_instances, "m", _OptionsController_activateIndex).call(this, optionKey) : __classPrivateFieldGet(this, _OptionsController_instances, "m", _OptionsController_deactivateIndex).call(this, optionKey);
28
+ willBeActive ? __classPrivateFieldGet(this, _OptionsController_instances, "m", _OptionsController_activateKey).call(this, optionKey) : __classPrivateFieldGet(this, _OptionsController_instances, "m", _OptionsController_deactivateKey).call(this, optionKey);
34
29
  }
35
30
  }
36
31
  this.sendToOutlets(event, Object.assign(Object.assign({}, updateTo), { data: this.activeOptionsValue }));
37
32
  }
33
+ optionTargetConnected(element) {
34
+ const key = __classPrivateFieldGet(this, _OptionsController_instances, "m", _OptionsController_getElementKey).call(this, element);
35
+ if (this.doesElementHaveOnAttrs(element)) {
36
+ __classPrivateFieldGet(this, _OptionsController_instances, "m", _OptionsController_activateKey).call(this, key);
37
+ }
38
+ else {
39
+ __classPrivateFieldGet(this, _OptionsController_instances, "m", _OptionsController_deactivateKey).call(this, key);
40
+ }
41
+ }
38
42
  getValueForElement(element) {
39
43
  var _a;
40
- if (!this.optionTargetLookup.has(element)) {
41
- return null;
42
- }
43
44
  const optionKey = __classPrivateFieldGet(this, _OptionsController_instances, "m", _OptionsController_getElementKey).call(this, element);
44
45
  return (_a = this.activeOptionsValue[optionKey]) !== null && _a !== void 0 ? _a : false;
45
46
  }
@@ -64,9 +65,9 @@ _OptionsController_instances = new WeakSet(), _OptionsController_shouldChangeSta
64
65
  // Was selected and it's active but toggling behavior means it should deactivate
65
66
  // Was selected and it's not on, so it just needs to be turned on
66
67
  return true;
67
- }, _OptionsController_activateIndex = function _OptionsController_activateIndex(key) {
68
+ }, _OptionsController_activateKey = function _OptionsController_activateKey(key) {
68
69
  this.activeOptionsValue = Object.assign(Object.assign({}, this.activeOptionsValue), { [key]: true });
69
- }, _OptionsController_deactivateIndex = function _OptionsController_deactivateIndex(key) {
70
+ }, _OptionsController_deactivateKey = function _OptionsController_deactivateKey(key) {
70
71
  const copy = Object.assign({}, this.activeOptionsValue);
71
72
  delete copy[key];
72
73
  this.activeOptionsValue = copy;
@@ -76,21 +77,6 @@ _OptionsController_instances = new WeakSet(), _OptionsController_shouldChangeSta
76
77
  return elementValue;
77
78
  }
78
79
  return element.innerText.trim();
79
- }, _OptionsController_buildActiveTargets = function _OptionsController_buildActiveTargets() {
80
- this.optionTargetLookup = new Map();
81
- for (let index in this.optionTargets) {
82
- const target = this.optionTargets[index];
83
- const optionKey = __classPrivateFieldGet(this, _OptionsController_instances, "m", _OptionsController_getElementKey).call(this, target);
84
- this.optionTargetLookup.set(target, optionKey);
85
- const onSyncAttr = !!this.syncedAttrsValue.find(attr => target.getAttribute(attr) === 'true');
86
- if (onSyncAttr) {
87
- __classPrivateFieldGet(this, _OptionsController_instances, "m", _OptionsController_activateIndex).call(this, optionKey);
88
- }
89
- else {
90
- const hasOffAttr = !!this.antiAttrsValue.find(attr => target.getAttribute(attr) === 'false');
91
- hasOffAttr && __classPrivateFieldGet(this, _OptionsController_instances, "m", _OptionsController_activateIndex).call(this, optionKey);
92
- }
93
- }
94
80
  };
95
81
  OptionsController.outlets = SyncedBooleanAttributesController.outlets;
96
82
  OptionsController.targets = ['option'];
@@ -29,13 +29,6 @@ export default class OptionsController
29
29
  declare readonly isMultiValue: boolean
30
30
  declare readonly toggleableValue: boolean
31
31
 
32
- optionTargetLookup: Map<Element, TOptionKey> = new Map()
33
-
34
- connect(): void {
35
- this.#buildActiveTargets()
36
- this.syncElementAttributes()
37
- }
38
-
39
32
  select(event: Event, updateTo: TOutletChangeData<TActiveOptions> = {}) {
40
33
  const activeOptions = updateTo.data
41
34
  for (let index in this.optionTargets) {
@@ -51,13 +44,22 @@ export default class OptionsController
51
44
  if (shouldChangeState) {
52
45
  const willBeActive = !isCurrentlyActive
53
46
  this.updateAttributesForElement(target, willBeActive)
54
- willBeActive ? this.#activateIndex(optionKey) : this.#deactivateIndex(optionKey)
47
+ willBeActive ? this.#activateKey(optionKey) : this.#deactivateKey(optionKey)
55
48
  }
56
49
  }
57
50
 
58
51
  this.sendToOutlets(event, {...updateTo, data: this.activeOptionsValue})
59
52
  }
60
53
 
54
+ optionTargetConnected(element: Element) {
55
+ const key = this.#getElementKey(element)
56
+ if (this.doesElementHaveOnAttrs(element)) {
57
+ this.#activateKey(key)
58
+ } else {
59
+ this.#deactivateKey(key)
60
+ }
61
+ }
62
+
61
63
  #shouldChangeState(isCurrentlyActive: boolean, wasSelected: boolean) {
62
64
  if (!wasSelected && !isCurrentlyActive) {
63
65
  // Not currently on and wasn't selected, no reason to change
@@ -80,11 +82,11 @@ export default class OptionsController
80
82
  return true
81
83
  }
82
84
 
83
- #activateIndex(key: TOptionKey) {
85
+ #activateKey(key: TOptionKey) {
84
86
  this.activeOptionsValue = {...this.activeOptionsValue, [key]: true}
85
87
  }
86
88
 
87
- #deactivateIndex(key: TOptionKey) {
89
+ #deactivateKey(key: TOptionKey) {
88
90
  const copy = {...this.activeOptionsValue}
89
91
  delete copy[key]
90
92
  this.activeOptionsValue = copy
@@ -99,27 +101,7 @@ export default class OptionsController
99
101
  return (element as HTMLElement).innerText.trim()
100
102
  }
101
103
 
102
- #buildActiveTargets() {
103
- this.optionTargetLookup = new Map()
104
- for (let index in this.optionTargets) {
105
- const target = this.optionTargets[index]
106
- const optionKey = this.#getElementKey(target)
107
- this.optionTargetLookup.set(target, optionKey)
108
- const onSyncAttr = !!this.syncedAttrsValue.find(attr => target.getAttribute(attr) === 'true')
109
- if (onSyncAttr) {
110
- this.#activateIndex(optionKey)
111
- } else {
112
- const hasOffAttr = !!this.antiAttrsValue.find(attr => target.getAttribute(attr) === 'false')
113
- hasOffAttr && this.#activateIndex(optionKey)
114
- }
115
- }
116
- }
117
-
118
104
  getValueForElement(element: Element) {
119
- if (!this.optionTargetLookup.has(element)) {
120
- return null
121
- }
122
-
123
105
  const optionKey = this.#getElementKey(element)
124
106
  return this.activeOptionsValue[optionKey] ?? false
125
107
  }
@@ -30,6 +30,7 @@ export default class StringMatchController
30
30
  this.#compareKeywordToTargets()
31
31
  this.sendToOutlets(event, {...updateTo, data: this.keywordValue})
32
32
  }
33
+
33
34
  #compareKeywordToTargets() {
34
35
  if (this.hasMatchTarget) {
35
36
  let foundMatch = false
@@ -41,4 +41,5 @@ export default class SyncedBooleanAttributesController<T> extends OutletManagerC
41
41
  updateAttributesForElement(element: Element, value: boolean): void;
42
42
  syncElementAttributes(): void;
43
43
  validateAttrChange(dispatchEvent: TStimulusDispatchEvent<TSyncAttrDetail>): void;
44
+ doesElementHaveOnAttrs(element: Element): boolean;
44
45
  }
@@ -95,6 +95,26 @@ class SyncedBooleanAttributesController extends OutletManagerController {
95
95
  }
96
96
  }
97
97
  }
98
+ doesElementHaveOnAttrs(element) {
99
+ if (this.hasSyncedAttrsValue) {
100
+ for (let i = 0; i < this.syncedAttrsValue.length; i++) {
101
+ const attrName = this.syncedAttrsValue[i];
102
+ if (element.getAttribute(attrName) === 'true') {
103
+ return true;
104
+ }
105
+ }
106
+ }
107
+ if (this.hasAntiAttrsValue) {
108
+ for (let i = 0; i < this.antiAttrsValue.length; i++) {
109
+ const attrName = this.antiAttrsValue[i];
110
+ const attrValue = element.getAttribute(attrName);
111
+ if (attrValue === 'false' || (SyncedBooleanAttributesController.removeOnFalseAttrs[attrName] && !attrValue)) {
112
+ return true;
113
+ }
114
+ }
115
+ }
116
+ return false;
117
+ }
98
118
  }
99
119
  _SyncedBooleanAttributesController_instances = new WeakSet(), _SyncedBooleanAttributesController_isSyncedAttr = function _SyncedBooleanAttributesController_isSyncedAttr(attr) {
100
120
  var _a;
@@ -131,6 +131,29 @@ export default class SyncedBooleanAttributesController<T> extends OutletManagerC
131
131
  }
132
132
  }
133
133
 
134
+ doesElementHaveOnAttrs(element: Element) {
135
+ if (this.hasSyncedAttrsValue) {
136
+ for (let i = 0; i < this.syncedAttrsValue.length; i++) {
137
+ const attrName = this.syncedAttrsValue[i]
138
+ if (element.getAttribute(attrName) === 'true') {
139
+ return true
140
+ }
141
+ }
142
+ }
143
+
144
+ if (this.hasAntiAttrsValue) {
145
+ for (let i = 0; i < this.antiAttrsValue.length; i++) {
146
+ const attrName = this.antiAttrsValue[i]
147
+ const attrValue = element.getAttribute(attrName)
148
+ if (attrValue === 'false' || (SyncedBooleanAttributesController.removeOnFalseAttrs[attrName] && !attrValue)) {
149
+ return true
150
+ }
151
+ }
152
+ }
153
+
154
+ return false
155
+ }
156
+
134
157
  #isSyncedAttr(attr: string) {
135
158
  // Helper function to determine if the attr is synced
136
159
  if (this.syncedAttrsLookup === null) {
@@ -59,7 +59,7 @@ module Ariadne
59
59
 
60
60
  unless silence_warnings?
61
61
  message = <<~MSG
62
- Ariadne: note that `#{preferred_tag}` is the preferred tag here;
62
+ Ariadne: note that `#{preferred_tag}` is the preferred tag for `#{self.class.name}`;
63
63
  you passed `#{given_tag}` (which will still be used)
64
64
  MSG
65
65
 
@@ -75,7 +75,7 @@ module Ariadne
75
75
 
76
76
  unless silence_warnings?
77
77
  message = <<~MSG
78
- Ariadne: note that `#{preferred_attribute}` is the preferred attribute here;
78
+ Ariadne: note that `#{preferred_attribute}` is the preferred attribute for `#{self.class.name}`;
79
79
  you passed `#{given_attribute}` (which will still be used)
80
80
  MSG
81
81
 
@@ -15,7 +15,7 @@ module ERBLint
15
15
  end
16
16
 
17
17
  def correction(args)
18
- return nil if args.nil?
18
+ return if args.nil?
19
19
 
20
20
  correction = "<%= render #{self.class::COMPONENT}.new"
21
21
  correction += "(#{args})" if args.present?
@@ -159,13 +159,13 @@ module ERBLint
159
159
  # Unless explicitly set, we don't want to mark correctable offenses if the counter is correct.
160
160
  if !@config.override_ignores_if_correctable? && expected_count == @total_offenses
161
161
  clear_offenses
162
- return
162
+ return false
163
163
  end
164
164
 
165
165
  if @offenses_not_corrected.zero?
166
166
  # have to adjust to get `\n` so we delete the whole line
167
167
  add_offense(processed_source.to_source_range(comment_node.loc.adjust(end_pos: 1)), "Unused erblint:count comment for #{rule_name}", "") if comment_node
168
- return
168
+ return false
169
169
  end
170
170
 
171
171
  first_offense = @offenses[0]
@@ -3,6 +3,6 @@
3
3
  # :nocov:
4
4
  module Ariadne
5
5
  module ViewComponents
6
- VERSION = "0.0.50"
6
+ VERSION = "0.0.52"
7
7
  end
8
8
  end
@@ -12,7 +12,7 @@ module RuboCop
12
12
  # We only verify SystemArguments if it's a `.new` call on a component or
13
13
  # a ViewHeleper call.
14
14
  def valid_node?(node)
15
- return if node.nil?
15
+ return false if node.nil?
16
16
 
17
17
  view_helpers.include?(node.method_name) || (node.method_name == :new && !node.receiver.nil? && ::Ariadne::ViewComponents::STATUSES.key?(node.receiver.const_name))
18
18
  end
@@ -1,14 +1,29 @@
1
1
  {
2
2
  "Ariadne::ActionCardComponent": {
3
+ "DEFAULT_ACTION_TAG": "a",
3
4
  "DEFAULT_ATTRIBUTES": {
4
5
  "wrapper": {
6
+ },
7
+ "link": {
8
+ },
9
+ "icon": {
10
+ },
11
+ "title": {
12
+ },
13
+ "action": {
5
14
  }
6
15
  },
7
16
  "DEFAULT_CLASSES": {
8
- "wrapper": "ariadne-w-fit ariadne-flex ariadne-flex-col ariadne-items-center",
9
- "actions_wrapper": "ariadne-flex"
10
- },
17
+ "wrapper": "ariadne-overflow-hidden ariadne-w-96 ariadne-rounded-lg ariadne-mr-4 [&:last]:ariadne-mr-0",
18
+ "actions_wrapper": "ariadne-flex ariadne-w-full",
19
+ "icon": "",
20
+ "link": "ariadne-flex ariadne-flex-col ariadne-items-center",
21
+ "title": "ariadne-text-center ariadne-mb-4 ariadne-text-xl ariadne-font-bold",
22
+ "action": "ariadne-w-full ariadne-flex ariadne-items-center ariadne-justify-center ariadne-py-6 ariadne-text-sm"
23
+ },
24
+ "DEFAULT_ICON_TAG": "svg",
11
25
  "DEFAULT_TAG": "div",
26
+ "DEFAULT_TITLE_TAG": "h3",
12
27
  "TAG_OPTIONS": [
13
28
  "div"
14
29
  ]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ariadne_view_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.50
4
+ version: 0.0.52
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - Garen J. Torikian
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-29 00:00:00.000000000 Z
11
+ date: 2023-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tailwind_merge