anchor_view_components 0.44.0 → 0.45.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 +4 -4
- data/CHANGELOG.md +15 -0
- data/app/assets/images/icons/percentage.svg +6 -0
- data/app/components/anchor/anchor_view_components.ts +2 -0
- data/app/components/anchor/assistive_tech_notifications_component.html.erb +23 -0
- data/app/components/anchor/assistive_tech_notifications_component.rb +4 -0
- data/app/components/anchor/assistive_tech_notifications_component.ts +15 -0
- data/app/components/anchor/copy_to_clipboard_component.en.yml +1 -0
- data/app/components/anchor/copy_to_clipboard_component.html.erb +2 -2
- data/app/components/anchor/copy_to_clipboard_controller.ts +10 -8
- data/app/components/anchor/toast_component.html.erb +5 -1
- data/app/components/anchor/toast_component.rb +4 -0
- data/app/components/anchor/toast_controller.ts +5 -0
- data/app/helpers/anchor/form_builder.rb +2 -2
- data/app/helpers/anchor/view_helper.rb +1 -0
- data/lib/anchor/view_components/version.rb +1 -1
- data/previews/anchor/assistive_tech_notifications_component_preview/default.html.erb +10 -0
- data/previews/anchor/assistive_tech_notifications_component_preview.rb +5 -0
- data/previews/forms/with_icons.html.erb +10 -19
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e70ad5e5ff2eb34b41352d913159bfa0baae9417393ce24007ef061a7eae1c8a
|
4
|
+
data.tar.gz: 4245d65fc162e270dc8d4711b17159d1ef271eb8b283c6d75ed4d59b77faf1cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 383e4c7e44d61c1346d192fbe0fb6362b112b97854f87a98f7ea506ea2a5cd9449c68c4d80cd77020d2ad950d69e652e81b9b46980fb5cdc8c8a2c9c484bb485
|
7
|
+
data.tar.gz: cff07e92d9e67bb1d8228eea11d950cbef4420505c6f349203d3bcd3dd98c9d80ac7a0cd51f80980da60aadf1403fd797d5bc9420e2555ae12592c094ba080ce
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.45.1
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- 73f1bd0: Reverted commit b050620b45f0ef6e73cfae2d2fe106c4831e7587, which was causing issues with some forms in the BuoyRails app.
|
8
|
+
|
9
|
+
## 0.45.0
|
10
|
+
|
11
|
+
### Minor Changes
|
12
|
+
|
13
|
+
- 2cf21ed: Add more-horiz icon
|
14
|
+
- 2d2c3e6: Added a AssistiveTechNotifications component for notifying assistive tech users of changes that might otherwise only be presented visually. The output is two [ARIA live regions][aria-live-regions]—one `polite`, the other `assertive`—and is meant to be placed in an application’s layout so that it’s rendered on every page. Also provided, is the component’s public JavaScript function, `notifyAssistiveTech`, so that applications can easily send messages to these two live regions.
|
15
|
+
|
16
|
+
[aria-live-regions]: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions
|
17
|
+
|
3
18
|
## 0.44.0
|
4
19
|
|
5
20
|
### Minor Changes
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<!-- Source: Iconoir, added via `bin/add_icon` -->
|
2
|
+
<svg width="24" height="24" stroke-width="1.5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
3
|
+
<path d="M17 19C15.8954 19 15 18.1046 15 17C15 15.8954 15.8954 15 17 15C18.1046 15 19 15.8954 19 17C19 18.1046 18.1046 19 17 19Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
|
4
|
+
<path d="M7 9C5.89543 9 5 8.10457 5 7C5 5.89543 5.89543 5 7 5C8.10457 5 9 5.89543 9 7C9 8.10457 8.10457 9 7 9Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
|
5
|
+
<path d="M19 5L5 19" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
|
6
|
+
</svg>
|
@@ -10,6 +10,7 @@ import ToastController from "./toast_controller";
|
|
10
10
|
import ToggleController from "./toggle_controller";
|
11
11
|
import TypeaheadSelectController from "./typeahead_select_controller";
|
12
12
|
import { Application } from "@hotwired/stimulus";
|
13
|
+
import { notifyAssistiveTech } from "./assistive_tech_notifications_component";
|
13
14
|
|
14
15
|
export function registerAnchorControllers(application: Application) {
|
15
16
|
application.register("autocomplete", AutocompleteController);
|
@@ -31,4 +32,5 @@ export {
|
|
31
32
|
ToastController,
|
32
33
|
ToggleController,
|
33
34
|
TypeaheadSelectController,
|
35
|
+
notifyAssistiveTech,
|
34
36
|
};
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<%= tag.div(
|
2
|
+
**merge_options(
|
3
|
+
wrapper_options,
|
4
|
+
aria: {
|
5
|
+
atomic: true,
|
6
|
+
live: "polite",
|
7
|
+
},
|
8
|
+
class: "sr-only",
|
9
|
+
id: "js-assistive-tech-notifications",
|
10
|
+
),
|
11
|
+
) %>
|
12
|
+
|
13
|
+
<%= tag.div(
|
14
|
+
**merge_options(
|
15
|
+
wrapper_options,
|
16
|
+
aria: {
|
17
|
+
atomic: true,
|
18
|
+
live: "assertive",
|
19
|
+
},
|
20
|
+
class: "sr-only",
|
21
|
+
id: "js-assistive-tech-notifications-assertive",
|
22
|
+
),
|
23
|
+
) %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
export function notifyAssistiveTech(message: string, assertive = false) {
|
2
|
+
const liveRegionId = assertive
|
3
|
+
? "js-assistive-tech-notifications-assertive"
|
4
|
+
: "js-assistive-tech-notifications";
|
5
|
+
const liveRegion = document.getElementById(liveRegionId);
|
6
|
+
|
7
|
+
if (liveRegion) {
|
8
|
+
liveRegion.textContent = message;
|
9
|
+
} else {
|
10
|
+
console.warn(
|
11
|
+
`Could not find #${liveRegionId}.`,
|
12
|
+
"Make sure to include `anchor_assistive_tech_notifications` in your Rails layout.",
|
13
|
+
);
|
14
|
+
}
|
15
|
+
}
|
@@ -4,7 +4,7 @@
|
|
4
4
|
action: "click->copy-to-clipboard#copy",
|
5
5
|
controller: "copy-to-clipboard",
|
6
6
|
copy_to_clipboard_text_to_copy_value: value,
|
7
|
-
|
7
|
+
copy_to_clipboard_assistive_tech_notification_value: t(".assistive_tech_notification"),
|
8
8
|
},
|
9
9
|
class: "bg-transparent",
|
10
10
|
type: "button",
|
@@ -15,7 +15,7 @@
|
|
15
15
|
) %>
|
16
16
|
<%= anchor_icon(
|
17
17
|
icon: "check",
|
18
|
-
|
18
|
+
hidden: true,
|
19
19
|
data: { copy_to_clipboard_target: "successIcon"},
|
20
20
|
) %>
|
21
21
|
<% end %>
|
@@ -1,26 +1,28 @@
|
|
1
1
|
import { Controller } from "@hotwired/stimulus";
|
2
|
+
import { notifyAssistiveTech } from "./assistive_tech_notifications_component";
|
2
3
|
|
3
4
|
export default class extends Controller<HTMLDivElement> {
|
4
5
|
static targets = [ "initialIcon", "successIcon"];
|
5
|
-
static
|
6
|
+
static values = {
|
7
|
+
assistiveTechNotification: String,
|
8
|
+
notificationDelay: { type: Number, default: 1500 },
|
9
|
+
textToCopy: String,
|
10
|
+
};
|
6
11
|
|
7
12
|
declare readonly initialIconTarget: SVGElement;
|
8
13
|
declare readonly successIconTarget: SVGElement;
|
9
14
|
declare readonly notificationDelayValue: number;
|
10
15
|
declare readonly hiddenClass: string;
|
11
16
|
declare readonly textToCopyValue: string;
|
17
|
+
declare readonly assistiveTechNotificationValue: string;
|
12
18
|
declare readonly hasTextToCopyValue: boolean;
|
13
19
|
|
14
|
-
static values = {
|
15
|
-
notificationDelay: { type: Number, default: 1500 },
|
16
|
-
textToCopy: String,
|
17
|
-
};
|
18
|
-
|
19
20
|
copy(): void {
|
20
21
|
if (this.hasTextToCopyValue) {
|
21
22
|
navigator.clipboard.writeText(this.textToCopyValue);
|
22
23
|
}
|
23
24
|
this.toggleIcons();
|
25
|
+
notifyAssistiveTech(this.assistiveTechNotificationValue);
|
24
26
|
|
25
27
|
setTimeout(() => {
|
26
28
|
this.toggleIcons();
|
@@ -28,7 +30,7 @@ export default class extends Controller<HTMLDivElement> {
|
|
28
30
|
}
|
29
31
|
|
30
32
|
toggleIcons(): void {
|
31
|
-
this.initialIconTarget.
|
32
|
-
this.successIconTarget.
|
33
|
+
this.initialIconTarget.toggleAttribute("hidden");
|
34
|
+
this.successIconTarget.toggleAttribute("hidden");
|
33
35
|
}
|
34
36
|
}
|
@@ -1,7 +1,11 @@
|
|
1
1
|
<%= tag.div(
|
2
2
|
**merge_options(wrapper_options, {
|
3
3
|
class: "toast",
|
4
|
-
data: {
|
4
|
+
data: {
|
5
|
+
controller: "toast",
|
6
|
+
toast_assistive_tech_notification_value: assistive_tech_notification,
|
7
|
+
testid: test_id,
|
8
|
+
},
|
5
9
|
popover: "manual",
|
6
10
|
})
|
7
11
|
) do %>
|
@@ -1,11 +1,14 @@
|
|
1
1
|
import { Controller } from "@hotwired/stimulus";
|
2
|
+
import { notifyAssistiveTech } from "./assistive_tech_notifications_component";
|
2
3
|
|
3
4
|
export default class extends Controller<HTMLDivElement> {
|
4
5
|
static values = {
|
6
|
+
assistiveTechNotification: String,
|
5
7
|
hideDelay: { type: Number, default: 3000 },
|
6
8
|
showDelay: { type: Number, default: 200 },
|
7
9
|
};
|
8
10
|
|
11
|
+
declare assistiveTechNotificationValue: string;
|
9
12
|
declare hideDelayValue: number
|
10
13
|
declare showDelayValue: number
|
11
14
|
|
@@ -17,6 +20,8 @@ export default class extends Controller<HTMLDivElement> {
|
|
17
20
|
setTimeout(() => {
|
18
21
|
this.element.remove();
|
19
22
|
}, this.hideDelayValue);
|
23
|
+
|
24
|
+
notifyAssistiveTech(this.assistiveTechNotificationValue);
|
20
25
|
}
|
21
26
|
|
22
27
|
disconnect(): void {
|
@@ -132,7 +132,7 @@ module Anchor
|
|
132
132
|
starting_icon: options.delete(:starting_icon),
|
133
133
|
ending_icon: options.delete(:ending_icon)
|
134
134
|
) do |component|
|
135
|
-
super
|
135
|
+
super(attribute, component.options.merge(options))
|
136
136
|
end
|
137
137
|
end
|
138
138
|
|
@@ -144,7 +144,7 @@ module Anchor
|
|
144
144
|
starting_icon: options.delete(:starting_icon),
|
145
145
|
ending_icon: options.delete(:ending_icon)
|
146
146
|
) do |component|
|
147
|
-
super
|
147
|
+
super(attribute, component.options.merge(options))
|
148
148
|
end
|
149
149
|
end
|
150
150
|
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<%= anchor_text do %>
|
2
|
+
This component is visually hidden, by design. Inspect the page source and look
|
3
|
+
for the two
|
4
|
+
<%= anchor_link(
|
5
|
+
"ARIA live regions",
|
6
|
+
href: "https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions",
|
7
|
+
) %>:
|
8
|
+
<code>div#js-assistive-tech-notifications</code>
|
9
|
+
and <code>div#js-assistive-tech-notifications-assertive</code>.
|
10
|
+
<% end %>
|
@@ -1,20 +1,11 @@
|
|
1
|
-
<%= anchor_form_with url: false
|
2
|
-
<%=
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
:
|
10
|
-
|
11
|
-
starting_icon: :dollar,
|
12
|
-
step: 0.01
|
13
|
-
) %>
|
14
|
-
<%= form.number_field(
|
15
|
-
:amount,
|
16
|
-
placeholder: "0",
|
17
|
-
ending_icon: :dollar,
|
18
|
-
step: 1
|
19
|
-
) %>
|
1
|
+
<%= anchor_form_with url: false do |form| %>
|
2
|
+
<%= tag.div do %>
|
3
|
+
<%= form.label :price %>
|
4
|
+
<%= form.text_field :price, inputmode: :numeric, starting_icon: "dollar" %>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<%= tag.div do %>
|
8
|
+
<%= form.label :discount %>
|
9
|
+
<%= form.text_field :discount, inputmode: :numeric, ending_icon: "percentage" %>
|
10
|
+
<% end %>
|
20
11
|
<% end %>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: anchor_view_components
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.45.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Buoy Software
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01-
|
11
|
+
date: 2024-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -69,6 +69,7 @@ files:
|
|
69
69
|
- app/assets/images/icons/nav-arrow-left.svg
|
70
70
|
- app/assets/images/icons/nav-arrow-right.svg
|
71
71
|
- app/assets/images/icons/paste-clipboard.svg
|
72
|
+
- app/assets/images/icons/percentage.svg
|
72
73
|
- app/assets/images/icons/plus.svg
|
73
74
|
- app/assets/images/icons/search.svg
|
74
75
|
- app/assets/images/icons/warning-circle.svg
|
@@ -82,6 +83,9 @@ files:
|
|
82
83
|
- app/components/anchor/action_menu_component.html.erb
|
83
84
|
- app/components/anchor/action_menu_component.rb
|
84
85
|
- app/components/anchor/anchor_view_components.ts
|
86
|
+
- app/components/anchor/assistive_tech_notifications_component.html.erb
|
87
|
+
- app/components/anchor/assistive_tech_notifications_component.rb
|
88
|
+
- app/components/anchor/assistive_tech_notifications_component.ts
|
85
89
|
- app/components/anchor/autocomplete/results_component.html.erb
|
86
90
|
- app/components/anchor/autocomplete/results_component.rb
|
87
91
|
- app/components/anchor/autocomplete_component.en.yml
|
@@ -196,6 +200,8 @@ files:
|
|
196
200
|
- previews/anchor/action_menu_component_preview/autoplacement.html.erb
|
197
201
|
- previews/anchor/action_menu_component_preview/custom_trigger.html.erb
|
198
202
|
- previews/anchor/action_menu_component_preview/opens_a_dialog.html.erb
|
203
|
+
- previews/anchor/assistive_tech_notifications_component_preview.rb
|
204
|
+
- previews/anchor/assistive_tech_notifications_component_preview/default.html.erb
|
199
205
|
- previews/anchor/badge_component_preview.rb
|
200
206
|
- previews/anchor/banner_component_preview.rb
|
201
207
|
- previews/anchor/banner_component_preview/body_only.html.erb
|