poetry-ui 0.1.9 → 0.1.11
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 +14 -0
- data/app/components/poetry/ui/combobox/component.rb +5 -1
- data/app/components/poetry/ui/command/component.rb +5 -1
- data/app/components/poetry/ui/drawer/component.rb +16 -3
- data/config/component_registry.yml +12 -3
- data/lib/generators/poetry/add/add_generator.rb +4 -2
- data/lib/generators/poetry/diff/diff_generator.rb +4 -2
- data/lib/poetry/ui/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 424d56eb485cfb24b25adad4bd41c5ad975cfd59a55416ac56df517b54876c23
|
|
4
|
+
data.tar.gz: 9ad5fe0d7d083dbef21f73b1e9e2eafea3e674dbaaef9825645926d989d91a11
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a622c7a5e36978fb60c91589b0b609cdf6a4bed6ddc96a31d876a1eac50d2fbcae0131837fa18fbaca9eb5efe28bc8f30329ed60c7c11d16b99b227da514d347
|
|
7
|
+
data.tar.gz: 4586384470e5c8da21ceacb1134aca3853f3770e8b26aeae6382e78074767f35e7076c1f4f03deb36f8fc67e181c88f787fbec97ba5f900ddbd8c46eff341722
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.1.11] - 2026-10-05
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- Drawer `show_swipe_handle: true` on an edge panel (`direction: :left`, `:right` or `:up`) raises instead of drawing the bottom sheet's horizontal pill as a bar across the panel's top. The pill is the bottom sheet's grip, as in the source, where no other direction has a handle; the option's doc and the component's rules say so.
|
|
8
|
+
- The Combobox and Command list parts declare `data-empty`, the state the engine now writes when the filter pass leaves no visible item, so the themes' `data-empty:p-0` rule on the list is live and the allowlist entry that banked it is gone.
|
|
9
|
+
- `poetry:diff` and `poetry:add` read `config/poetry_components.yml` again on a host that has declared an override: the ledger writes `created:` as a bare YAML date, which the two generators loaded without permitting it (`Psych::DisallowedClass`). The design task already permitted the date; the generators now do too.
|
|
10
|
+
|
|
11
|
+
## [0.1.10] - 2026-10-03
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- Version bump with the family; no changes in this gem.
|
|
16
|
+
|
|
3
17
|
## [0.1.9] - 2026-09-30
|
|
4
18
|
|
|
5
19
|
### Changed
|
|
@@ -531,7 +531,11 @@ module Poetry
|
|
|
531
531
|
"data-popup-open" => "multiple: the popup is open (bare while open, absent while " \
|
|
532
532
|
"closed - the input carries the flip; single's trigger owns it)"
|
|
533
533
|
}
|
|
534
|
-
part "combobox-list", "THE role=listbox - the aria-controls target of both combobox roles"
|
|
534
|
+
part "combobox-list", "THE role=listbox - the aria-controls target of both combobox roles",
|
|
535
|
+
states: {
|
|
536
|
+
"data-empty" => "the filter pass left no visible item (engine-written; the empty " \
|
|
537
|
+
"part shows and the theme drops the list padding)"
|
|
538
|
+
}
|
|
535
539
|
part "combobox-empty", "Zero-matches message - rendered hidden; the engine unhides it " \
|
|
536
540
|
"when the filter pass leaves no visible items"
|
|
537
541
|
part "combobox-group", "role=group labelled by its heading - hidden by the engine when " \
|
|
@@ -333,7 +333,11 @@ module Poetry
|
|
|
333
333
|
part "command-input", "The role=combobox filter input - real focus stays pinned here " \
|
|
334
334
|
"for the whole session; the highlight rides aria-activedescendant"
|
|
335
335
|
part "command-list", "The role=listbox holding empty/loading/items - the input's " \
|
|
336
|
-
"aria-controls target"
|
|
336
|
+
"aria-controls target",
|
|
337
|
+
states: {
|
|
338
|
+
"data-empty" => "the filter pass left no visible item (controller-written; the empty " \
|
|
339
|
+
"part shows at the same moment)"
|
|
340
|
+
}
|
|
337
341
|
part "command-empty", "Zero-matches message - rendered hidden; the controller unhides " \
|
|
338
342
|
"it when the filter pass leaves no visible items"
|
|
339
343
|
part "command-loading", "Pending affordance (role=status) - rendered hidden; the HOST " \
|
|
@@ -34,8 +34,8 @@ module Poetry
|
|
|
34
34
|
"with_title is REQUIRED (the accessible name) - the inherited Dialog rule.",
|
|
35
35
|
"direction: is the DISMISS direction: :down is the mobile bottom sheet (the default); " \
|
|
36
36
|
"left/right make an edge panel - prefer Sheet on desktop.",
|
|
37
|
-
"show_swipe_handle: true renders the grab pill
|
|
38
|
-
"gesture is discoverable.",
|
|
37
|
+
"show_swipe_handle: true renders the grab pill on a bottom sheet (direction: :down) so the " \
|
|
38
|
+
"gesture is discoverable; an edge panel has no handle and raises.",
|
|
39
39
|
"Esc and the backdrop still dismiss (the platform trap) - the swipe is an addition, " \
|
|
40
40
|
"never the only way out.",
|
|
41
41
|
"modal: false keeps the page interactive (no scrim, no focus trap) - pair a wired " \
|
|
@@ -85,7 +85,8 @@ module Poetry
|
|
|
85
85
|
"axis derive from it."
|
|
86
86
|
|
|
87
87
|
option :show_swipe_handle, :boolean, default: false,
|
|
88
|
-
doc: "Renders the grab pill so the swipe gesture is discoverable
|
|
88
|
+
doc: "Renders the grab pill so the swipe gesture is discoverable - " \
|
|
89
|
+
"direction: :down only; an edge panel raises."
|
|
89
90
|
|
|
90
91
|
option :modal, :boolean, default: true,
|
|
91
92
|
doc: "Non-modal (false) opens with show() - no top layer, no scrim, no focus trap, " \
|
|
@@ -148,6 +149,7 @@ module Poetry
|
|
|
148
149
|
def before_render
|
|
149
150
|
super
|
|
150
151
|
validate_snap_points! if snap_points.present?
|
|
152
|
+
validate_swipe_handle! if show_swipe_handle
|
|
151
153
|
end
|
|
152
154
|
|
|
153
155
|
# The parent's show_close_button does not apply: a Drawer has no
|
|
@@ -185,6 +187,17 @@ module Poetry
|
|
|
185
187
|
|
|
186
188
|
private
|
|
187
189
|
|
|
190
|
+
# Raises when the grab pill is asked for on an edge panel: the pill is
|
|
191
|
+
# the bottom sheet's horizontal grip, and an edge panel drew it as a
|
|
192
|
+
# bar across its top (verified bug); a direction other than :down has
|
|
193
|
+
# no handle, as in the source.
|
|
194
|
+
def validate_swipe_handle!
|
|
195
|
+
return if direction == :down
|
|
196
|
+
|
|
197
|
+
raise ArgumentError, "Drawer show_swipe_handle: true is the bottom sheet's grab pill - direction: :down " \
|
|
198
|
+
"only (an edge panel has no handle; drop the option or use direction: :down)"
|
|
199
|
+
end
|
|
200
|
+
|
|
188
201
|
# Raises unless the snap points are fractions or CSS lengths on a bottom drawer.
|
|
189
202
|
def validate_snap_points!
|
|
190
203
|
unless direction == :down
|
|
@@ -2406,6 +2406,10 @@ components:
|
|
|
2406
2406
|
- the input carries the flip; single''s trigger owns it)'
|
|
2407
2407
|
- name: combobox-list
|
|
2408
2408
|
description: THE role=listbox - the aria-controls target of both combobox roles
|
|
2409
|
+
states:
|
|
2410
|
+
- attr: data-empty
|
|
2411
|
+
condition: the filter pass left no visible item (engine-written; the empty
|
|
2412
|
+
part shows and the theme drops the list padding)
|
|
2409
2413
|
- name: combobox-empty
|
|
2410
2414
|
description: Zero-matches message - rendered hidden; the engine unhides it when
|
|
2411
2415
|
the filter pass leaves no visible items
|
|
@@ -2740,6 +2744,10 @@ components:
|
|
|
2740
2744
|
- name: command-list
|
|
2741
2745
|
description: The role=listbox holding empty/loading/items - the input's aria-controls
|
|
2742
2746
|
target
|
|
2747
|
+
states:
|
|
2748
|
+
- attr: data-empty
|
|
2749
|
+
condition: the filter pass left no visible item (controller-written; the empty
|
|
2750
|
+
part shows at the same moment)
|
|
2743
2751
|
- name: command-empty
|
|
2744
2752
|
description: Zero-matches message - rendered hidden; the controller unhides
|
|
2745
2753
|
it when the filter pass leaves no visible items
|
|
@@ -4374,7 +4382,8 @@ components:
|
|
|
4374
4382
|
- name: show_swipe_handle
|
|
4375
4383
|
type: boolean
|
|
4376
4384
|
default: false
|
|
4377
|
-
description: Renders the grab pill so the swipe gesture is discoverable
|
|
4385
|
+
description: 'Renders the grab pill so the swipe gesture is discoverable - direction:
|
|
4386
|
+
:down only; an edge panel raises.'
|
|
4378
4387
|
- name: snap_points
|
|
4379
4388
|
type:
|
|
4380
4389
|
description: 'Preset resting heights for a bottom sheet, ascending: fractions
|
|
@@ -4440,8 +4449,8 @@ components:
|
|
|
4440
4449
|
- with_title is REQUIRED (the accessible name) - the inherited Dialog rule.
|
|
4441
4450
|
- 'direction: is the DISMISS direction: :down is the mobile bottom sheet (the
|
|
4442
4451
|
default); left/right make an edge panel - prefer Sheet on desktop.'
|
|
4443
|
-
- 'show_swipe_handle: true renders the grab pill
|
|
4444
|
-
the gesture is discoverable.'
|
|
4452
|
+
- 'show_swipe_handle: true renders the grab pill on a bottom sheet (direction:
|
|
4453
|
+
:down) so the gesture is discoverable; an edge panel has no handle and raises.'
|
|
4445
4454
|
- Esc and the backdrop still dismiss (the platform trap) - the swipe is an addition,
|
|
4446
4455
|
never the only way out.
|
|
4447
4456
|
- 'modal: false keeps the page interactive (no scrim, no focus trap) - pair a
|
|
@@ -205,10 +205,12 @@ module Poetry
|
|
|
205
205
|
sources
|
|
206
206
|
end
|
|
207
207
|
|
|
208
|
-
# The manifest as a hash, empty when absent.
|
|
208
|
+
# The manifest as a hash, empty when absent. The overrides ledger
|
|
209
|
+
# writes `created:` as a bare YAML date, so the load permits Date
|
|
210
|
+
# (the design task does the same).
|
|
209
211
|
def manifest_config
|
|
210
212
|
path = File.join(destination_root, MANIFEST)
|
|
211
|
-
config = File.exist?(path) ? YAML.safe_load_file(path) : nil
|
|
213
|
+
config = File.exist?(path) ? YAML.safe_load_file(path, permitted_classes: [Date]) : nil
|
|
212
214
|
config.is_a?(Hash) ? config : {}
|
|
213
215
|
end
|
|
214
216
|
|
|
@@ -123,10 +123,12 @@ module Poetry
|
|
|
123
123
|
end
|
|
124
124
|
end
|
|
125
125
|
|
|
126
|
-
# The components section of the manifest, empty when absent.
|
|
126
|
+
# The components section of the manifest, empty when absent. The
|
|
127
|
+
# overrides ledger beside it writes `created:` as a bare YAML date,
|
|
128
|
+
# so the load permits Date (the design task does the same).
|
|
127
129
|
def manifest_components
|
|
128
130
|
path = File.join(destination_root, MANIFEST)
|
|
129
|
-
config = File.exist?(path) ? YAML.safe_load_file(path) : nil
|
|
131
|
+
config = File.exist?(path) ? YAML.safe_load_file(path, permitted_classes: [Date]) : nil
|
|
130
132
|
config.is_a?(Hash) && config["components"].is_a?(Hash) ? config["components"] : {}
|
|
131
133
|
end
|
|
132
134
|
|
data/lib/poetry/ui/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: poetry-ui
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.11
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matt Solt
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-
|
|
10
|
+
date: 2026-10-05 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: poetry-core
|
|
@@ -15,14 +15,14 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - '='
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: 0.1.
|
|
18
|
+
version: 0.1.11
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - '='
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: 0.1.
|
|
25
|
+
version: 0.1.11
|
|
26
26
|
description: 'The component library of Poetry, the AI-native frontend framework for
|
|
27
27
|
Rails: accessible, themeable, agent-legible ViewComponents built entirely on poetry-core''s
|
|
28
28
|
public DSL.'
|