ariadne_view_components 0.0.86.6 → 0.0.86.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,12 +10,14 @@ module Ariadne
10
10
 
11
11
  include Ariadne::Behaviors::Tooltipable
12
12
 
13
- # @param form_url [String] The URL to POST to when the toggle switch is toggled. If `nil`, the toggle switch will not make any requests.
14
- # @param csrf_token [String] A CSRF token that will be sent to the server as "authenticity_token" when the toggle switch is toggled. Unused if `src` is `nil`.
13
+ # @param form_url [String] The URL to submit to when the toggle switch is toggled. If `nil`, the toggle switch will not make any requests.
14
+ # @param form_method [String] A HTTP method to use.
15
+ # @param turbo [Boolean] Whether or not to request a turbo stream and render the response as such.
15
16
  # @param checked [Boolean] Whether the toggle switch is on or off.
16
17
  # @param enabled [Boolean] Whether or not the toggle switch responds to user input.
17
18
  option :form_url, default: proc { nil }
18
19
  option :form_method, default: proc { :post }
20
+ option :turbo, default: proc { false }
19
21
  option :checked, default: proc { false }
20
22
  option :enabled, default: proc { true }
21
23
 
@@ -32,7 +34,7 @@ module Ariadne
32
34
  controller: "#{stimulus_name} #{html_attrs[:data][:controller]}".rstrip,
33
35
  "#{stimulus_name}-target": "toggle",
34
36
  action: "click->#{stimulus_name}#toggle #{html_attrs[:data][:action]}".rstrip,
35
- }.merge(html_attrs[:data])
37
+ }
36
38
  end
37
39
 
38
40
  def before_render
@@ -50,6 +52,7 @@ module Ariadne
50
52
  "#{stimulus_name}-csrf-token-value": csrf_token,
51
53
  "#{stimulus_name}-form-method-value": @form_method,
52
54
  "#{stimulus_name}-form-url-value": @form_url,
55
+ "#{stimulus_name}-turbo-value": @turbo,
53
56
  }
54
57
  html_attrs[:data] = html_attrs[:data].merge(form_values)
55
58
  end
@@ -8,6 +8,7 @@ export default class ToggleController extends controllerFactory<HTMLInputElement
8
8
  formMethod: String,
9
9
  formUrl: String,
10
10
  csrfToken: String,
11
+ turbo: Boolean,
11
12
  },
12
13
  }) {
13
14
  connect() {
@@ -104,22 +105,33 @@ export default class ToggleController extends controllerFactory<HTMLInputElement
104
105
 
105
106
  let response
106
107
 
108
+ const requestHeaders: {[key: string]: string} = {
109
+ 'Requested-With': 'XMLHttpRequest',
110
+ }
111
+
112
+ if (this.turboValue) {
113
+ requestHeaders['Accept'] = 'text/vnd.turbo-stream.html'
114
+ }
115
+
107
116
  try {
108
117
  response = await fetch(this.formUrlValue, {
109
118
  credentials: 'same-origin',
110
119
  method: this.formMethodValue,
111
- headers: {
112
- 'Requested-With': 'XMLHttpRequest',
113
- },
120
+ headers: requestHeaders,
114
121
  body,
115
122
  })
116
123
  } catch (error) {
117
- throw new Error('A network error occurred, please try again.')
124
+ throw new Error(`A network error occurred, please try again: ${error.message}`)
118
125
  }
119
126
 
120
127
  if (!response.ok) {
121
128
  throw new Error(await response.text())
122
129
  }
130
+
131
+ const contentType = response.headers.get('Content-Type')
132
+ if (window.Turbo && this.turbo && contentType?.startsWith('text/vnd.turbo-stream.html')) {
133
+ window.Turbo.renderStreamMessage(await response.text())
134
+ }
123
135
  }
124
136
 
125
137
  // the authenticity token is passed into the element and is not generated in js land
@@ -13,7 +13,11 @@ export default class Controller extends controllerFactory()({
13
13
  connect() {
14
14
  // Set the initial state of the accordion
15
15
  this.animationDurationValue = 0.15
16
- this.openValue ? this.open() : this.close()
16
+ if (this.openValue) {
17
+ this.open()
18
+ } else {
19
+ this.close()
20
+ }
17
21
  }
18
22
 
19
23
  // Toggle the 'open' value
@@ -22,7 +26,7 @@ export default class Controller extends controllerFactory()({
22
26
  }
23
27
 
24
28
  // Handle changes in the 'open' value
25
- openValueChanged(isOpen, wasOpen) {
29
+ openValueChanged(isOpen) {
26
30
  if (isOpen) {
27
31
  this.open()
28
32
  } else {
@@ -34,7 +38,9 @@ export default class Controller extends controllerFactory()({
34
38
  open() {
35
39
  if (this.hasContentTarget) {
36
40
  this.revealContent()
37
- this.hasIconTarget && this.rotateIcon()
41
+ if (this.hasIconTarget) {
42
+ this.rotateIcon()
43
+ }
38
44
  this.openValue = true
39
45
  }
40
46
  }
@@ -42,7 +48,9 @@ export default class Controller extends controllerFactory()({
42
48
  close() {
43
49
  if (this.hasContentTarget) {
44
50
  this.hideContent()
45
- this.hasIconTarget && this.rotateIcon()
51
+ if (this.hasIconTarget) {
52
+ this.rotateIcon()
53
+ }
46
54
  this.openValue = false
47
55
  }
48
56
  }
@@ -108,9 +108,8 @@ export default class ComboboxController extends controllerFactory<HTMLDetailsEle
108
108
 
109
109
  const selectedText = (checkedRadioButton.labels?.item(0) as HTMLLabelElement).textContent
110
110
 
111
- this.buttonTarget.querySelector(
112
- '[data-ariadne-ui-button-target="content"]',
113
- ).textContent = `${this.dynamicLabelPrefixValue}${selectedText}`
111
+ this.buttonTarget.querySelector('[data-ariadne-ui-button-target="content"]').textContent =
112
+ `${this.dynamicLabelPrefixValue}${selectedText}`
114
113
  }
115
114
 
116
115
  toggle(): void {
@@ -42,7 +42,7 @@ export default class InputFilterController extends controllerFactory()({
42
42
  useIntersection(this)
43
43
  }
44
44
 
45
- appear(entry, observer) {
45
+ appear() {
46
46
  this.reset()
47
47
  }
48
48
 
@@ -1,4 +1,4 @@
1
- import {type Placement, autoUpdate, computePosition, flip, offset, shift, size} from '@floating-ui/dom'
1
+ import {type Placement, autoUpdate, computePosition, flip, offset, shift} from '@floating-ui/dom'
2
2
  import {controllerFactory} from '@utils/createController'
3
3
  import {useClickOutside, useMutation} from 'stimulus-use'
4
4
 
@@ -1,8 +1,6 @@
1
-
2
1
  import '@github/relative-time-element'
3
2
  import {controllerFactory} from '@utils/createController'
4
3
 
5
4
  export default class TimeAgoController extends controllerFactory<HTMLDetailsElement>()({
6
5
  targets: {},
7
- }) {
8
- }
6
+ }) {}
@@ -3,6 +3,6 @@
3
3
  # :nocov:
4
4
  module Ariadne
5
5
  module ViewComponents
6
- VERSION = "0.0.86.6"
6
+ VERSION = "0.0.86.7"
7
7
  end
8
8
  end
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.86.6
4
+ version: 0.0.86.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Garen J. Torikian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-11 00:00:00.000000000 Z
11
+ date: 2024-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tailwind_merge