ember-primitives 0.40.0 → 0.41.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/README.md +91 -0
- package/declarations/-private.d.ts +1 -0
- package/declarations/-private.d.ts.map +1 -0
- package/declarations/color-scheme.d.ts +1 -0
- package/declarations/color-scheme.d.ts.map +1 -0
- package/declarations/components/-private/typed-elements.d.ts +1 -0
- package/declarations/components/-private/typed-elements.d.ts.map +1 -0
- package/declarations/components/-private/utils.d.ts +1 -0
- package/declarations/components/-private/utils.d.ts.map +1 -0
- package/declarations/components/accordion/content.d.ts +1 -0
- package/declarations/components/accordion/content.d.ts.map +1 -0
- package/declarations/components/accordion/header.d.ts +1 -0
- package/declarations/components/accordion/header.d.ts.map +1 -0
- package/declarations/components/accordion/item.d.ts +1 -0
- package/declarations/components/accordion/item.d.ts.map +1 -0
- package/declarations/components/accordion/public.d.ts +1 -0
- package/declarations/components/accordion/public.d.ts.map +1 -0
- package/declarations/components/accordion/trigger.d.ts +1 -0
- package/declarations/components/accordion/trigger.d.ts.map +1 -0
- package/declarations/components/accordion.d.ts +1 -0
- package/declarations/components/accordion.d.ts.map +1 -0
- package/declarations/components/avatar.d.ts +1 -0
- package/declarations/components/avatar.d.ts.map +1 -0
- package/declarations/components/dialog.d.ts +1 -0
- package/declarations/components/dialog.d.ts.map +1 -0
- package/declarations/components/external-link.d.ts +1 -0
- package/declarations/components/external-link.d.ts.map +1 -0
- package/declarations/components/form.d.ts +1 -0
- package/declarations/components/form.d.ts.map +1 -0
- package/declarations/components/keys.d.ts +1 -0
- package/declarations/components/keys.d.ts.map +1 -0
- package/declarations/components/layout/hero.d.ts +1 -0
- package/declarations/components/layout/hero.d.ts.map +1 -0
- package/declarations/components/layout/sticky-footer.d.ts +1 -0
- package/declarations/components/layout/sticky-footer.d.ts.map +1 -0
- package/declarations/components/link.d.ts +1 -0
- package/declarations/components/link.d.ts.map +1 -0
- package/declarations/components/menu.d.ts +1 -0
- package/declarations/components/menu.d.ts.map +1 -0
- package/declarations/components/one-time-password/buttons.d.ts +1 -0
- package/declarations/components/one-time-password/buttons.d.ts.map +1 -0
- package/declarations/components/one-time-password/index.d.ts +1 -0
- package/declarations/components/one-time-password/index.d.ts.map +1 -0
- package/declarations/components/one-time-password/input.d.ts +1 -0
- package/declarations/components/one-time-password/input.d.ts.map +1 -0
- package/declarations/components/one-time-password/otp.d.ts +1 -0
- package/declarations/components/one-time-password/otp.d.ts.map +1 -0
- package/declarations/components/one-time-password/utils.d.ts +1 -0
- package/declarations/components/one-time-password/utils.d.ts.map +1 -0
- package/declarations/components/popover.d.ts +1 -0
- package/declarations/components/popover.d.ts.map +1 -0
- package/declarations/components/portal-targets.d.ts +1 -0
- package/declarations/components/portal-targets.d.ts.map +1 -0
- package/declarations/components/portal.d.ts +1 -0
- package/declarations/components/portal.d.ts.map +1 -0
- package/declarations/components/progress.d.ts +1 -0
- package/declarations/components/progress.d.ts.map +1 -0
- package/declarations/components/rating/index.d.ts +1 -0
- package/declarations/components/rating/index.d.ts.map +1 -0
- package/declarations/components/rating/public-types.d.ts +1 -0
- package/declarations/components/rating/public-types.d.ts.map +1 -0
- package/declarations/components/rating/range.d.ts +1 -0
- package/declarations/components/rating/range.d.ts.map +1 -0
- package/declarations/components/rating/stars.d.ts +1 -0
- package/declarations/components/rating/stars.d.ts.map +1 -0
- package/declarations/components/rating/state.d.ts +1 -0
- package/declarations/components/rating/state.d.ts.map +1 -0
- package/declarations/components/rating/utils.d.ts +1 -0
- package/declarations/components/rating/utils.d.ts.map +1 -0
- package/declarations/components/rating.d.ts +1 -0
- package/declarations/components/rating.d.ts.map +1 -0
- package/declarations/components/scroller.d.ts +1 -0
- package/declarations/components/scroller.d.ts.map +1 -0
- package/declarations/components/shadowed.d.ts +1 -0
- package/declarations/components/shadowed.d.ts.map +1 -0
- package/declarations/components/switch.d.ts +1 -0
- package/declarations/components/switch.d.ts.map +1 -0
- package/declarations/components/tabs.d.ts +233 -0
- package/declarations/components/tabs.d.ts.map +1 -0
- package/declarations/components/toggle-group.d.ts +1 -0
- package/declarations/components/toggle-group.d.ts.map +1 -0
- package/declarations/components/toggle.d.ts +1 -0
- package/declarations/components/toggle.d.ts.map +1 -0
- package/declarations/components/violations.css.d.ts +2 -0
- package/declarations/components/violations.css.d.ts.map +1 -0
- package/declarations/components/visually-hidden.d.ts +1 -0
- package/declarations/components/visually-hidden.d.ts.map +1 -0
- package/declarations/components/zoetrope/index.d.ts +1 -0
- package/declarations/components/zoetrope/index.d.ts.map +1 -0
- package/declarations/components/zoetrope/types.d.ts +1 -0
- package/declarations/components/zoetrope/types.d.ts.map +1 -0
- package/declarations/components/zoetrope.d.ts +1 -0
- package/declarations/components/zoetrope.d.ts.map +1 -0
- package/declarations/dom-context.d.ts +1 -0
- package/declarations/dom-context.d.ts.map +1 -0
- package/declarations/floating-ui/component.d.ts +1 -0
- package/declarations/floating-ui/component.d.ts.map +1 -0
- package/declarations/floating-ui/middleware.d.ts +1 -0
- package/declarations/floating-ui/middleware.d.ts.map +1 -0
- package/declarations/floating-ui/modifier.d.ts +1 -0
- package/declarations/floating-ui/modifier.d.ts.map +1 -0
- package/declarations/floating-ui.d.ts +1 -0
- package/declarations/floating-ui.d.ts.map +1 -0
- package/declarations/head.d.ts +1 -0
- package/declarations/head.d.ts.map +1 -0
- package/declarations/helpers/body-class.d.ts +1 -0
- package/declarations/helpers/body-class.d.ts.map +1 -0
- package/declarations/helpers/link.d.ts +1 -0
- package/declarations/helpers/link.d.ts.map +1 -0
- package/declarations/helpers/service.d.ts +1 -0
- package/declarations/helpers/service.d.ts.map +1 -0
- package/declarations/helpers.d.ts +1 -0
- package/declarations/helpers.d.ts.map +1 -0
- package/declarations/iframe.d.ts +1 -0
- package/declarations/iframe.d.ts.map +1 -0
- package/declarations/index.d.ts +1 -0
- package/declarations/index.d.ts.map +1 -0
- package/declarations/load.d.ts +1 -0
- package/declarations/load.d.ts.map +1 -0
- package/declarations/narrowing.d.ts +1 -0
- package/declarations/narrowing.d.ts.map +1 -0
- package/declarations/on-resize.d.ts +1 -0
- package/declarations/on-resize.d.ts.map +1 -0
- package/declarations/proper-links.d.ts +1 -0
- package/declarations/proper-links.d.ts.map +1 -0
- package/declarations/qp.d.ts +1 -0
- package/declarations/qp.d.ts.map +1 -0
- package/declarations/store.d.ts +1 -0
- package/declarations/store.d.ts.map +1 -0
- package/declarations/styles.css.d.ts +1 -0
- package/declarations/styles.css.d.ts.map +1 -0
- package/declarations/tabster.d.ts +1 -0
- package/declarations/tabster.d.ts.map +1 -0
- package/declarations/template-registry.d.ts +1 -0
- package/declarations/template-registry.d.ts.map +1 -0
- package/declarations/test-support/a11y.d.ts +1 -0
- package/declarations/test-support/a11y.d.ts.map +1 -0
- package/declarations/test-support/index.d.ts +1 -0
- package/declarations/test-support/index.d.ts.map +1 -0
- package/declarations/test-support/otp.d.ts +1 -0
- package/declarations/test-support/otp.d.ts.map +1 -0
- package/declarations/test-support/rating.d.ts +1 -0
- package/declarations/test-support/rating.d.ts.map +1 -0
- package/declarations/test-support/routing.d.ts +1 -0
- package/declarations/test-support/routing.d.ts.map +1 -0
- package/declarations/test-support/zoetrope.d.ts +1 -0
- package/declarations/test-support/zoetrope.d.ts.map +1 -0
- package/declarations/type-utils.d.ts +1 -0
- package/declarations/type-utils.d.ts.map +1 -0
- package/declarations/utils.d.ts +1 -0
- package/declarations/utils.d.ts.map +1 -0
- package/dist/-private.js +1 -0
- package/dist/-private.js.map +1 -1
- package/dist/color-scheme.js +1 -0
- package/dist/color-scheme.js.map +1 -1
- package/dist/components/-private/typed-elements.js +1 -0
- package/dist/components/-private/typed-elements.js.map +1 -1
- package/dist/components/-private/utils.js +1 -0
- package/dist/components/-private/utils.js.map +1 -1
- package/dist/components/accordion/content.js +2 -1
- package/dist/components/accordion/content.js.map +1 -1
- package/dist/components/accordion/header.js +2 -1
- package/dist/components/accordion/header.js.map +1 -1
- package/dist/components/accordion/item.js +2 -1
- package/dist/components/accordion/item.js.map +1 -1
- package/dist/components/accordion/trigger.js +2 -1
- package/dist/components/accordion/trigger.js.map +1 -1
- package/dist/components/accordion.js +2 -1
- package/dist/components/accordion.js.map +1 -1
- package/dist/components/avatar.js +1 -0
- package/dist/components/avatar.js.map +1 -1
- package/dist/components/dialog.js +1 -0
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/external-link.js +1 -0
- package/dist/components/external-link.js.map +1 -1
- package/dist/components/form.js +1 -0
- package/dist/components/form.js.map +1 -1
- package/dist/components/keys.js +1 -0
- package/dist/components/keys.js.map +1 -1
- package/dist/components/layout/hero.js +3 -1
- package/dist/components/layout/hero.js.map +1 -1
- package/dist/components/layout/sticky-footer.js +3 -1
- package/dist/components/layout/sticky-footer.js.map +1 -1
- package/dist/components/link.js +1 -0
- package/dist/components/link.js.map +1 -1
- package/dist/components/menu.js +1 -0
- package/dist/components/menu.js.map +1 -1
- package/dist/components/one-time-password/buttons.js +1 -0
- package/dist/components/one-time-password/buttons.js.map +1 -1
- package/dist/components/one-time-password/index.js +1 -0
- package/dist/components/one-time-password/index.js.map +1 -1
- package/dist/components/one-time-password/input.js +1 -0
- package/dist/components/one-time-password/input.js.map +1 -1
- package/dist/components/one-time-password/otp.js +1 -0
- package/dist/components/one-time-password/otp.js.map +1 -1
- package/dist/components/one-time-password/utils.js +1 -0
- package/dist/components/one-time-password/utils.js.map +1 -1
- package/dist/components/popover.js +1 -0
- package/dist/components/popover.js.map +1 -1
- package/dist/components/portal-targets.js +1 -0
- package/dist/components/portal-targets.js.map +1 -1
- package/dist/components/portal.js +1 -0
- package/dist/components/portal.js.map +1 -1
- package/dist/components/progress.js +1 -0
- package/dist/components/progress.js.map +1 -1
- package/dist/components/rating/index.js +1 -0
- package/dist/components/rating/index.js.map +1 -1
- package/dist/components/rating/range.js +1 -0
- package/dist/components/rating/range.js.map +1 -1
- package/dist/components/rating/stars.js +1 -0
- package/dist/components/rating/stars.js.map +1 -1
- package/dist/components/rating/state.js +1 -0
- package/dist/components/rating/state.js.map +1 -1
- package/dist/components/rating/utils.js +1 -0
- package/dist/components/rating/utils.js.map +1 -1
- package/dist/components/rating.js +1 -0
- package/dist/components/scroller.js +1 -0
- package/dist/components/scroller.js.map +1 -1
- package/dist/components/shadowed.js +1 -0
- package/dist/components/shadowed.js.map +1 -1
- package/dist/components/switch.js +1 -0
- package/dist/components/switch.js.map +1 -1
- package/dist/components/tabs.js +218 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/toggle-group.js +1 -0
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/toggle.js +1 -0
- package/dist/components/toggle.js.map +1 -1
- package/dist/components/violations.css.js +3 -0
- package/dist/components/violations.css.js.map +1 -0
- package/dist/components/visually-hidden.js +2 -1
- package/dist/components/visually-hidden.js.map +1 -1
- package/dist/components/zoetrope/index.js +3 -1
- package/dist/components/zoetrope/index.js.map +1 -1
- package/dist/components/zoetrope.js +1 -0
- package/dist/dom-context.js +2 -1
- package/dist/dom-context.js.map +1 -1
- package/dist/floating-ui/component.js +1 -0
- package/dist/floating-ui/component.js.map +1 -1
- package/dist/floating-ui/middleware.js +1 -0
- package/dist/floating-ui/middleware.js.map +1 -1
- package/dist/floating-ui/modifier.js +1 -0
- package/dist/floating-ui/modifier.js.map +1 -1
- package/dist/floating-ui.js +1 -0
- package/dist/floating-ui.js.map +1 -1
- package/dist/head.js +1 -0
- package/dist/head.js.map +1 -1
- package/dist/helpers/body-class.js +1 -0
- package/dist/helpers/body-class.js.map +1 -1
- package/dist/helpers/link.js +1 -0
- package/dist/helpers/link.js.map +1 -1
- package/dist/helpers/service.js +1 -0
- package/dist/helpers/service.js.map +1 -1
- package/dist/helpers.js +1 -0
- package/dist/helpers.js.map +1 -1
- package/dist/iframe.js +1 -0
- package/dist/iframe.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/{item-D6pwWzMs.js → item-CwIzoqlC.js} +2 -1
- package/dist/item-CwIzoqlC.js.map +1 -0
- package/dist/load.js +1 -0
- package/dist/load.js.map +1 -1
- package/dist/narrowing.js +1 -0
- package/dist/narrowing.js.map +1 -1
- package/dist/on-resize.js +1 -0
- package/dist/on-resize.js.map +1 -1
- package/dist/proper-links.js +1 -0
- package/dist/proper-links.js.map +1 -1
- package/dist/qp.js +1 -0
- package/dist/qp.js.map +1 -1
- package/dist/store.js +1 -0
- package/dist/store.js.map +1 -1
- package/dist/styles.css.js +2 -1
- package/dist/tabster.js +1 -0
- package/dist/tabster.js.map +1 -1
- package/dist/test-support/a11y.js +1 -0
- package/dist/test-support/a11y.js.map +1 -1
- package/dist/test-support/index.js +1 -0
- package/dist/test-support/index.js.map +1 -1
- package/dist/test-support/otp.js +1 -0
- package/dist/test-support/otp.js.map +1 -1
- package/dist/test-support/rating.js +1 -0
- package/dist/test-support/rating.js.map +1 -1
- package/dist/test-support/routing.js +1 -0
- package/dist/test-support/routing.js.map +1 -1
- package/dist/test-support/zoetrope.js +1 -0
- package/dist/test-support/zoetrope.js.map +1 -1
- package/dist/utils.js +1 -0
- package/dist/utils.js.map +1 -1
- package/dist/visually-hidden-CGP1FSjt.js +3 -0
- package/dist/visually-hidden-CGP1FSjt.js.map +1 -0
- package/package.json +23 -25
- package/dist/item-D6pwWzMs.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal.js","sources":[
|
|
1
|
+
{"version":3,"file":"portal.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.js","sources":[
|
|
1
|
+
{"version":3,"file":"progress.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"range.js","sources":[
|
|
1
|
+
{"version":3,"file":"range.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stars.js","sources":[
|
|
1
|
+
{"version":3,"file":"stars.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sources":[
|
|
1
|
+
{"version":3,"file":"state.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":[
|
|
1
|
+
{"version":3,"file":"utils.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroller.js","sources":[
|
|
1
|
+
{"version":3,"file":"scroller.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shadowed.js","sources":[
|
|
1
|
+
{"version":3,"file":"shadowed.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.js","sources":[
|
|
1
|
+
{"version":3,"file":"switch.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
|
|
2
|
+
import Component from '@glimmer/component';
|
|
3
|
+
import { tracked } from '@glimmer/tracking';
|
|
4
|
+
import { isDestroyed, isDestroying } from '@ember/destroyable';
|
|
5
|
+
import { fn } from '@ember/helper';
|
|
6
|
+
import { on } from '@ember/modifier';
|
|
7
|
+
import { next } from '@ember/runloop';
|
|
8
|
+
import { getTabsterAttribute, MoverDirections } from 'tabster';
|
|
9
|
+
import { uniqueId } from '../utils.js';
|
|
10
|
+
import { Portal } from './portal.js';
|
|
11
|
+
import { buildWaiter } from '@ember/test-waiters';
|
|
12
|
+
import { precompileTemplate } from '@ember/template-compilation';
|
|
13
|
+
import { setComponentTemplate } from '@ember/component';
|
|
14
|
+
import templateOnly from '@ember/component/template-only';
|
|
15
|
+
import { g, i } from 'decorator-transforms/runtime';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* References:
|
|
19
|
+
* - https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/tablist_role
|
|
20
|
+
* - https://www.w3.org/WAI/ARIA/apg/patterns/tabs/
|
|
21
|
+
*
|
|
22
|
+
*
|
|
23
|
+
* Keyboard behaviors (optionally) provided by tabster
|
|
24
|
+
*/
|
|
25
|
+
const UNSET = Symbol.for("ember-primitives:tabs:unset");
|
|
26
|
+
const TABSTER_CONFIG = getTabsterAttribute({
|
|
27
|
+
mover: {
|
|
28
|
+
direction: MoverDirections.Both,
|
|
29
|
+
cyclic: true,
|
|
30
|
+
memorizeCurrent: true
|
|
31
|
+
},
|
|
32
|
+
deloser: {}
|
|
33
|
+
}, true);
|
|
34
|
+
const TabLink = setComponentTemplate(precompileTemplate("\n <a href=\"##missing##\" ...attributes role=\"tab\" aria-controls={{@panelId}} id={{@id}}>\n {{yield}}\n </a>\n", {
|
|
35
|
+
strictMode: true
|
|
36
|
+
}), templateOnly());
|
|
37
|
+
const TabButton = setComponentTemplate(precompileTemplate("\n <button ...attributes role=\"tab\" type=\"button\" aria-controls={{@panelId}} aria-selected={{String (@state.isActive @id @value)}} id={{@id}} {{on \"click\" @handleClick}} {{!-- The Types for modifier are wrong --}} {{!-- @glint-expect-error--}} {{(if @state.isAutomatic (modifier on \"focus\" @handleClick))}}>\n {{yield}}\n </button>\n", {
|
|
38
|
+
strictMode: true,
|
|
39
|
+
scope: () => ({
|
|
40
|
+
String,
|
|
41
|
+
on
|
|
42
|
+
})
|
|
43
|
+
}), templateOnly());
|
|
44
|
+
const TabContent = setComponentTemplate(precompileTemplate("\n <Portal @to=\"#{{@state.tabpanelId}}\" @append={{true}}>\n {{#if (@state.isActive @tabId)}}\n <div ...attributes role=\"tabpanel\" aria-labelledby={{@tabId}} id={{@id}}>\n {{yield}}\n </div>\n {{/if}}\n </Portal>\n", {
|
|
45
|
+
strictMode: true,
|
|
46
|
+
scope: () => ({
|
|
47
|
+
Portal
|
|
48
|
+
})
|
|
49
|
+
}), templateOnly());
|
|
50
|
+
function isString(x) {
|
|
51
|
+
return typeof x === "string";
|
|
52
|
+
}
|
|
53
|
+
function makeTab(tabButton, tabLink) {
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
|
|
55
|
+
tabButton.Link = tabLink;
|
|
56
|
+
return tabButton;
|
|
57
|
+
}
|
|
58
|
+
class TabContainer extends Component {
|
|
59
|
+
id = `ember-primitives__tab-${uniqueId()}`;
|
|
60
|
+
get tabId() {
|
|
61
|
+
return `${this.id}__tab`;
|
|
62
|
+
}
|
|
63
|
+
get panelId() {
|
|
64
|
+
return `${this.id}__panel`;
|
|
65
|
+
}
|
|
66
|
+
get label() {
|
|
67
|
+
return this.args.label ?? this.tabId;
|
|
68
|
+
}
|
|
69
|
+
static {
|
|
70
|
+
setComponentTemplate(precompileTemplate("\n {{#if @label}}\n <TabButton @state={{@state}} @id={{this.tabId}} @value={{@value}} @panelId={{this.panelId}} @handleClick={{fn @state.handleChange this.tabId @value}}>\n {{#if (isString @label)}}\n {{@label}}\n {{else}}\n <@label />\n {{/if}}\n </TabButton>\n\n <TabContent @state={{@state}} @id={{this.panelId}} @tabId={{this.tabId}}>\n {{#if @content}}\n {{#if (isString @content)}}\n {{@content}}\n {{else}}\n <@content />\n {{/if}}\n {{else}}\n {{yield}}\n {{/if}}\n </TabContent>\n {{else}}\n {{yield (makeTab (component TabButton state=@state value=@value id=this.tabId panelId=this.panelId handleClick=(fn @state.handleChange this.tabId @value)) (component TabLink state=@state id=this.tabId panelId=this.panelId)) (component TabContent state=@state id=this.panelId tabId=this.tabId)}}\n {{/if}}\n ", {
|
|
71
|
+
strictMode: true,
|
|
72
|
+
scope: () => ({
|
|
73
|
+
TabButton,
|
|
74
|
+
fn,
|
|
75
|
+
isString,
|
|
76
|
+
TabContent,
|
|
77
|
+
makeTab,
|
|
78
|
+
TabLink
|
|
79
|
+
})
|
|
80
|
+
}), this);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const Label = setComponentTemplate(precompileTemplate("\n <Portal @to=\"#{{@state.labelId}}\">\n {{yield}}\n </Portal>\n", {
|
|
84
|
+
strictMode: true,
|
|
85
|
+
scope: () => ({
|
|
86
|
+
Portal
|
|
87
|
+
})
|
|
88
|
+
}), templateOnly());
|
|
89
|
+
/**
|
|
90
|
+
* We're doing old skool hax with this, so we don't need to care about what the types think, really
|
|
91
|
+
*/
|
|
92
|
+
function makeAPI(tabContainer, labelComponent) {
|
|
93
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment
|
|
94
|
+
tabContainer.Label = labelComponent;
|
|
95
|
+
return tabContainer;
|
|
96
|
+
}
|
|
97
|
+
const stateWaiter = buildWaiter("ember-primitives:tabs");
|
|
98
|
+
/**
|
|
99
|
+
* State bucket passed around to all the sub-components.
|
|
100
|
+
*
|
|
101
|
+
* Sort of a "Context", but with a bit of prop-drilling (which is more efficient than dom-context)
|
|
102
|
+
*/
|
|
103
|
+
class TabState {
|
|
104
|
+
static {
|
|
105
|
+
g(this.prototype, "_active", [tracked], function () {
|
|
106
|
+
return null;
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
#_active = (i(this, "_active"), void 0);
|
|
110
|
+
static {
|
|
111
|
+
g(this.prototype, "_label", [tracked]);
|
|
112
|
+
}
|
|
113
|
+
#_label = (i(this, "_label"), void 0);
|
|
114
|
+
#first = null;
|
|
115
|
+
id;
|
|
116
|
+
labelId;
|
|
117
|
+
tabpanelId;
|
|
118
|
+
#token;
|
|
119
|
+
constructor(args) {
|
|
120
|
+
this.args = args;
|
|
121
|
+
this.id = `ember-primitives-${uniqueId()}`;
|
|
122
|
+
this.labelId = `${this.id}__label`;
|
|
123
|
+
this.tabpanelId = `${this.id}__tabpanel`;
|
|
124
|
+
}
|
|
125
|
+
get activationMode() {
|
|
126
|
+
return this.args.activationMode ?? "automatic";
|
|
127
|
+
}
|
|
128
|
+
get isAutomatic() {
|
|
129
|
+
return this.activationMode === "automatic";
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* This function relies on the fact that during rendering,
|
|
133
|
+
* the first component to be rendered will be first,
|
|
134
|
+
* and it will be the one to set the secret first value,
|
|
135
|
+
* which means all other tabs will not be first.
|
|
136
|
+
*
|
|
137
|
+
*/
|
|
138
|
+
isActive = (tabId, tabValue) => {
|
|
139
|
+
/**
|
|
140
|
+
* When users pass the @value to a tab, we use that for managing
|
|
141
|
+
* the "active state" instead of the DOM ID.
|
|
142
|
+
*
|
|
143
|
+
* NOTE: DOM IDs must be unique across the whole document, but @value
|
|
144
|
+
* does not need to be unqiue.
|
|
145
|
+
* `@value` *should* be unique for the Tabs component though
|
|
146
|
+
*/
|
|
147
|
+
const isSelected = x => {
|
|
148
|
+
if (tabValue) return x === tabValue;
|
|
149
|
+
return x === tabId;
|
|
150
|
+
};
|
|
151
|
+
if (this.active === UNSET) {
|
|
152
|
+
if (this.#first) return isSelected(this.#first);
|
|
153
|
+
this.#first = tabValue ?? tabId;
|
|
154
|
+
this.#token = stateWaiter.beginAsync();
|
|
155
|
+
// eslint-disable-next-line ember/no-runloop
|
|
156
|
+
next(() => {
|
|
157
|
+
if (!this.#token) return;
|
|
158
|
+
stateWaiter.endAsync(this.#token);
|
|
159
|
+
if (this._active) return;
|
|
160
|
+
if (isDestroyed(this) || isDestroying(this)) return;
|
|
161
|
+
this._label = tabValue ?? tabId;
|
|
162
|
+
});
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
return isSelected(this.active);
|
|
166
|
+
};
|
|
167
|
+
get active() {
|
|
168
|
+
return this._active ?? this.args.activeTab ?? UNSET;
|
|
169
|
+
}
|
|
170
|
+
get activeLabel() {
|
|
171
|
+
/**
|
|
172
|
+
* This is only needed during the first set
|
|
173
|
+
* because we prioritize rendering first, and then updating metadata later
|
|
174
|
+
* (next render)
|
|
175
|
+
*
|
|
176
|
+
* NOTE: this does not mean that the a11y tree is updated later.
|
|
177
|
+
* it is correct on initial render
|
|
178
|
+
*/
|
|
179
|
+
if (this._label) {
|
|
180
|
+
return this._label;
|
|
181
|
+
}
|
|
182
|
+
if (this.active === UNSET) {
|
|
183
|
+
return "Pending";
|
|
184
|
+
}
|
|
185
|
+
return this.active;
|
|
186
|
+
}
|
|
187
|
+
handleChange = (tabId, tabValue) => {
|
|
188
|
+
const previous = this.active;
|
|
189
|
+
const next = tabValue ?? tabId;
|
|
190
|
+
// No change, no need to be noisy
|
|
191
|
+
if (next === previous) return;
|
|
192
|
+
this._active = this._label = next;
|
|
193
|
+
this.args.onChange?.(next, previous === UNSET ? null : previous);
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
class Tabs extends Component {
|
|
197
|
+
state;
|
|
198
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
199
|
+
constructor(owner, args) {
|
|
200
|
+
super(owner, args);
|
|
201
|
+
this.state = new TabState(args);
|
|
202
|
+
}
|
|
203
|
+
static {
|
|
204
|
+
setComponentTemplate(precompileTemplate("\n <div class=\"ember-primitives__tabs\" ...attributes data-active={{this.state.activeLabel}}>\n {{!-- This element will be portaled in to and replaced if tabs.Label is invoked --}}\n <div class=\"ember-primitives__tabs__label\" id={{this.state.labelId}}>\n {{#if (isString @label)}}\n {{@label}}\n {{else}}\n <@label />\n {{/if}}\n </div>\n <div class=\"ember-primitives__tabs__tablist\" role=\"tablist\" aria-labelledby={{this.state.labelId}} data-tabster={{TABSTER_CONFIG}}>\n {{yield (makeAPI (component TabContainer state=this.state) (component Label state=this.state))}}\n </div>\n {{!--\n Tab's contents are portaled in to this element\n --}}\n <div class=\"ember-primitives__tabs__tabpanel\" id={{this.state.tabpanelId}}></div>\n </div>\n ", {
|
|
205
|
+
strictMode: true,
|
|
206
|
+
scope: () => ({
|
|
207
|
+
isString,
|
|
208
|
+
TABSTER_CONFIG,
|
|
209
|
+
makeAPI,
|
|
210
|
+
TabContainer,
|
|
211
|
+
Label
|
|
212
|
+
})
|
|
213
|
+
}), this);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export { Tabs };
|
|
218
|
+
//# sourceMappingURL=tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle-group.js","sources":[
|
|
1
|
+
{"version":3,"file":"toggle-group.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle.js","sources":[
|
|
1
|
+
{"version":3,"file":"toggle.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"violations.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visually-hidden.js","sources":[
|
|
1
|
+
{"version":3,"file":"visually-hidden.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import "./styles.css"
|
|
2
2
|
import Component from '@glimmer/component';
|
|
3
3
|
import { tracked } from '@glimmer/tracking';
|
|
4
4
|
import { hash } from '@ember/helper';
|
|
@@ -10,6 +10,8 @@ import { precompileTemplate } from '@ember/template-compilation';
|
|
|
10
10
|
import { setComponentTemplate } from '@ember/component';
|
|
11
11
|
import { g, i } from 'decorator-transforms/runtime';
|
|
12
12
|
|
|
13
|
+
;
|
|
14
|
+
|
|
13
15
|
const testWaiter = buildWaiter("ember-primitive:zoetrope-waiter");
|
|
14
16
|
const DEFAULT_GAP = 8;
|
|
15
17
|
const DEFAULT_OFFSET = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/zoetrope/index.gts"],"sourcesContent":["import \"./styles.css\";\n\nimport Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { hash } from \"@ember/helper\";\nimport { on } from \"@ember/modifier\";\nimport { buildWaiter, waitForPromise } from \"@ember/test-waiters\";\nimport { isTesting, macroCondition } from \"@embroider/macros\";\n\nimport { modifier } from \"ember-modifier\";\n\nimport type { ScrollBehavior, Signature } from \"./types.ts\";\n\nconst testWaiter = buildWaiter(\"ember-primitive:zoetrope-waiter\");\nconst DEFAULT_GAP = 8;\nconst DEFAULT_OFFSET = 0;\n\nexport class Zoetrope extends Component<Signature> {\n @tracked scrollerElement: HTMLElement | null = null;\n @tracked currentlyScrolled = 0;\n @tracked scrollWidth = 0;\n @tracked offsetWidth = 0;\n\n private setCSSVariables = modifier(\n (element: HTMLElement, _: unknown, { gap, offset }: { gap: number; offset: number }) => {\n if (gap) element.style.setProperty(\"--zoetrope-gap\", `${gap}px`);\n if (offset) element.style.setProperty(\"--zoetrope-offset\", `${offset}px`);\n },\n );\n\n scrollerWaiter = testWaiter.beginAsync();\n noScrollWaiter = () => {\n testWaiter.endAsync(this.scrollerWaiter);\n };\n\n private configureScroller = modifier((element: HTMLElement) => {\n this.scrollerElement = element;\n this.currentlyScrolled = element.scrollLeft;\n\n const zoetropeResizeObserver = new ResizeObserver(() => {\n this.scrollWidth = element.scrollWidth;\n this.offsetWidth = element.offsetWidth;\n });\n\n zoetropeResizeObserver.observe(element);\n\n element.addEventListener(\"scroll\", this.scrollListener, { passive: true });\n element.addEventListener(\"keydown\", this.tabListener);\n\n requestAnimationFrame(() => {\n testWaiter.endAsync(this.scrollerWaiter);\n });\n\n return () => {\n element.removeEventListener(\"scroll\", this.scrollListener);\n element.removeEventListener(\"keydown\", this.tabListener);\n\n zoetropeResizeObserver.unobserve(element);\n };\n });\n\n private tabListener = (event: KeyboardEvent) => {\n const target = event.target as HTMLElement;\n const { key, shiftKey } = event;\n\n if (!this.scrollerElement || this.scrollerElement === target) {\n return;\n }\n\n if (key !== \"Tab\") {\n return;\n }\n\n const nextElement = target.nextElementSibling;\n const previousElement = target.previousElementSibling;\n\n if ((!shiftKey && !nextElement) || (shiftKey && !previousElement)) {\n return;\n }\n\n event.preventDefault();\n\n let newTarget: HTMLElement | null = null;\n\n if (shiftKey) {\n newTarget = previousElement as HTMLElement;\n } else {\n newTarget = nextElement as HTMLElement;\n }\n\n if (!newTarget) {\n return;\n }\n\n newTarget?.focus({ preventScroll: true });\n\n const rect = getRelativeBoundingClientRect(newTarget, this.scrollerElement);\n\n this.scrollerElement?.scrollBy({\n left: rect.left,\n behavior: this.scrollBehavior,\n });\n };\n\n private scrollListener = () => {\n this.currentlyScrolled = this.scrollerElement?.scrollLeft || 0;\n };\n\n get offset() {\n return this.args.offset ?? DEFAULT_OFFSET;\n }\n\n get gap() {\n return this.args.gap ?? DEFAULT_GAP;\n }\n\n get canScroll() {\n return this.scrollWidth > this.offsetWidth + this.offset;\n }\n\n get cannotScrollLeft() {\n return this.currentlyScrolled <= this.offset;\n }\n\n get cannotScrollRight() {\n return this.scrollWidth - this.offsetWidth - this.offset < this.currentlyScrolled;\n }\n\n get scrollBehavior(): ScrollBehavior {\n if (macroCondition(isTesting())) {\n return \"instant\";\n }\n\n return this.args.scrollBehavior || \"smooth\";\n }\n\n scrollLeft = () => {\n if (!(this.scrollerElement instanceof HTMLElement)) {\n return;\n }\n\n const { firstChild } = this.findOverflowingElement();\n\n if (!firstChild) {\n return;\n }\n\n const children = [...this.scrollerElement.children];\n\n const firstChildIndex = children.indexOf(firstChild);\n\n let targetElement = firstChild;\n let accumalatedWidth = 0;\n\n for (let i = firstChildIndex; i >= 0; i--) {\n const child = children[i];\n\n if (!(child instanceof HTMLElement)) {\n continue;\n }\n\n accumalatedWidth += child.offsetWidth + this.gap;\n\n if (accumalatedWidth >= this.offsetWidth) {\n break;\n }\n\n targetElement = child;\n }\n\n const rect = getRelativeBoundingClientRect(targetElement, this.scrollerElement);\n\n this.scrollerElement.scrollBy({\n left: rect.left,\n behavior: this.scrollBehavior,\n });\n\n void waitForPromise(new Promise(requestAnimationFrame));\n };\n\n scrollRight = () => {\n if (!(this.scrollerElement instanceof HTMLElement)) {\n return;\n }\n\n const { activeSlide, lastChild } = this.findOverflowingElement();\n\n if (!lastChild) {\n return;\n }\n\n let rect = getRelativeBoundingClientRect(lastChild, this.scrollerElement);\n\n // If the card is larger than the container then skip to the next card\n if (rect.width > this.offsetWidth && activeSlide === lastChild) {\n const children = [...this.scrollerElement.children];\n const lastChildIndex = children.indexOf(lastChild);\n const targetElement = children[lastChildIndex + 1];\n\n if (!targetElement) {\n return;\n }\n\n rect = getRelativeBoundingClientRect(targetElement, this.scrollerElement);\n }\n\n this.scrollerElement?.scrollBy({\n left: rect.left,\n behavior: this.scrollBehavior,\n });\n\n void waitForPromise(new Promise(requestAnimationFrame));\n };\n\n private findOverflowingElement() {\n const returnObj: {\n activeSlide?: Element;\n firstChild?: Element;\n lastChild?: Element;\n } = {\n firstChild: undefined,\n lastChild: undefined,\n activeSlide: undefined,\n };\n\n if (!this.scrollerElement) {\n return returnObj;\n }\n\n const parentElement = this.scrollerElement.parentElement;\n\n if (!parentElement) {\n return returnObj;\n }\n\n const containerRect = getRelativeBoundingClientRect(this.scrollerElement, parentElement);\n\n const children = [...this.scrollerElement.children];\n\n // Find the first child that is overflowing the left edge of the container\n // and the last child that is overflowing the right edge of the container\n for (const child of children) {\n const rect = getRelativeBoundingClientRect(child, this.scrollerElement);\n\n if (rect.right + this.gap >= containerRect.left && !returnObj.firstChild) {\n returnObj.firstChild = child;\n }\n\n if (rect.left >= this.offset && !returnObj.activeSlide) {\n returnObj.activeSlide = child;\n }\n\n if (rect.right >= containerRect.width && !returnObj.lastChild) {\n returnObj.lastChild = child;\n\n break;\n }\n }\n\n if (!returnObj.firstChild) {\n returnObj.firstChild = children[0];\n }\n\n if (!returnObj.lastChild) {\n returnObj.lastChild = children[children.length - 1];\n }\n\n return returnObj;\n }\n\n <template>\n <section\n class=\"ember-primitives__zoetrope\"\n {{this.setCSSVariables gap=this.gap offset=this.offset}}\n ...attributes\n >\n {{#if (has-block \"header\")}}\n <div class=\"ember-primitives__zoetrope__header\">\n {{yield to=\"header\"}}\n </div>\n {{/if}}\n\n {{#if (has-block \"controls\")}}\n {{yield\n (hash\n cannotScrollLeft=this.cannotScrollLeft\n cannotScrollRight=this.cannotScrollRight\n canScroll=this.canScroll\n scrollLeft=this.scrollLeft\n scrollRight=this.scrollRight\n )\n to=\"controls\"\n }}\n {{else}}\n {{#if this.canScroll}}\n <div class=\"ember-primitives__zoetrope__controls\">\n <button\n type=\"button\"\n {{on \"click\" this.scrollLeft}}\n disabled={{this.cannotScrollLeft}}\n >Left</button>\n\n <button\n type=\"button\"\n {{on \"click\" this.scrollRight}}\n disabled={{this.cannotScrollRight}}\n >Right</button>\n </div>\n {{/if}}\n {{/if}}\n {{#if (has-block \"content\")}}\n <div class=\"ember-primitives__zoetrope__scroller\" {{this.configureScroller}}>\n {{yield to=\"content\"}}\n </div>\n {{else}}\n {{(this.noScrollWaiter)}}\n {{/if}}\n </section>\n </template>\n}\n\nexport default Zoetrope;\n\nfunction getRelativeBoundingClientRect(childElement: Element, parentElement: Element) {\n if (!childElement || !parentElement) {\n throw new Error(\"Both childElement and parentElement must be provided\");\n }\n\n // Get the bounding rect of the child and parent elements\n const childRect = childElement.getBoundingClientRect();\n const parentRect = parentElement.getBoundingClientRect();\n\n // Get computed styles of the parent element\n const parentStyles = window.getComputedStyle(parentElement);\n\n // Extract and parse parent's padding, and border, for all sides\n const parentPaddingTop = parseFloat(parentStyles.paddingTop);\n const parentPaddingLeft = parseFloat(parentStyles.paddingLeft);\n\n const parentBorderTopWidth = parseFloat(parentStyles.borderTopWidth);\n const parentBorderLeftWidth = parseFloat(parentStyles.borderLeftWidth);\n\n // Calculate child's position relative to parent's content area (including padding and borders)\n return {\n width: childRect.width,\n height: childRect.height,\n top: childRect.top - parentRect.top - parentBorderTopWidth - parentPaddingTop,\n left: childRect.left - parentRect.left - parentBorderLeftWidth - parentPaddingLeft,\n bottom:\n childRect.top - parentRect.top - parentBorderTopWidth - parentPaddingTop + childRect.height,\n right:\n childRect.left -\n parentRect.left -\n parentBorderLeftWidth -\n parentPaddingLeft +\n childRect.width,\n };\n}\n"],"names":["testWaiter","buildWaiter","DEFAULT_GAP","DEFAULT_OFFSET","Zoetrope","Component","g","prototype","tracked","i","void 0","setCSSVariables","modifier","element","_","gap","offset","style","setProperty","scrollerWaiter","beginAsync","noScrollWaiter","endAsync","configureScroller","scrollerElement","currentlyScrolled","scrollLeft","zoetropeResizeObserver","ResizeObserver","scrollWidth","offsetWidth","observe","addEventListener","scrollListener","passive","tabListener","requestAnimationFrame","removeEventListener","unobserve","event","target","key","shiftKey","nextElement","nextElementSibling","previousElement","previousElementSibling","preventDefault","newTarget","focus","preventScroll","rect","getRelativeBoundingClientRect","scrollBy","left","behavior","scrollBehavior","args","canScroll","cannotScrollLeft","cannotScrollRight","macroCondition","isTesting","HTMLElement","firstChild","findOverflowingElement","children","firstChildIndex","indexOf","targetElement","accumalatedWidth","child","waitForPromise","Promise","scrollRight","activeSlide","lastChild","width","lastChildIndex","returnObj","undefined","parentElement","containerRect","right","length","setComponentTemplate","precompileTemplate","strictMode","scope","hash","on","childElement","Error","childRect","getBoundingClientRect","parentRect","parentStyles","window","getComputedStyle","parentPaddingTop","parseFloat","paddingTop","parentPaddingLeft","paddingLeft","parentBorderTopWidth","borderTopWidth","parentBorderLeftWidth","borderLeftWidth","height","top","bottom"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/dom-context.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
|
|
1
2
|
import Component from '@glimmer/component';
|
|
2
3
|
import { tracked, cached } from '@glimmer/tracking';
|
|
3
4
|
import { assert } from '@ember/debug';
|
|
4
|
-
import { createStore } from '
|
|
5
|
+
import { createStore } from './store.js';
|
|
5
6
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
6
7
|
import { setComponentTemplate } from '@ember/component';
|
|
7
8
|
import { g, i, n } from 'decorator-transforms/runtime';
|