@unabridged/midwest 0.9.0 → 0.10.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.
- package/app/assets/javascript/midwest.js +7 -2
- package/app/assets/javascript/midwest.js.map +1 -1
- package/app/assets/stylesheets/midwest.css +1 -1
- package/app/assets/stylesheets/midwest.tailwind.css +2 -1
- package/dist/css/midwest.css +1 -1
- package/dist/javascript/collection/app/components/midwest/dropdown_component/dropdown_component_controller.js +7 -2
- package/dist/javascript/collection/app/components/midwest/dropdown_component/dropdown_component_controller.js.map +1 -1
- package/dist/javascript/midwest.js +7 -2
- package/dist/javascript/midwest.js.map +1 -1
- package/package.json +1 -1
|
@@ -36,7 +36,7 @@ class Dropdown extends Controller {
|
|
|
36
36
|
};
|
|
37
37
|
get buttonEl() {
|
|
38
38
|
return this.element.parentElement?.querySelector(
|
|
39
|
-
`[popovertarget="${this.element.id}"]`
|
|
39
|
+
`[popovertarget="${this.element.id}"]:not([popovertargetaction="hide"])`
|
|
40
40
|
);
|
|
41
41
|
}
|
|
42
42
|
get isComputed() {
|
|
@@ -57,6 +57,9 @@ class Dropdown extends Controller {
|
|
|
57
57
|
const items = this.menuItems;
|
|
58
58
|
if (items.length === 0)
|
|
59
59
|
return;
|
|
60
|
+
if (!["ArrowDown", "ArrowUp", "Home", "End", "Escape", "Tab"].includes(event.key))
|
|
61
|
+
return;
|
|
62
|
+
event.stopPropagation();
|
|
60
63
|
const currentIndex = items.findIndex((item) => item === document.activeElement);
|
|
61
64
|
switch (event.key) {
|
|
62
65
|
case "ArrowDown": {
|
|
@@ -82,7 +85,7 @@ class Dropdown extends Controller {
|
|
|
82
85
|
case "Escape":
|
|
83
86
|
event.preventDefault();
|
|
84
87
|
this.element.hidePopover();
|
|
85
|
-
this.buttonEl
|
|
88
|
+
requestAnimationFrame(() => this.buttonEl?.focus());
|
|
86
89
|
break;
|
|
87
90
|
case "Tab":
|
|
88
91
|
this.element.hidePopover();
|
|
@@ -96,6 +99,8 @@ class Dropdown extends Controller {
|
|
|
96
99
|
this.element.querySelectorAll(
|
|
97
100
|
'[role="menuitem"]:not([disabled]):not([aria-disabled="true"])'
|
|
98
101
|
)
|
|
102
|
+
).filter(
|
|
103
|
+
(item) => item.closest('[data-controller~="midwest-dropdown"]') === this.element && getComputedStyle(item).display !== "none"
|
|
99
104
|
);
|
|
100
105
|
}
|
|
101
106
|
computedCB(entries) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown_component_controller.js","sources":["../../../../../../../app/components/midwest/dropdown_component/dropdown_component_controller.ts"],"sourcesContent":["\nimport { Controller } from '@hotwired/stimulus'\n\nimport {\n computePosition,\n autoPlacement,\n shift,\n offset,\n autoUpdate,\n hide,\n Placement\n} from '@floating-ui/dom'\n\nexport default class Dropdown extends Controller<HTMLFormElement> {\n static values = {\n computed: { type: Boolean, default: false },\n supported: { type: Boolean, default: true },\n align: { type: String, default: 'right' }\n }\n\n declare computedValue: boolean\n declare supportedValue: boolean\n declare alignValue: Placement\n declare readonly hasComputedValue: boolean\n declare readonly hasSupportedValue: boolean\n declare readonly hasAlignValue: boolean\n\n observer = new IntersectionObserver(this.computedCB.bind(this), { threshold: 1 })\n\n cleanup: any\n\n connect () {\n this.supportedValue = CSS.supports('anchor-name: --myanchor')\n\n if (this.isComputed) {\n this.buttonEl.addEventListener('click', this.unsupportedClickCB)\n this.cleanup = autoUpdate(this.buttonEl, this.element, async () => await this.computation())\n }\n\n this.element.addEventListener('toggle', this.addOpenedClass)\n this.element.addEventListener('turbo:click', this.closeIfOpen)\n this.element.addEventListener('popover:close', this.closeIfOpen)\n }\n\n disconnect () {\n if (this.isComputed) {\n this.cleanup()\n }\n\n this.buttonEl.removeEventListener('click', this.unsupportedClickCB)\n this.element.removeEventListener('toggle', this.addOpenedClass)\n this.element.removeEventListener('keydown', this.handleKeydown)\n this.element.removeEventListener('turbo:click', this.closeIfOpen)\n this.element.removeEventListener('popover:close', this.closeIfOpen)\n }\n\n unsupportedClickCB = (event: MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n this.element.togglePopover()\n }\n\n get buttonEl () {\n return this.element.parentElement?.querySelector(\n `[popovertarget=\"${this.element.id}\"]`\n ) as HTMLButtonElement\n }\n\n get isComputed () {\n return this.computedValue || !this.supportedValue\n }\n\n addOpenedClass = (event: any) => {\n const isOpen = event.newState === 'open'\n this.buttonEl.classList.toggle('opened', isOpen)\n this.buttonEl.setAttribute('aria-expanded', String(isOpen))\n\n if (isOpen) {\n this.element.addEventListener('keydown', this.handleKeydown)\n requestAnimationFrame(() => this.menuItems[0]?.focus())\n } else {\n this.element.removeEventListener('keydown', this.handleKeydown)\n }\n }\n\n private handleKeydown = (event: KeyboardEvent) => {\n const items = this.menuItems\n if (items.length === 0) return\n\n const currentIndex = items.findIndex(item => item === document.activeElement)\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault()\n const next = currentIndex < items.length - 1 ? currentIndex + 1 : 0\n items[next].focus()\n break\n }\n case 'ArrowUp': {\n event.preventDefault()\n const prev = currentIndex > 0 ? currentIndex - 1 : items.length - 1\n items[prev].focus()\n break\n }\n case 'Home':\n event.preventDefault()\n items[0].focus()\n break\n case 'End':\n event.preventDefault()\n items[items.length - 1].focus()\n break\n case 'Escape':\n event.preventDefault()\n this.element.hidePopover()\n this.buttonEl.focus()\n break\n case 'Tab':\n this.element.hidePopover()\n break\n default:\n return\n }\n }\n\n private get menuItems (): HTMLElement[] {\n return Array.from(\n this.element.querySelectorAll<HTMLElement>(\n '[role=\"menuitem\"]:not([disabled]):not([aria-disabled=\"true\"])'\n )\n )\n }\n\n computedCB (entries: IntersectionObserverEntry[]) {\n entries.forEach(async () => {\n this.computation()\n })\n }\n\n closeIfOpen = () => {\n this.element.hidePopover()\n }\n\n async computation () {\n if (!this.buttonEl) return\n if (!this.isComputed) return\n\n const { x, y, middlewareData } = await computePosition(this.buttonEl, this.element, {\n strategy: 'fixed',\n placement: this.alignValue,\n middleware: [\n hide(),\n offset(6),\n autoPlacement({\n allowedPlacements: [\n 'left-start',\n 'left-end',\n 'right-start',\n 'right-end',\n 'bottom-end',\n 'bottom-start'\n ],\n crossAxis: true\n }),\n shift({ padding: 24 })\n ]\n })\n\n if (!middlewareData || (middlewareData.hide == null)) return\n\n Object.assign(this.element.style, {\n left: `${x}px`,\n top: `${y}px`,\n visibility: middlewareData.hide.referenceHidden ? 'hidden' : 'visible'\n })\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dropdown_component_controller.js","sources":["../../../../../../../app/components/midwest/dropdown_component/dropdown_component_controller.ts"],"sourcesContent":["\nimport { Controller } from '@hotwired/stimulus'\n\nimport {\n computePosition,\n autoPlacement,\n shift,\n offset,\n autoUpdate,\n hide,\n Placement\n} from '@floating-ui/dom'\n\nexport default class Dropdown extends Controller<HTMLFormElement> {\n static values = {\n computed: { type: Boolean, default: false },\n supported: { type: Boolean, default: true },\n align: { type: String, default: 'right' }\n }\n\n declare computedValue: boolean\n declare supportedValue: boolean\n declare alignValue: Placement\n declare readonly hasComputedValue: boolean\n declare readonly hasSupportedValue: boolean\n declare readonly hasAlignValue: boolean\n\n observer = new IntersectionObserver(this.computedCB.bind(this), { threshold: 1 })\n\n cleanup: any\n\n connect () {\n this.supportedValue = CSS.supports('anchor-name: --myanchor')\n\n if (this.isComputed) {\n this.buttonEl.addEventListener('click', this.unsupportedClickCB)\n this.cleanup = autoUpdate(this.buttonEl, this.element, async () => await this.computation())\n }\n\n this.element.addEventListener('toggle', this.addOpenedClass)\n this.element.addEventListener('turbo:click', this.closeIfOpen)\n this.element.addEventListener('popover:close', this.closeIfOpen)\n }\n\n disconnect () {\n if (this.isComputed) {\n this.cleanup()\n }\n\n this.buttonEl.removeEventListener('click', this.unsupportedClickCB)\n this.element.removeEventListener('toggle', this.addOpenedClass)\n this.element.removeEventListener('keydown', this.handleKeydown)\n this.element.removeEventListener('turbo:click', this.closeIfOpen)\n this.element.removeEventListener('popover:close', this.closeIfOpen)\n }\n\n unsupportedClickCB = (event: MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n this.element.togglePopover()\n }\n\n get buttonEl () {\n return this.element.parentElement?.querySelector(\n `[popovertarget=\"${this.element.id}\"]:not([popovertargetaction=\"hide\"])`\n ) as HTMLButtonElement\n }\n\n get isComputed () {\n return this.computedValue || !this.supportedValue\n }\n\n addOpenedClass = (event: any) => {\n const isOpen = event.newState === 'open'\n this.buttonEl.classList.toggle('opened', isOpen)\n this.buttonEl.setAttribute('aria-expanded', String(isOpen))\n\n if (isOpen) {\n this.element.addEventListener('keydown', this.handleKeydown)\n requestAnimationFrame(() => this.menuItems[0]?.focus())\n } else {\n this.element.removeEventListener('keydown', this.handleKeydown)\n }\n }\n\n private handleKeydown = (event: KeyboardEvent) => {\n const items = this.menuItems\n if (items.length === 0) return\n\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End', 'Escape', 'Tab'].includes(event.key)) return\n\n event.stopPropagation()\n\n const currentIndex = items.findIndex(item => item === document.activeElement)\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault()\n const next = currentIndex < items.length - 1 ? currentIndex + 1 : 0\n items[next].focus()\n break\n }\n case 'ArrowUp': {\n event.preventDefault()\n const prev = currentIndex > 0 ? currentIndex - 1 : items.length - 1\n items[prev].focus()\n break\n }\n case 'Home':\n event.preventDefault()\n items[0].focus()\n break\n case 'End':\n event.preventDefault()\n items[items.length - 1].focus()\n break\n case 'Escape':\n event.preventDefault()\n this.element.hidePopover()\n requestAnimationFrame(() => this.buttonEl?.focus())\n break\n case 'Tab':\n this.element.hidePopover()\n break\n default:\n return\n }\n }\n\n private get menuItems (): HTMLElement[] {\n return Array.from(\n this.element.querySelectorAll<HTMLElement>(\n '[role=\"menuitem\"]:not([disabled]):not([aria-disabled=\"true\"])'\n )\n ).filter(item =>\n item.closest('[data-controller~=\"midwest-dropdown\"]') === this.element &&\n getComputedStyle(item).display !== 'none'\n )\n }\n\n computedCB (entries: IntersectionObserverEntry[]) {\n entries.forEach(async () => {\n this.computation()\n })\n }\n\n closeIfOpen = () => {\n this.element.hidePopover()\n }\n\n async computation () {\n if (!this.buttonEl) return\n if (!this.isComputed) return\n\n const { x, y, middlewareData } = await computePosition(this.buttonEl, this.element, {\n strategy: 'fixed',\n placement: this.alignValue,\n middleware: [\n hide(),\n offset(6),\n autoPlacement({\n allowedPlacements: [\n 'left-start',\n 'left-end',\n 'right-start',\n 'right-end',\n 'bottom-end',\n 'bottom-start'\n ],\n crossAxis: true\n }),\n shift({ padding: 24 })\n ]\n })\n\n if (!middlewareData || (middlewareData.hide == null)) return\n\n Object.assign(this.element.style, {\n left: `${x}px`,\n top: `${y}px`,\n visibility: middlewareData.hide.referenceHidden ? 'hidden' : 'visible'\n })\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -2822,7 +2822,7 @@ class Dropdown extends Controller {
|
|
|
2822
2822
|
};
|
|
2823
2823
|
get buttonEl() {
|
|
2824
2824
|
return this.element.parentElement?.querySelector(
|
|
2825
|
-
`[popovertarget="${this.element.id}"]`
|
|
2825
|
+
`[popovertarget="${this.element.id}"]:not([popovertargetaction="hide"])`
|
|
2826
2826
|
);
|
|
2827
2827
|
}
|
|
2828
2828
|
get isComputed() {
|
|
@@ -2843,6 +2843,9 @@ class Dropdown extends Controller {
|
|
|
2843
2843
|
const items = this.menuItems;
|
|
2844
2844
|
if (items.length === 0)
|
|
2845
2845
|
return;
|
|
2846
|
+
if (!["ArrowDown", "ArrowUp", "Home", "End", "Escape", "Tab"].includes(event.key))
|
|
2847
|
+
return;
|
|
2848
|
+
event.stopPropagation();
|
|
2846
2849
|
const currentIndex = items.findIndex((item) => item === document.activeElement);
|
|
2847
2850
|
switch (event.key) {
|
|
2848
2851
|
case "ArrowDown": {
|
|
@@ -2868,7 +2871,7 @@ class Dropdown extends Controller {
|
|
|
2868
2871
|
case "Escape":
|
|
2869
2872
|
event.preventDefault();
|
|
2870
2873
|
this.element.hidePopover();
|
|
2871
|
-
this.buttonEl
|
|
2874
|
+
requestAnimationFrame(() => this.buttonEl?.focus());
|
|
2872
2875
|
break;
|
|
2873
2876
|
case "Tab":
|
|
2874
2877
|
this.element.hidePopover();
|
|
@@ -2882,6 +2885,8 @@ class Dropdown extends Controller {
|
|
|
2882
2885
|
this.element.querySelectorAll(
|
|
2883
2886
|
'[role="menuitem"]:not([disabled]):not([aria-disabled="true"])'
|
|
2884
2887
|
)
|
|
2888
|
+
).filter(
|
|
2889
|
+
(item) => item.closest('[data-controller~="midwest-dropdown"]') === this.element && getComputedStyle(item).display !== "none"
|
|
2885
2890
|
);
|
|
2886
2891
|
}
|
|
2887
2892
|
computedCB(entries) {
|