ember-primitives 0.15.0 → 0.17.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/declarations/components/dialog.d.ts +4 -4
- package/declarations/components/form.d.ts +19 -1
- package/declarations/components/form.d.ts.map +1 -1
- package/declarations/components/link.d.ts +35 -13
- package/declarations/components/link.d.ts.map +1 -1
- package/declarations/components/menu.d.ts +55 -15
- package/declarations/components/menu.d.ts.map +1 -1
- package/declarations/components/one-time-password/input.d.ts +1 -1
- package/declarations/components/popover.d.ts +1 -7
- package/declarations/components/popover.d.ts.map +1 -1
- package/declarations/floating-ui/component.d.ts +3 -10
- package/declarations/floating-ui/component.d.ts.map +1 -1
- package/declarations/helpers/link.d.ts +29 -0
- package/declarations/helpers/link.d.ts.map +1 -0
- package/declarations/helpers.d.ts +1 -0
- package/declarations/helpers.d.ts.map +1 -1
- package/dist/_app_/helpers/link.js +1 -0
- package/dist/components/-private/typed-elements.js.map +1 -1
- package/dist/components/accordion/content.js +1 -1
- package/dist/components/accordion/header.js +1 -1
- package/dist/components/accordion/item.js +1 -1
- package/dist/components/accordion/trigger.js +1 -1
- package/dist/components/accordion.js +4 -4
- package/dist/components/accordion.js.map +1 -1
- package/dist/components/avatar.js +6 -6
- package/dist/components/avatar.js.map +1 -1
- package/dist/components/dialog.js +6 -6
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/external-link.js.map +1 -1
- package/dist/components/form.js +50 -7
- package/dist/components/form.js.map +1 -1
- package/dist/components/layout/sticky-footer/index.js.map +1 -1
- package/dist/components/link.js +12 -78
- package/dist/components/link.js.map +1 -1
- package/dist/components/menu.js +35 -21
- package/dist/components/menu.js.map +1 -1
- package/dist/components/one-time-password/buttons.js +3 -3
- package/dist/components/one-time-password/buttons.js.map +1 -1
- package/dist/components/one-time-password/input.js +5 -5
- package/dist/components/one-time-password/input.js.map +1 -1
- package/dist/components/one-time-password/otp.js +5 -5
- package/dist/components/one-time-password/otp.js.map +1 -1
- package/dist/components/popover.js +9 -9
- package/dist/components/popover.js.map +1 -1
- package/dist/components/portal-targets.js +2 -2
- package/dist/components/portal-targets.js.map +1 -1
- package/dist/components/portal.js +2 -2
- package/dist/components/portal.js.map +1 -1
- package/dist/components/progress.js +5 -5
- package/dist/components/progress.js.map +1 -1
- package/dist/components/scroller.js +3 -3
- package/dist/components/scroller.js.map +1 -1
- package/dist/components/shadowed.js +4 -4
- package/dist/components/shadowed.js.map +1 -1
- package/dist/components/switch.js +8 -8
- package/dist/components/switch.js.map +1 -1
- package/dist/components/toggle-group.js +8 -8
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/toggle.js +5 -5
- package/dist/components/toggle.js.map +1 -1
- package/dist/floating-ui/component.js +11 -9
- package/dist/floating-ui/component.js.map +1 -1
- package/dist/helpers/link.js +79 -0
- package/dist/helpers/link.js.map +1 -0
- package/dist/helpers.js +1 -0
- package/dist/helpers.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/{item-HBCzMJwv.js → item-DmpElnSZ.js} +23 -23
- package/dist/item-DmpElnSZ.js.map +1 -0
- package/package.json +21 -20
- package/dist/item-HBCzMJwv.js.map +0 -1
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import Component from '@glimmer/component';
|
|
2
2
|
import { tracked } from '@glimmer/tracking';
|
|
3
3
|
import { assert } from '@ember/debug';
|
|
4
|
+
import { hash } from '@ember/helper';
|
|
5
|
+
import { on } from '@ember/modifier';
|
|
4
6
|
import { modifier } from 'ember-modifier';
|
|
5
7
|
import { localCopy } from 'tracked-toolbox';
|
|
6
|
-
import { on } from '@ember/modifier';
|
|
7
8
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
8
9
|
import { setComponentTemplate } from '@ember/component';
|
|
9
10
|
import templateOnly from '@ember/component/template-only';
|
|
10
|
-
import { hash } from '@ember/helper';
|
|
11
11
|
import { g, i } from 'decorator-transforms/runtime';
|
|
12
12
|
|
|
13
13
|
const DialogElement = setComponentTemplate(precompileTemplate("\n <dialog ...attributes open={{@open}} {{on \"close\" @onClose}} {{@register}}>\n {{yield}}\n </dialog>\n", {
|
|
14
|
+
strictMode: true,
|
|
14
15
|
scope: () => ({
|
|
15
16
|
on
|
|
16
|
-
})
|
|
17
|
-
strictMode: true
|
|
17
|
+
})
|
|
18
18
|
}), templateOnly());
|
|
19
19
|
let ModalDialog = class ModalDialog extends Component {
|
|
20
20
|
static {
|
|
21
21
|
setComponentTemplate(precompileTemplate("\n {{yield (hash isOpen=this.isOpen open=this.open close=this.close Dialog=(component DialogElement open=@open onClose=this.handleClose register=this.register))}}\n ", {
|
|
22
|
+
strictMode: true,
|
|
22
23
|
scope: () => ({
|
|
23
24
|
hash,
|
|
24
25
|
DialogElement
|
|
25
|
-
})
|
|
26
|
-
strictMode: true
|
|
26
|
+
})
|
|
27
27
|
}), this);
|
|
28
28
|
}
|
|
29
29
|
static {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.js","sources":["../../src/components/dialog.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { modifier } from 'ember-modifier';\n// temp\n// https://github.com/tracked-tools/tracked-toolbox/issues/38\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { localCopy } from 'tracked-toolbox';\nimport type { TOC } from '@ember/component/template-only';\nimport type { ModifierLike, WithBoundArgs } from '@glint/template';\nconst DialogElement: TOC<{\n Element: HTMLDialogElement;\n Args: {\n /**\n * @internal\n */ open: boolean | undefined;\n /**\n * @internal\n */ onClose: () => void;\n /**\n * @internal\n */ register: ModifierLike<{\n Element: HTMLDialogElement;\n }>;\n };\n Blocks: {\n default: [];\n };\n}> = template(`\n <dialog ...attributes open={{@open}} {{on \"close\" @onClose}} {{@register}}>\n {{yield}}\n </dialog>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport interface Signature {\n Args: {\n /**\n * Optionally set the open state of the <dialog>\n * The state will still be managed internally,\n * so this does not need to be a maintained value, but whenever it changes,\n * the dialog element will reflect that change accordingly.\n */ open?: boolean;\n /**\n * When the <dialog> is closed, this function will be called\n * and the <dialog>'s `returnValue` will be passed.\n *\n * This can be used to determine which button was clicked to close the modal\n *\n * Note though that this value is only populated when using\n * <form method='dialog'>\n */ onClose?: (returnValue: string) => void;\n };\n Blocks: {\n default: [{\n /**\n * Represents the open state of the `<dialog>` element.\n */ isOpen: boolean;\n /**\n * Closes the `<dialog>` element\n * Will throw an error if `Dialog` is not rendered.\n */ close: () => void;\n /**\n * Opens the `<dialog>` element.\n * Will throw an error if `Dialog` is not rendered.\n */ open: () => void;\n /**\n * This is the `<dialog>` element (with some defaults pre-wired).\n * This is required to be rendered.\n */ Dialog: WithBoundArgs<typeof DialogElement, 'onClose' | 'register' | 'open'>;\n }];\n };\n}\nlet ModalDialog = class ModalDialog extends Component<Signature> {\n static{\n template(`\n {{yield\n (hash\n isOpen=this.isOpen\n open=this.open\n close=this.close\n Dialog=(component DialogElement open=@open onClose=this.handleClose register=this.register)\n )\n }}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n @localCopy('args.open')\n _isOpen: boolean;\n get isOpen() {\n /**\n * Always fallback to false (closed)\n */ return this._isOpen ?? false;\n }\n set isOpen(val1: boolean) {\n this._isOpen = val1;\n }\n @tracked\n dialogElement: HTMLDialogElement | undefined;\n register = modifier((element1: HTMLDialogElement)=>{\n /**\n * This is very sad.\n *\n * But we need the element to be 'root state'\n * so that when we read things like \"isOpen\",\n * when the dialog is finally rendered, all the\n * downstream properties render.\n *\n * This has to be an async / delayed a bit, so that\n * the tracking frame can exit, and we don't infinite loop\n */ (async ()=>{\n await Promise.resolve();\n this.dialogElement = element1;\n })();\n });\n /**\n * Closes the dialog -- this will throw an error in development if the dialog element was not rendered\n */ close = ()=>{\n assert('Cannot call `close` on <Dialog> without rendering the dialog element.', this.dialogElement);\n /**\n * If the element is already closed, don't run all this again\n */ if (!this.dialogElement.hasAttribute('open')) {\n return;\n }\n /**\n * removes the `open` attribute\n * handleClose will be called because the dialog has bound the `close` event.\n */ this.dialogElement.close();\n };\n /**\n * @internal\n *\n * handles the <dialog> element's native close behavior.\n * listened to via addEventListener('close', ...);\n */ handleClose = ()=>{\n assert('Cannot call `handleDialogClose` on <Dialog> without rendering the dialog element. This is likely a bug in ember-primitives. Please open an issue <3', this.dialogElement);\n this.isOpen = false;\n this.args.onClose?.(this.dialogElement.returnValue);\n // the return value ends up staying... which is annoying\n this.dialogElement.returnValue = '';\n };\n /**\n * Opens the dialog -- this will throw an error in development if the dialog element was not rendered\n */ open = ()=>{\n assert('Cannot call `open` on <Dialog> without rendering the dialog element.', this.dialogElement);\n /**\n * If the element is already open, don't run all this again\n */ if (this.dialogElement.hasAttribute('open')) {\n return;\n }\n /**\n * adds the `open` attribute\n */ this.dialogElement.showModal();\n this.isOpen = true;\n };\n};\nexport const Modal = ModalDialog;\nexport const Dialog = ModalDialog;\nexport default ModalDialog;\n"],"names":["DialogElement","setComponentTemplate","precompileTemplate","scope","on","strictMode","templateOnly","ModalDialog","Component","hash","g","this","prototype","localCopy","i","void 0","isOpen","_isOpen","val1","tracked","register","modifier","element1","Promise","resolve","dialogElement","close","assert","hasAttribute","handleClose","args","onClose","returnValue","open","showModal","Modal","Dialog"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dialog.js","sources":["../../src/components/dialog.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { modifier } from 'ember-modifier';\n// temp\n// https://github.com/tracked-tools/tracked-toolbox/issues/38\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { localCopy } from 'tracked-toolbox';\nimport type { TOC } from '@ember/component/template-only';\nimport type { ModifierLike, WithBoundArgs } from '@glint/template';\nconst DialogElement: TOC<{\n Element: HTMLDialogElement;\n Args: {\n /**\n * @internal\n */ open: boolean | undefined;\n /**\n * @internal\n */ onClose: () => void;\n /**\n * @internal\n */ register: ModifierLike<{\n Element: HTMLDialogElement;\n }>;\n };\n Blocks: {\n default: [];\n };\n}> = template(`\n <dialog ...attributes open={{@open}} {{on \"close\" @onClose}} {{@register}}>\n {{yield}}\n </dialog>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport interface Signature {\n Args: {\n /**\n * Optionally set the open state of the `<dialog>`\n * The state will still be managed internally,\n * so this does not need to be a maintained value, but whenever it changes,\n * the dialog element will reflect that change accordingly.\n */ open?: boolean;\n /**\n * When the `<dialog>` is closed, this function will be called\n * and the `<dialog>`'s `returnValue` will be passed.\n *\n * This can be used to determine which button was clicked to close the modal\n *\n * Note though that this value is only populated when using\n * `<form method='dialog'>`\n */ onClose?: (returnValue: string) => void;\n };\n Blocks: {\n default: [{\n /**\n * Represents the open state of the `<dialog>` element.\n */ isOpen: boolean;\n /**\n * Closes the `<dialog>` element\n * Will throw an error if `Dialog` is not rendered.\n */ close: () => void;\n /**\n * Opens the `<dialog>` element.\n * Will throw an error if `Dialog` is not rendered.\n */ open: () => void;\n /**\n * This is the `<dialog>` element (with some defaults pre-wired).\n * This is required to be rendered.\n */ Dialog: WithBoundArgs<typeof DialogElement, 'onClose' | 'register' | 'open'>;\n }];\n };\n}\nlet ModalDialog = class ModalDialog extends Component<Signature> {\n static{\n template(`\n {{yield\n (hash\n isOpen=this.isOpen\n open=this.open\n close=this.close\n Dialog=(component DialogElement open=@open onClose=this.handleClose register=this.register)\n )\n }}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n @localCopy('args.open')\n _isOpen: boolean;\n get isOpen() {\n /**\n * Always fallback to false (closed)\n */ return this._isOpen ?? false;\n }\n set isOpen(val1: boolean) {\n this._isOpen = val1;\n }\n @tracked\n dialogElement: HTMLDialogElement | undefined;\n register = modifier((element1: HTMLDialogElement)=>{\n /**\n * This is very sad.\n *\n * But we need the element to be 'root state'\n * so that when we read things like \"isOpen\",\n * when the dialog is finally rendered, all the\n * downstream properties render.\n *\n * This has to be an async / delayed a bit, so that\n * the tracking frame can exit, and we don't infinite loop\n */ (async ()=>{\n await Promise.resolve();\n this.dialogElement = element1;\n })();\n });\n /**\n * Closes the dialog -- this will throw an error in development if the dialog element was not rendered\n */ close = ()=>{\n assert('Cannot call `close` on <Dialog> without rendering the dialog element.', this.dialogElement);\n /**\n * If the element is already closed, don't run all this again\n */ if (!this.dialogElement.hasAttribute('open')) {\n return;\n }\n /**\n * removes the `open` attribute\n * handleClose will be called because the dialog has bound the `close` event.\n */ this.dialogElement.close();\n };\n /**\n * @internal\n *\n * handles the <dialog> element's native close behavior.\n * listened to via addEventListener('close', ...);\n */ handleClose = ()=>{\n assert('Cannot call `handleDialogClose` on <Dialog> without rendering the dialog element. This is likely a bug in ember-primitives. Please open an issue <3', this.dialogElement);\n this.isOpen = false;\n this.args.onClose?.(this.dialogElement.returnValue);\n // the return value ends up staying... which is annoying\n this.dialogElement.returnValue = '';\n };\n /**\n * Opens the dialog -- this will throw an error in development if the dialog element was not rendered\n */ open = ()=>{\n assert('Cannot call `open` on <Dialog> without rendering the dialog element.', this.dialogElement);\n /**\n * If the element is already open, don't run all this again\n */ if (this.dialogElement.hasAttribute('open')) {\n return;\n }\n /**\n * adds the `open` attribute\n */ this.dialogElement.showModal();\n this.isOpen = true;\n };\n};\nexport const Modal = ModalDialog;\nexport const Dialog = ModalDialog;\nexport default ModalDialog;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL2RpYWxvZy5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbXBvbmVudCBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgdHJhY2tlZCB9IGZyb20gJ0BnbGltbWVyL3RyYWNraW5nJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BlbWJlci9kZWJ1Zyc7XG5pbXBvcnQgeyBoYXNoIH0gZnJvbSAnQGVtYmVyL2hlbHBlcic7XG5pbXBvcnQgeyBvbiB9IGZyb20gJ0BlbWJlci9tb2RpZmllcic7XG5cbmltcG9ydCB7IG1vZGlmaWVyIH0gZnJvbSAnZW1iZXItbW9kaWZpZXInO1xuLy8gdGVtcFxuLy8gIGh0dHBzOi8vZ2l0aHViLmNvbS90cmFja2VkLXRvb2xzL3RyYWNrZWQtdG9vbGJveC9pc3N1ZXMvMzhcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGxvY2FsQ29weSB9IGZyb20gJ3RyYWNrZWQtdG9vbGJveCc7XG5cbmltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcbmltcG9ydCB0eXBlIHsgTW9kaWZpZXJMaWtlLCBXaXRoQm91bmRBcmdzIH0gZnJvbSAnQGdsaW50L3RlbXBsYXRlJztcblxuY29uc3QgRGlhbG9nRWxlbWVudDogVE9DPHtcbiAgRWxlbWVudDogSFRNTERpYWxvZ0VsZW1lbnQ7XG4gIEFyZ3M6IHtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBvcGVuOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIG9uQ2xvc2U6ICgpID0-IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICByZWdpc3RlcjogTW9kaWZpZXJMaWtlPHsgRWxlbWVudDogSFRNTERpYWxvZ0VsZW1lbnQgfT47XG4gIH07XG4gIEJsb2NrczogeyBkZWZhdWx0OiBbXSB9O1xufT4gPSA8dGVtcGxhdGU-XG4gIDxkaWFsb2cgLi4uYXR0cmlidXRlcyBvcGVuPXt7QG9wZW59fSB7e29uIFwiY2xvc2VcIiBAb25DbG9zZX19IHt7QHJlZ2lzdGVyfX0-XG4gICAge3t5aWVsZH19XG4gIDwvZGlhbG9nPlxuPC90ZW1wbGF0ZT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmF0dXJlIHtcbiAgQXJnczoge1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsbHkgc2V0IHRoZSBvcGVuIHN0YXRlIG9mIHRoZSBgPGRpYWxvZz5gXG4gICAgICogVGhlIHN0YXRlIHdpbGwgc3RpbGwgYmUgbWFuYWdlZCBpbnRlcm5hbGx5LFxuICAgICAqIHNvIHRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBhIG1haW50YWluZWQgdmFsdWUsIGJ1dCB3aGVuZXZlciBpdCBjaGFuZ2VzLFxuICAgICAqIHRoZSBkaWFsb2cgZWxlbWVudCB3aWxsIHJlZmxlY3QgdGhhdCBjaGFuZ2UgYWNjb3JkaW5nbHkuXG4gICAgICovXG4gICAgb3Blbj86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogV2hlbiB0aGUgYDxkaWFsb2c-YCBpcyBjbG9zZWQsIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWRcbiAgICAgKiBhbmQgdGhlIGA8ZGlhbG9nPmAncyBgcmV0dXJuVmFsdWVgIHdpbGwgYmUgcGFzc2VkLlxuICAgICAqXG4gICAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggYnV0dG9uIHdhcyBjbGlja2VkIHRvIGNsb3NlIHRoZSBtb2RhbFxuICAgICAqXG4gICAgICogTm90ZSB0aG91Z2ggdGhhdCB0aGlzIHZhbHVlIGlzIG9ubHkgcG9wdWxhdGVkIHdoZW4gdXNpbmdcbiAgICAgKiBgPGZvcm0gbWV0aG9kPSdkaWFsb2cnPmBcbiAgICAgKi9cbiAgICBvbkNsb3NlPzogKHJldHVyblZhbHVlOiBzdHJpbmcpID0-IHZvaWQ7XG4gIH07XG4gIEJsb2Nrczoge1xuICAgIGRlZmF1bHQ6IFtcbiAgICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlcHJlc2VudHMgdGhlIG9wZW4gc3RhdGUgb2YgdGhlIGA8ZGlhbG9nPmAgZWxlbWVudC5cbiAgICAgICAgICovXG4gICAgICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENsb3NlcyB0aGUgYDxkaWFsb2c-YCBlbGVtZW50XG4gICAgICAgICAqIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgYERpYWxvZ2AgaXMgbm90IHJlbmRlcmVkLlxuICAgICAgICAgKi9cbiAgICAgICAgY2xvc2U6ICgpID0-IHZvaWQ7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBPcGVucyB0aGUgYDxkaWFsb2c-YCBlbGVtZW50LlxuICAgICAgICAgKiBXaWxsIHRocm93IGFuIGVycm9yIGlmIGBEaWFsb2dgIGlzIG5vdCByZW5kZXJlZC5cbiAgICAgICAgICovXG4gICAgICAgIG9wZW46ICgpID0-IHZvaWQ7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGlzIGlzIHRoZSBgPGRpYWxvZz5gIGVsZW1lbnQgKHdpdGggc29tZSBkZWZhdWx0cyBwcmUtd2lyZWQpLlxuICAgICAgICAgKiBUaGlzIGlzIHJlcXVpcmVkIHRvIGJlIHJlbmRlcmVkLlxuICAgICAgICAgKi9cbiAgICAgICAgRGlhbG9nOiBXaXRoQm91bmRBcmdzPHR5cGVvZiBEaWFsb2dFbGVtZW50LCAnb25DbG9zZScgfCAncmVnaXN0ZXInIHwgJ29wZW4nPjtcbiAgICAgIH0sXG4gICAgXTtcbiAgfTtcbn1cblxuY2xhc3MgTW9kYWxEaWFsb2cgZXh0ZW5kcyBDb21wb25lbnQ8U2lnbmF0dXJlPiB7XG4gIDx0ZW1wbGF0ZT5cbiAgICB7e3lpZWxkXG4gICAgICAoaGFzaFxuICAgICAgICBpc09wZW49dGhpcy5pc09wZW5cbiAgICAgICAgb3Blbj10aGlzLm9wZW5cbiAgICAgICAgY2xvc2U9dGhpcy5jbG9zZVxuICAgICAgICBEaWFsb2c9KGNvbXBvbmVudCBEaWFsb2dFbGVtZW50IG9wZW49QG9wZW4gb25DbG9zZT10aGlzLmhhbmRsZUNsb3NlIHJlZ2lzdGVyPXRoaXMucmVnaXN0ZXIpXG4gICAgICApXG4gICAgfX1cbiAgPC90ZW1wbGF0ZT5cblxuICBAbG9jYWxDb3B5KCdhcmdzLm9wZW4nKSBkZWNsYXJlIF9pc09wZW46IGJvb2xlYW47XG5cbiAgZ2V0IGlzT3BlbigpIHtcbiAgICAvKipcbiAgICAgKiBBbHdheXMgZmFsbGJhY2sgdG8gZmFsc2UgKGNsb3NlZClcbiAgICAgKi9cbiAgICByZXR1cm4gdGhpcy5faXNPcGVuID8_IGZhbHNlO1xuICB9XG4gIHNldCBpc09wZW4odmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNPcGVuID0gdmFsO1xuICB9XG5cbiAgQHRyYWNrZWQgZGVjbGFyZSBkaWFsb2dFbGVtZW50OiBIVE1MRGlhbG9nRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICByZWdpc3RlciA9IG1vZGlmaWVyKChlbGVtZW50OiBIVE1MRGlhbG9nRWxlbWVudCkgPT4ge1xuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgdmVyeSBzYWQuXG4gICAgICpcbiAgICAgKiBCdXQgd2UgbmVlZCB0aGUgZWxlbWVudCB0byBiZSAncm9vdCBzdGF0ZSdcbiAgICAgKiBzbyB0aGF0IHdoZW4gd2UgcmVhZCB0aGluZ3MgbGlrZSBcImlzT3BlblwiLFxuICAgICAqIHdoZW4gdGhlIGRpYWxvZyBpcyBmaW5hbGx5IHJlbmRlcmVkLCBhbGwgdGhlXG4gICAgICogZG93bnN0cmVhbSBwcm9wZXJ0aWVzIHJlbmRlci5cbiAgICAgKlxuICAgICAqIFRoaXMgaGFzIHRvIGJlIGFuIGFzeW5jIC8gZGVsYXllZCBhIGJpdCwgc28gdGhhdFxuICAgICAqIHRoZSB0cmFja2luZyBmcmFtZSBjYW4gZXhpdCwgYW5kIHdlIGRvbid0IGluZmluaXRlIGxvb3BcbiAgICAgKi9cbiAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgICAgIHRoaXMuZGlhbG9nRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgfSkoKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgZGlhbG9nIC0tIHRoaXMgd2lsbCB0aHJvdyBhbiBlcnJvciBpbiBkZXZlbG9wbWVudCBpZiB0aGUgZGlhbG9nIGVsZW1lbnQgd2FzIG5vdCByZW5kZXJlZFxuICAgKi9cbiAgY2xvc2UgPSAoKSA9PiB7XG4gICAgYXNzZXJ0KFxuICAgICAgJ0Nhbm5vdCBjYWxsIGBjbG9zZWAgb24gPERpYWxvZz4gd2l0aG91dCByZW5kZXJpbmcgdGhlIGRpYWxvZyBlbGVtZW50LicsXG4gICAgICB0aGlzLmRpYWxvZ0VsZW1lbnRcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIGVsZW1lbnQgaXMgYWxyZWFkeSBjbG9zZWQsIGRvbid0IHJ1biBhbGwgdGhpcyBhZ2FpblxuICAgICAqL1xuICAgIGlmICghdGhpcy5kaWFsb2dFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnb3BlbicpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmVtb3ZlcyB0aGUgYG9wZW5gIGF0dHJpYnV0ZVxuICAgICAqIGhhbmRsZUNsb3NlIHdpbGwgYmUgY2FsbGVkIGJlY2F1c2UgdGhlIGRpYWxvZyBoYXMgYm91bmQgdGhlIGBjbG9zZWAgZXZlbnQuXG4gICAgICovXG4gICAgdGhpcy5kaWFsb2dFbGVtZW50LmNsb3NlKCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKlxuICAgKiBoYW5kbGVzIHRoZSA8ZGlhbG9nPiBlbGVtZW50J3MgbmF0aXZlIGNsb3NlIGJlaGF2aW9yLlxuICAgKiBsaXN0ZW5lZCB0byB2aWEgYWRkRXZlbnRMaXN0ZW5lcignY2xvc2UnLCAuLi4pO1xuICAgKi9cbiAgaGFuZGxlQ2xvc2UgPSAoKSA9PiB7XG4gICAgYXNzZXJ0KFxuICAgICAgJ0Nhbm5vdCBjYWxsIGBoYW5kbGVEaWFsb2dDbG9zZWAgb24gPERpYWxvZz4gd2l0aG91dCByZW5kZXJpbmcgdGhlIGRpYWxvZyBlbGVtZW50LiBUaGlzIGlzIGxpa2VseSBhIGJ1ZyBpbiBlbWJlci1wcmltaXRpdmVzLiBQbGVhc2Ugb3BlbiBhbiBpc3N1ZSA8MycsXG4gICAgICB0aGlzLmRpYWxvZ0VsZW1lbnRcbiAgICApO1xuXG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmFyZ3Mub25DbG9zZT8uKHRoaXMuZGlhbG9nRWxlbWVudC5yZXR1cm5WYWx1ZSk7XG4gICAgLy8gdGhlIHJldHVybiB2YWx1ZSBlbmRzIHVwIHN0YXlpbmcuLi4gd2hpY2ggaXMgYW5ub3lpbmdcbiAgICB0aGlzLmRpYWxvZ0VsZW1lbnQucmV0dXJuVmFsdWUgPSAnJztcbiAgfTtcblxuICAvKipcbiAgICogT3BlbnMgdGhlIGRpYWxvZyAtLSB0aGlzIHdpbGwgdGhyb3cgYW4gZXJyb3IgaW4gZGV2ZWxvcG1lbnQgaWYgdGhlIGRpYWxvZyBlbGVtZW50IHdhcyBub3QgcmVuZGVyZWRcbiAgICovXG4gIG9wZW4gPSAoKSA9PiB7XG4gICAgYXNzZXJ0KFxuICAgICAgJ0Nhbm5vdCBjYWxsIGBvcGVuYCBvbiA8RGlhbG9nPiB3aXRob3V0IHJlbmRlcmluZyB0aGUgZGlhbG9nIGVsZW1lbnQuJyxcbiAgICAgIHRoaXMuZGlhbG9nRWxlbWVudFxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBJZiB0aGUgZWxlbWVudCBpcyBhbHJlYWR5IG9wZW4sIGRvbid0IHJ1biBhbGwgdGhpcyBhZ2FpblxuICAgICAqL1xuICAgIGlmICh0aGlzLmRpYWxvZ0VsZW1lbnQuaGFzQXR0cmlidXRlKCdvcGVuJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBhZGRzIHRoZSBgb3BlbmAgYXR0cmlidXRlXG4gICAgICovXG4gICAgdGhpcy5kaWFsb2dFbGVtZW50LnNob3dNb2RhbCgpO1xuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IE1vZGFsID0gTW9kYWxEaWFsb2c7XG5leHBvcnQgY29uc3QgRGlhbG9nID0gTW9kYWxEaWFsb2c7XG5cbmV4cG9ydCBkZWZhdWx0IE1vZGFsRGlhbG9nO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLGVBQWUscUJBQXFCO0FBQzNDLFNBQVMsT0FBTyxRQUFRLG9CQUFvQjtBQUM1QyxTQUFTLE1BQU0sUUFBUSxlQUFlO0FBQ3RDLFNBQVMsSUFBSSxRQUFRLGdCQUFnQjtBQUNyQyxTQUFTLEVBQUUsUUFBUSxrQkFBa0I7QUFFckMsU0FBUyxRQUFR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"],"names":["DialogElement","precompileTemplate","strictMode","scope","on","templateOnly","ModalDialog","Component","setComponentTemplate","hash","g","this","prototype","localCopy","i","void 0","isOpen","_isOpen","val1","tracked","register","modifier","element1","Promise","resolve","dialogElement","close","assert","hasAttribute","handleClose","args","onClose","returnValue","open","showModal","Modal","Dialog"],"mappings":";;;;;;;;;;;;AAgBA,MAAMA,gBAkBDC,oBAAAA,CAAAA,kBAAA,CAIL,iHAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;AAAAC,IAAAA,EAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,CAAA,CAAA;AAiDV,IAAAC,WAAM,GAAN,MAAMA,WAAA,SAAoBC,SAAA,CAAU;AAClC,EAAA;IAAAC,oBAAA,CAAAP,kBAAA,CASA,2KAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAM,IAAA;AAAAT,QAAAA,aAAAA;AAAA,OAAA,CAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AATA,EAAA;AAAAU,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAWTC,SAAA,CAAU,WAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,QAAA,IAAAC,CAAA,CAAAH,IAAA,cAAAI,KAAA,CAAA,EAAA;AAEX,EAAA,IAAIC,SAAS;AACX;;;IAGA,OAAO,IAAI,CAACC,OAAO,IAAI,KAAA,CAAA;AACzB,GAAA;EACA,IAAID,MAAAA,CAAOE,IAAY,EAAE;IACvB,IAAI,CAACD,OAAO,GAAGC,IAAA,CAAA;AACjB,GAAA;AAAA,EAAA;AAAAR,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,oBAECO,OAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,cAAA,IAAAL,CAAA,CAAAH,IAAA,oBAAAI,KAAA,CAAA,EAAA;EAEDK,QAAA,GAAWC,QAAA,CAAUC,QAAS,IAAA;AAC5B;;;;;;;;;;;IAWA,CAAC,YAAA;MACC,MAAMC,OAAA,CAAQC,OAAO,EAAA,CAAA;MAErB,IAAI,CAACC,aAAa,GAAGH,QAAA,CAAA;KACtB,GAAA,CAAA;AACH,GAAA,CAAA,CAAA;AAEA;;;AAGAI,EAAAA,KAAA,GAAQA,MAAA;AACNC,IAAAA,MAAA,CACE,uEAAA,EACA,IAAI,CAACF,aAAa,CAAA,CAAA;AAGpB;;;AAGA,IAAA,IAAI,CAAC,IAAI,CAACA,aAAa,CAACG,YAAY,CAAC,MAAS,CAAA,EAAA;AAC5C,MAAA,OAAA;AACF,KAAA;AAEA;;;;IAIA,IAAI,CAACH,aAAa,CAACC,KAAK,EAAA,CAAA;AAC1B,GAAA,CAAA;AAEA;;;;;;AAMAG,EAAAA,WAAA,GAAcA,MAAA;AACZF,IAAAA,MAAA,CACE,qJAAA,EACA,IAAI,CAACF,aAAa,CAAA,CAAA;IAGpB,IAAI,CAACT,MAAM,GAAG,KAAA,CAAA;IACd,IAAI,CAACc,IAAI,CAACC,OAAO,GAAG,IAAI,CAACN,aAAa,CAACO,WAAW,CAAA,CAAA;AAClD;AACA,IAAA,IAAI,CAACP,aAAa,CAACO,WAAW,GAAG,EAAA,CAAA;AACnC,GAAA,CAAA;AAEA;;;AAGAC,EAAAA,IAAA,GAAOA,MAAA;AACLN,IAAAA,MAAA,CACE,sEAAA,EACA,IAAI,CAACF,aAAa,CAAA,CAAA;AAGpB;;;AAGA,IAAA,IAAI,IAAI,CAACA,aAAa,CAACG,YAAY,CAAC,MAAS,CAAA,EAAA;AAC3C,MAAA,OAAA;AACF,KAAA;AAEA;;;IAGA,IAAI,CAACH,aAAa,CAACS,SAAS,EAAA,CAAA;IAC5B,IAAI,CAAClB,MAAM,GAAG,IAAA,CAAA;AAChB,GAAA,CAAA;AACF,EAAA;AAEO,MAAMmB,KAAA,GAAQ7B,YAAA;AACd,MAAM8B,MAAA,GAAS9B;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-link.js","sources":["../../src/components/external-link.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport type { TOC } from '@ember/component/template-only';\nexport const ExternalLink: TOC<{\n Element: HTMLAnchorElement;\n Blocks: {\n default: [];\n };\n}> = template(`\n <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"##missing##\" ...attributes>\n {{yield}}\n </a>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default ExternalLink;\n"],"names":["ExternalLink","
|
|
1
|
+
{"version":3,"file":"external-link.js","sources":["../../src/components/external-link.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport type { TOC } from '@ember/component/template-only';\nexport const ExternalLink: TOC<{\n Element: HTMLAnchorElement;\n Blocks: {\n default: [];\n };\n}> = template(`\n <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"##missing##\" ...attributes>\n {{yield}}\n </a>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default ExternalLink;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL2V4dGVybmFsLWxpbmsuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVE9DIH0gZnJvbSAnQGVtYmVyL2NvbXBvbmVudC90ZW1wbGF0ZS1vbmx5JztcblxuZXhwb3J0IGNvbnN0IEV4dGVybmFsTGluazogVE9DPHtcbiAgRWxlbWVudDogSFRNTEFuY2hvckVsZW1lbnQ7XG4gIEJsb2Nrczoge1xuICAgIGRlZmF1bHQ6IFtdO1xuICB9O1xufT4gPSA8dGVtcGxhdGU-XG4gIDxhIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vcmVmZXJyZXIgbm9vcGVuZXJcIiBocmVmPVwiIyNtaXNzaW5nIyNcIiAuLi5hdHRyaWJ1dGVzPlxuICAgIHt7eWllbGR9fVxuICA8L2E-XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgRXh0ZXJuYWxMaW5rO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxjQUFjLEdBQUcsUUFBUSxpQ0FBaUM7QUFFMUQsT0FBTyxNQUFNLGNBQWM7SUFDekIsU0FBUztJQUNUO1FBQ0U7O0tBRUMsU0FBVSxDQUFBOzs7O0FBSWYsQ0FBQSxFQUFBO0lBQUE7UUFBQSxPQUFBLEtBQUEsU0FBQSxDQUFBLEVBQVc7SUFBRDtBQUFBLEdBQUU7QUFFWixlQUFlLGFBQWEifQ"],"names":["ExternalLink","precompileTemplate","strictMode","templateOnly"],"mappings":";;;;AAEaA,MAAAA,eAKRC,oBAAAA,CAAAA,kBAAA,CAIL,mHAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
|
package/dist/components/form.js
CHANGED
|
@@ -1,14 +1,57 @@
|
|
|
1
1
|
import { assert } from '@ember/debug';
|
|
2
|
-
import { on } from '@ember/modifier';
|
|
3
2
|
import { fn } from '@ember/helper';
|
|
3
|
+
import { on } from '@ember/modifier';
|
|
4
4
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
5
5
|
import { setComponentTemplate } from '@ember/component';
|
|
6
6
|
import templateOnly from '@ember/component/template-only';
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
/**
|
|
9
|
+
* A utility function for extracting the FormData as an object
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
function dataFromEvent(
|
|
13
|
+
/**
|
|
14
|
+
* The submit event from the event listener on the form.
|
|
15
|
+
* The currentTarget must be a `<form>`
|
|
16
|
+
*
|
|
17
|
+
*
|
|
18
|
+
* Each input within your `<form>` should have a `name` attribute.
|
|
19
|
+
* (or else the `<form>` element doesn't know what inputs are relevant)
|
|
20
|
+
*/
|
|
21
|
+
event1) {
|
|
22
|
+
assert('An unexpected event was passed to formDataFrom in <Form>', 'currentTarget' in event1 && event1.currentTarget instanceof HTMLFormElement);
|
|
23
|
+
let form1 = event1.currentTarget;
|
|
24
|
+
let formData1 = new FormData(form1);
|
|
11
25
|
let data1 = Object.fromEntries(formData1.entries());
|
|
26
|
+
// Gather fields from the form, and set any missing
|
|
27
|
+
// values to undefined.
|
|
28
|
+
let fields1 = form1.querySelectorAll('input,select');
|
|
29
|
+
for (let field1 of fields1) {
|
|
30
|
+
let name1 = field1.getAttribute('name');
|
|
31
|
+
// The field is probably invalid
|
|
32
|
+
if (!name1) continue;
|
|
33
|
+
let hasSubmitted1 = (name1 in data1);
|
|
34
|
+
if (!hasSubmitted1) data1[name1] = '';
|
|
35
|
+
// If the field is a `select`, we need to better
|
|
36
|
+
// handle the value, since only the most recently
|
|
37
|
+
// clicked will beb available
|
|
38
|
+
if (field1 instanceof HTMLSelectElement) {
|
|
39
|
+
if (field1.hasAttribute('multiple')) {
|
|
40
|
+
let options1 = field1.querySelectorAll('option');
|
|
41
|
+
let values1 = [];
|
|
42
|
+
for (let option1 of options1) {
|
|
43
|
+
if (option1.selected) {
|
|
44
|
+
values1.push(option1.value);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
data1[field1.name] = values1;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return data1;
|
|
52
|
+
}
|
|
53
|
+
const handleInput = (onChange1, event1, eventType1 = 'input') => {
|
|
54
|
+
let data1 = dataFromEvent(event1);
|
|
12
55
|
onChange1(data1, eventType1, event1);
|
|
13
56
|
};
|
|
14
57
|
const handleSubmit = (onChange1, event1) => {
|
|
@@ -16,14 +59,14 @@ const handleSubmit = (onChange1, event1) => {
|
|
|
16
59
|
handleInput(onChange1, event1, 'submit');
|
|
17
60
|
};
|
|
18
61
|
const Form = setComponentTemplate(precompileTemplate("\n <form {{on \"input\" (fn handleInput @onChange)}} {{on \"submit\" (fn handleSubmit @onChange)}} ...attributes>\n {{yield}}\n </form>\n", {
|
|
62
|
+
strictMode: true,
|
|
19
63
|
scope: () => ({
|
|
20
64
|
on,
|
|
21
65
|
fn,
|
|
22
66
|
handleInput,
|
|
23
67
|
handleSubmit
|
|
24
|
-
})
|
|
25
|
-
strictMode: true
|
|
68
|
+
})
|
|
26
69
|
}), templateOnly());
|
|
27
70
|
|
|
28
|
-
export { Form, Form as default };
|
|
71
|
+
export { Form, dataFromEvent, Form as default };
|
|
29
72
|
//# sourceMappingURL=form.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.js","sources":["../../src/components/form.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport type { TOC } from '@ember/component/template-only';\ntype FormDataEntryValue = NonNullable<ReturnType<FormData['get']>>;\ntype Data = {\n [key: string]: FormDataEntryValue;\n};\nconst handleInput = (onChange1: (data: Data, eventType: 'input' | 'submit', event: Event) => void, event1: Event | SubmitEvent, eventType1: 'input' | 'submit' = 'input')=>{\n assert('An unexpected event was passed to handleInput in <Form>', 'currentTarget' in event1 && event1.currentTarget instanceof HTMLFormElement);\n let formData1 = new FormData(event1.currentTarget);\n let data1 = Object.fromEntries(formData1.entries());\n onChange1(data1, eventType1, event1);\n};\nconst handleSubmit = (onChange1: (data: Data, eventType: 'input' | 'submit', event: Event | SubmitEvent) => void, event1: SubmitEvent)=>{\n event1.preventDefault();\n handleInput(onChange1, event1, 'submit');\n};\nexport interface Signature {\n Element: HTMLFormElement;\n Args: {\n /**\n * Any time the value of any field is changed this function will be called.\n */ onChange: (/**\n * The data from the form as an Object of `{ [field name] => value }` pairs.\n * This is generated from the native [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData)\n *\n * Additional fields/inputs/controls can be added to this data by specifying a\n * \"name\" attribute.\n */ data: Data, /**\n * Indicates whether the `onChange` function was called from the `input` or `submit` event handlers.\n */ eventType: 'input' | 'submit', /**\n * The raw event, if needed.\n */ event: Event | SubmitEvent) => void;\n };\n Blocks: {\n /**\n * The main content for the form. This is where inputs / fields / controls would go.\n * Within the `<form>` content, `<button type=\"submit\">` will submit the form, which\n * triggers the `@onChange` event.\n */ default: [];\n };\n}\nexport const Form: TOC<Signature> = template(`\n <form\n {{on \"input\" (fn handleInput @onChange)}}\n {{on \"submit\" (fn handleSubmit @onChange)}}\n ...attributes\n >\n {{yield}}\n </form>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default Form;\n"],"names":["handleInput","onChange1","event1","eventType1","assert","currentTarget","HTMLFormElement","formData1","FormData","data1","Object","fromEntries","entries","handleSubmit","preventDefault","Form","setComponentTemplate","precompileTemplate","scope","on","fn","strictMode","templateOnly"],"mappings":";;;;;;;AASA,MAAMA,WAAW,GAAGA,CAACC,SAA4E,EAAEC,MAA2B,EAAEC,UAA8B,GAAG,OAAO,KAAG;AACvKC,EAAAA,MAAM,CAAC,yDAAyD,EAAE,eAAe,IAAIF,MAAM,IAAIA,MAAM,CAACG,aAAa,YAAYC,eAAe,CAAC,CAAA;EAC/I,IAAIC,SAAS,GAAG,IAAIC,QAAQ,CAACN,MAAM,CAACG,aAAa,CAAC,CAAA;EAClD,IAAII,KAAK,GAAGC,MAAM,CAACC,WAAW,CAACJ,SAAS,CAACK,OAAO,EAAE,CAAC,CAAA;AACnDX,EAAAA,SAAS,CAACQ,KAAK,EAAEN,UAAU,EAAED,MAAM,CAAC,CAAA;AACxC,CAAC,CAAA;AACD,MAAMW,YAAY,GAAGA,CAACZ,SAA0F,EAAEC,MAAmB,KAAG;EACpIA,MAAM,CAACY,cAAc,EAAE,CAAA;AACvBd,EAAAA,WAAW,CAACC,SAAS,EAAEC,MAAM,EAAE,QAAQ,CAAC,CAAA;AAC5C,CAAC,CAAA;MA0BYa,IAAoB,GAAAC,oBAAA,CAAGC,kBAAA,CAQjC,gJAAA,EAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;IAAAC,EAAA;IAAApB,WAAA;AAAAa,IAAAA,YAAAA;AAAA,GAAA,CAAA;EAAAQ,UAAA,EAAA,IAAA;AAIH,CAAC,CAAC,EAAAC,YAAA,EAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"form.js","sources":["../../src/components/form.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport type { TOC } from '@ember/component/template-only';\ntype FormDataEntryValue = NonNullable<ReturnType<FormData['get']>>;\ntype Data = {\n [key: string]: FormDataEntryValue | string[];\n};\n/**\n * A utility function for extracting the FormData as an object\n *\n */ export function dataFromEvent(/**\n * The submit event from the event listener on the form.\n * The currentTarget must be a `<form>`\n *\n *\n * Each input within your `<form>` should have a `name` attribute.\n * (or else the `<form>` element doesn't know what inputs are relevant)\n */ event1: {\n currentTarget: EventTarget | null;\n}): {\n [name: string]: FormDataEntryValue | string[];\n} {\n assert('An unexpected event was passed to formDataFrom in <Form>', 'currentTarget' in event1 && event1.currentTarget instanceof HTMLFormElement);\n let form1 = event1.currentTarget;\n let formData1 = new FormData(form1);\n let data1: Data = Object.fromEntries(formData1.entries());\n // Gather fields from the form, and set any missing\n // values to undefined.\n let fields1 = form1.querySelectorAll('input,select');\n for (let field1 of fields1){\n let name1 = field1.getAttribute('name');\n // The field is probably invalid\n if (!name1) continue;\n let hasSubmitted1 = name1 in data1;\n if (!hasSubmitted1) data1[name1] = '';\n // If the field is a `select`, we need to better\n // handle the value, since only the most recently\n // clicked will beb available\n if (field1 instanceof HTMLSelectElement) {\n if (field1.hasAttribute('multiple')) {\n let options1 = field1.querySelectorAll('option');\n let values1 = [];\n for (let option1 of options1){\n if (option1.selected) {\n values1.push(option1.value);\n }\n }\n data1[field1.name] = values1;\n }\n }\n }\n return data1;\n}\nconst handleInput = (onChange1: (data: Data, eventType: 'input' | 'submit', event: Event) => void, event1: Event | SubmitEvent, eventType1: 'input' | 'submit' = 'input')=>{\n let data1 = dataFromEvent(event1);\n onChange1(data1, eventType1, event1);\n};\nconst handleSubmit = (onChange1: (data: Data, eventType: 'input' | 'submit', event: Event | SubmitEvent) => void, event1: SubmitEvent)=>{\n event1.preventDefault();\n handleInput(onChange1, event1, 'submit');\n};\nexport interface Signature {\n Element: HTMLFormElement;\n Args: {\n /**\n * Any time the value of any field is changed this function will be called.\n */ onChange: (/**\n * The data from the form as an Object of `{ [field name] => value }` pairs.\n * This is generated from the native [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData)\n *\n * Additional fields/inputs/controls can be added to this data by specifying a\n * \"name\" attribute.\n */ data: Data, /**\n * Indicates whether the `onChange` function was called from the `input` or `submit` event handlers.\n */ eventType: 'input' | 'submit', /**\n * The raw event, if needed.\n */ event: Event | SubmitEvent) => void;\n };\n Blocks: {\n /**\n * The main content for the form. This is where inputs / fields / controls would go.\n * Within the `<form>` content, `<button type=\"submit\">` will submit the form, which\n * triggers the `@onChange` event.\n */ default: [];\n };\n}\nexport const Form: TOC<Signature> = template(`\n <form\n {{on \"input\" (fn handleInput @onChange)}}\n {{on \"submit\" (fn handleSubmit @onChange)}}\n ...attributes\n >\n {{yield}}\n </form>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default Form;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL2Zvcm0uZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BlbWJlci9kZWJ1Zyc7XG5pbXBvcnQgeyBmbiB9IGZyb20gJ0BlbWJlci9oZWxwZXInO1xuaW1wb3J0IHsgb24gfSBmcm9tICdAZW1iZXIvbW9kaWZpZXInO1xuXG5pbXBvcnQgdHlwZSB7IFRPQyB9IGZyb20gJ0BlbWJlci9jb21wb25lbnQvdGVtcGxhdGUtb25seSc7XG5cbnR5cGUgRm9ybURhdGFFbnRyeVZhbHVlID0gTm9uTnVsbGFibGU8UmV0dXJuVHlwZTxGb3JtRGF0YVsnZ2V0J10-PjtcbnR5cGUgRGF0YSA9IHsgW2tleTogc3RyaW5nXTogRm9ybURhdGFFbnRyeVZhbHVlIHwgc3RyaW5nW10gfTtcblxuLyoqXG4gKiBBIHV0aWxpdHkgZnVuY3Rpb24gZm9yIGV4dHJhY3RpbmcgdGhlIEZvcm1EYXRhIGFzIGFuIG9iamVjdFxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFGcm9tRXZlbnQoXG4gIC8qKlxuICAgKiBUaGUgc3VibWl0IGV2ZW50IGZyb20gdGhlIGV2ZW50IGxpc3RlbmVyIG9uIHRoZSBmb3JtLlxuICAgKiBUaGUgY3VycmVudFRhcmdldCBtdXN0IGJlIGEgYDxmb3JtPmBcbiAgICpcbiAgICpcbiAgICogRWFjaCBpbnB1dCB3aXRoaW4geW91ciBgPGZvcm0-YCBzaG91bGQgaGF2ZSBhIGBuYW1lYCBhdHRyaWJ1dGUuXG4gICAqIChvciBlbHNlIHRoZSBgPGZvcm0-YCBlbGVtZW50IGRvZXNuJ3Qga25vdyB3aGF0IGlucHV0cyBhcmUgcmVsZXZhbnQpXG4gICAqL1xuICBldmVudDogeyBjdXJyZW50VGFyZ2V0OiBFdmVudFRhcmdldCB8IG51bGwgfVxuKToge1xuICBbbmFtZTogc3RyaW5nXTogRm9ybURhdGFFbnRyeVZhbHVlIHwgc3RyaW5nW107XG59IHtcbiAgYXNzZXJ0KFxuICAgICdBbiB1bmV4cGVjdGVkIGV2ZW50IHdhcyBwYXNzZWQgdG8gZm9ybURhdGFGcm9tIGluIDxGb3JtPicsXG4gICAgJ2N1cnJlbnRUYXJnZXQnIGluIGV2ZW50ICYmIGV2ZW50LmN1cnJlbnRUYXJnZXQgaW5zdGFuY2VvZiBIVE1MRm9ybUVsZW1lbnRcbiAgKTtcblxuICBsZXQgZm9ybSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShmb3JtKTtcbiAgbGV0IGRhdGE6IERhdGEgPSBPYmplY3QuZnJvbUVudHJpZXMoZm9ybURhdGEuZW50cmllcygpKTtcblxuICAvLyBHYXRoZXIgZmllbGRzIGZyb20gdGhlIGZvcm0sIGFuZCBzZXQgYW55IG1pc3NpbmdcbiAgLy8gdmFsdWVzIHRvIHVuZGVmaW5lZC5cbiAgbGV0IGZpZWxkcyA9IGZvcm0ucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQsc2VsZWN0Jyk7XG5cbiAgZm9yIChsZXQgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgbGV0IG5hbWUgPSBmaWVsZC5nZXRBdHRyaWJ1dGUoJ25hbWUnKTtcblxuICAgIC8vIFRoZSBmaWVsZCBpcyBwcm9iYWJseSBpbnZhbGlkXG4gICAgaWYgKCFuYW1lKSBjb250aW51ZTtcblxuICAgIGxldCBoYXNTdWJtaXR0ZWQgPSBuYW1lIGluIGRhdGE7XG5cbiAgICBpZiAoIWhhc1N1Ym1pdHRlZCkgZGF0YVtuYW1lXSA9ICcnO1xuXG4gICAgLy8gSWYgdGhlIGZpZWxkIGlzIGEgYHNlbGVjdGAsIHdlIG5lZWQgdG8gYmV0dGVyXG4gICAgLy8gaGFuZGxlIHRoZSB2YWx1ZSwgc2luY2Ugb25seSB0aGUgbW9zdCByZWNlbnRseVxuICAgIC8vIGNsaWNrZWQgd2lsbCBiZWIgYXZhaWxhYmxlXG4gICAgaWYgKGZpZWxkIGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQpIHtcbiAgICAgIGlmIChmaWVsZC5oYXNBdHRyaWJ1dGUoJ211bHRpcGxlJykpIHtcbiAgICAgICAgbGV0IG9wdGlvbnMgPSBmaWVsZC5xdWVyeVNlbGVjdG9yQWxsKCdvcHRpb24nKTtcbiAgICAgICAgbGV0IHZhbHVlcyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbi5zZWxlY3RlZCkge1xuICAgICAgICAgICAgdmFsdWVzLnB1c2gob3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhW2ZpZWxkLm5hbWVdID0gdmFsdWVzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkYXRhO1xufVxuXG5jb25zdCBoYW5kbGVJbnB1dCA9IChcbiAgb25DaGFuZ2U6IChkYXRhOiBEYXRhLCBldmVudFR5cGU6ICdpbnB1dCcgfCAnc3VibWl0JywgZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLFxuICBldmVudDogRXZlbnQgfCBTdWJtaXRFdmVudCxcbiAgZXZlbnRUeXBlOiAnaW5wdXQnIHwgJ3N1Ym1pdCcgPSAnaW5wdXQnXG4pID0-IHtcbiAgbGV0IGRhdGEgPSBkYXRhRnJvbUV2ZW50KGV2ZW50KTtcblxuICBvbkNoYW5nZShkYXRhLCBldmVudFR5cGUsIGV2ZW50KTtcbn07XG5cbmNvbnN0IGhhbmRsZVN1Ym1pdCA9IChcbiAgb25DaGFuZ2U6IChkYXRhOiBEYXRhLCBldmVudFR5cGU6ICdpbnB1dCcgfCAnc3VibWl0JywgZXZlbnQ6IEV2ZW50IHwgU3VibWl0RXZlbnQpID0-IHZvaWQsXG4gIGV2ZW50OiBTdWJtaXRFdmVudFxuKSA9PiB7XG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIGhhbmRsZUlucHV0KG9uQ2hhbmdlLCBldmVudCwgJ3N1Ym1pdCcpO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTaWduYXR1cmUge1xuICBFbGVtZW50OiBIVE1MRm9ybUVsZW1lbnQ7XG4gIEFyZ3M6IHtcbiAgICAvKipcbiAgICAgKiAgQW55IHRpbWUgdGhlIHZhbHVlIG9mIGFueSBmaWVsZCBpcyBjaGFuZ2VkIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQuXG4gICAgICovXG4gICAgb25DaGFuZ2U6IChcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGRhdGEgZnJvbSB0aGUgZm9ybSBhcyBhbiBPYmplY3Qgb2YgYHsgW2ZpZWxkIG5hbWVdID0-IHZhbHVlIH1gIHBhaXJzLlxuICAgICAgICogVGhpcyBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgbmF0aXZlIFtGb3JtRGF0YV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0Zvcm1EYXRhKVxuICAgICAgICpcbiAgICAgICAqIEFkZGl0aW9uYWwgZmllbGRzL2lucHV0cy9jb250cm9scyBjYW4gYmUgYWRkZWQgdG8gdGhpcyBkYXRhIGJ5IHNwZWNpZnlpbmcgYVxuICAgICAgICogXCJuYW1lXCIgYXR0cmlidXRlLlxuICAgICAgICovXG4gICAgICBkYXRhOiBEYXRhLFxuICAgICAgLyoqXG4gICAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgYG9uQ2hhbmdlYCBmdW5jdGlvbiB3YXMgY2FsbGVkIGZyb20gdGhlIGBpbnB1dGAgb3IgYHN1Ym1pdGAgZXZlbnQgaGFuZGxlcnMuXG4gICAgICAgKi9cbiAgICAgIGV2ZW50VHlwZTogJ2lucHV0JyB8ICdzdWJtaXQnLFxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgcmF3IGV2ZW50LCBpZiBuZWVkZWQuXG4gICAgICAgKi9cbiAgICAgIGV2ZW50OiBFdmVudCB8IFN1Ym1pdEV2ZW50XG4gICAgKSA9PiB2b2lkO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICAvKipcbiAgICAgKiBUaGUgbWFpbiBjb250ZW50IGZvciB0aGUgZm9ybS4gVGhpcyBpcyB3aGVyZSBpbnB1dHMgLyBmaWVsZHMgLyBjb250cm9scyB3b3VsZCBnby5cbiAgICAgKiBXaXRoaW4gdGhlIGA8Zm9ybT5gIGNvbnRlbnQsIGA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIj5gIHdpbGwgc3VibWl0IHRoZSBmb3JtLCB3aGljaFxuICAgICAqIHRyaWdnZXJzIHRoZSBgQG9uQ2hhbmdlYCBldmVudC5cbiAgICAgKi9cbiAgICBkZWZhdWx0OiBbXTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IEZvcm06IFRPQzxTaWduYXR1cmU-ID0gPHRlbXBsYXRlPlxuICA8Zm9ybVxuICAgIHt7b24gXCJpbnB1dFwiIChmbiBoYW5kbGVJbnB1dCBAb25DaGFuZ2UpfX1cbiAgICB7e29uIFwic3VibWl0XCIgKGZuIGhhbmRsZVN1Ym1pdCBAb25DaGFuZ2UpfX1cbiAgICAuLi5hdHRyaWJ1dGVzXG4gID5cbiAgICB7e3lpZWxkfX1cbiAgPC9mb3JtPlxuPC90ZW1wbGF0ZT47XG5cbmV4cG9ydCBkZWZhdWx0IEZvcm07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVMsTUFBTSxRQUFRLGVBQWU7QUFDdEMsU0FBUyxFQUFFLFFBQVEsZ0JBQWdCO0FBQ25DLFNBQVMsRUFBRSxRQUFRLGtCQUFrQjtBQUVyQyxjQUFjLEdBQUcsUUFBUSxpQ0FBaUM7S0FFckQscUJBQXFCLFlBQVksV0FBVyxTQUFTO0tBQ3JEO0tBQVUsS0FBSyxNQUFNLEdBQUcscUJBQXFCLE1BQU07O0FBRXhEOzs7Q0FHQyxHQUNELE9BQU8sU0FBUyxjQUNkOzs7Ozs7O0dBT0MsR0FDRDtJQUFTLGVBQWUsY0FBYyxJQUFJO0NBQUU7S0FFM0MsTUFBTSxNQUFNLEdBQUcscUJBQXFCLE1BQU07O0lBRTNDLE9BQ0UsNERBQ0EsbUJBQW1CLFVBQVMsT0FBTSxhQUFhLFlBQVk7SUFHN0QsSUFBSSxRQUFPLE9BQU0sYUFBYTtJQUM5QixJQUFJLFlBQVcsSUFBSSxTQUFTO0lBQzVCLElBQUksT0FBTSxPQUFPLE9BQU8sV0FBVyxDQUFDLFVBQVMsT0FBTztJQUVwRCxtREFBbUQ7SUFDbkQsdUJBQXVCO0lBQ3ZCLElBQUksVUFBUyxNQUFLLGdCQUFnQixDQUFDO0lBRW5DLEtBQUssSUFBSSxVQUFTLFFBQVE7UUFDeEIsSUFBSSxRQUFPLE9BQU0sWUFBWSxDQUFDO1FBRTlCLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsT0FBTTtRQUVYLElBQUksZ0JBQWUsU0FBUTtRQUUzQixJQUFJLENBQUMsZUFBYyxLQUFJLENBQUMsTUFBSyxHQUFHO1FBRWhDLGdEQUFnRDtRQUNoRCxpREFBaUQ7UUFDakQsNkJBQTZCO1FBQzdCLElBQUksa0JBQWlCLG1CQUFtQjtZQUN0QyxJQUFJLE9BQU0sWUFBWSxDQUFDLGFBQWE7Z0JBQ2xDLElBQUksV0FBVSxPQUFNLGdCQUFnQixDQUFDO2dCQUNyQyxJQUFJLFVBQVMsRUFBRTtnQkFFZixLQUFLLElBQUksV0FBVSxTQUFTO29CQUMxQixJQUFJLFFBQU8sUUFBUSxFQUFFO3dCQUNuQixRQUFPLElBQUksQ0FBQyxRQUFPLEtBQUs7b0JBQzFCO2dCQUNGO2dCQUVBLEtBQUksQ0FBQyxPQUFNLElBQUksQ0FBQyxHQUFHO1lBQ3JCO1FBQ0Y7SUFDRjtJQUVBLE9BQU87QUFDVDtBQUVBLE1BQU0sY0FBYyxDQUNsQixZQUFXLE1BQU0sTUFBTSxXQUFXLFVBQVUsVUFBVSxPQUFPLFVBQVUsSUFBSSxFQUMzRSxRQUFPLFFBQVEsYUFDZixZQUFXLFVBQVUsV0FBVyxPQUFPO0lBRXZDLElBQUksUUFBTyxjQUFjO0lBRXpCLFVBQVMsT0FBTSxZQUFXO0FBQzVCO0FBRUEsTUFBTSxlQUFlLENBQ25CLFlBQVcsTUFBTSxNQUFNLFdBQVcsVUFBVSxVQUFVLE9BQU8sUUFBUSxnQkFBZ0IsSUFBSSxFQUN6RixRQUFPO0lBRVAsT0FBTSxjQUFjO0lBQ3BCLFlBQVksV0FBVSxRQUFPO0FBQy9CO0FBRUEsaUJBQWlCO0lBQ2YsU0FBUztJQUNUO1FBQ0U7O0tBRUMsR0FDRCxXQUNFOzs7Ozs7T0FNQyxHQUNELE1BQU0sTUFDTjs7T0FFQyxHQUNELFdBQVcsVUFBVSxVQUNyQjs7T0FFQyxHQUNELE9BQU8sUUFBUSxnQkFDWixJQUFJOztJQUVYO1FBQ0U7Ozs7S0FJQyxHQUNEOzs7QUFJSixPQUFPLE1BQU0sTUFBTSxJQUFJLGFBQWEsU0FBVSxDQUFBOzs7Ozs7OztBQVE5QyxDQUFBLEVBQUE7SUFBQTtRQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztJQUFEO0FBQUEsR0FBRTtBQUVaLGVBQWUsS0FBSyJ9"],"names":["dataFromEvent","event1","assert","currentTarget","HTMLFormElement","form1","formData1","FormData","data1","Object","fromEntries","entries","fields1","querySelectorAll","field1","name1","getAttribute","hasSubmitted1","HTMLSelectElement","hasAttribute","options1","values1","option1","selected","push","value","name","handleInput","onChange1","eventType1","handleSubmit","preventDefault","Form","setComponentTemplate","precompileTemplate","strictMode","scope","on","fn","templateOnly"],"mappings":";;;;;;;AASA;;;;AAIO,SAASA,aAAAA;AACd;;;;;;;;AAQAC,MAA4C;EAI5CC,MAAA,CACE,4DACA,eAAmBD,IAAAA,MAAA,IAASA,MAAA,CAAME,aAAa,YAAYC,eAAA,CAAA,CAAA;AAG7D,EAAA,IAAIC,KAAA,GAAOJ,MAAA,CAAME,aAAa,CAAA;AAC9B,EAAA,IAAIG,SAAA,GAAW,IAAIC,QAAA,CAASF,KAAA,CAAA,CAAA;EAC5B,IAAIG,KAAM,GAAOC,MAAA,CAAOC,WAAW,CAACJ,SAAA,CAASK,OAAO,EAAA,CAAA,CAAA;AAEpD;AACA;AACA,EAAA,IAAIC,OAAA,GAASP,KAAA,CAAKQ,gBAAgB,CAAC,cAAA,CAAA,CAAA;AAEnC,EAAA,KAAK,IAAIC,MAAA,IAASF,OAAA,EAAQ;AACxB,IAAA,IAAIG,KAAA,GAAOD,MAAA,CAAME,YAAY,CAAC,MAAA,CAAA,CAAA;AAE9B;IACA,IAAI,CAACD,KAAA,EAAM,SAAA;AAEX,IAAA,IAAIE,aAAA,IAAeF,KAAA,IAAQP,KAAA,CAAA,CAAA;AAE3B,IAAA,IAAI,CAACS,aAAA,EAAcT,KAAI,CAACO,KAAA,CAAK,GAAG,EAAA,CAAA;AAEhC;AACA;AACA;IACA,IAAID,MAAA,YAAiBI,iBAAA,EAAmB;AACtC,MAAA,IAAIJ,MAAA,CAAMK,YAAY,CAAC,UAAa,CAAA,EAAA;AAClC,QAAA,IAAIC,QAAA,GAAUN,MAAA,CAAMD,gBAAgB,CAAC,QAAA,CAAA,CAAA;QACrC,IAAIQ,OAAA,GAAS,EAAE,CAAA;AAEf,QAAA,KAAK,IAAIC,OAAA,IAAUF,QAAA,EAAS;UAC1B,IAAIE,OAAA,CAAOC,QAAQ,EAAE;AACnBF,YAAAA,OAAA,CAAOG,IAAI,CAACF,OAAA,CAAOG,KAAK,CAAA,CAAA;AAC1B,WAAA;AACF,SAAA;AAEAjB,QAAAA,KAAI,CAACM,MAAA,CAAMY,IAAI,CAAC,GAAGL,OAAA,CAAA;AACrB,OAAA;AACF,KAAA;AACF,GAAA;AAEA,EAAA,OAAOb,KAAA,CAAA;AACT,CAAA;AAEA,MAAMmB,WAAA,GAAcA,CAClBC,SAA2E,EAC3E3B,MAAe,EACf4B,UAAqB,GAAW,OAAO,KAAA;AAEvC,EAAA,IAAIrB,KAAA,GAAOR,aAAA,CAAcC,MAAA,CAAA,CAAA;AAEzB2B,EAAAA,SAAA,CAASpB,KAAA,EAAMqB,UAAA,EAAW5B,MAAA,CAAA,CAAA;AAC5B,CAAA,CAAA;AAEA,MAAM6B,YAAA,GAAeA,CACnBF,SAAyF,EACzF3B,MAAO,KAAA;AAEPA,EAAAA,MAAA,CAAM8B,cAAc,EAAA,CAAA;AACpBJ,EAAAA,WAAA,CAAYC,SAAA,EAAU3B,MAAA,EAAO,QAAA,CAAA,CAAA;AAC/B,CAAA,CAAA;MAqCa+B,IAAU,GAAAC,oBAAA,CAAaC,kBAAA,CAQpC,gJAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAX,WAAA;AAAAG,IAAAA,YAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAS,YAAA,EAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/layout/sticky-footer/index.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport './index.css';\nimport type { TOC } from '@ember/component/template-only';\nexport const StickyFooter: TOC<{\n /**\n * The wrapper element of the whole layout.\n * Valid parents for this element must have either a set height,\n * or a set max-height.\n */ Element: HTMLDivElement;\n Blocks: {\n /**\n * This is the scrollable content, contained within a `<div>` element for positioning.\n * If this component is used as the main layout on a page,\n * the `<main>` element would be appropriate within here.\n */ content: [];\n /**\n * This is the footer content, contained within a `<div>` element for positioning.\n * A `<footer>` element would be appropriate within here.\n *\n * This element will be at the bottom of the page if the content does not overflow the containing element and this element will be at the bottom of the content if there is overflow.\n */ footer: [];\n };\n}> = template(`\n <div class=\"ember-primitives__sticky-footer__wrapper\" ...attributes>\n <div class=\"ember-primitives__sticky-footer__container\">\n <div class=\"ember-primitives__sticky-footer__content\">\n {{yield to=\"content\"}}\n </div>\n <div class=\"ember-primitives__sticky-footer__footer\">\n {{yield to=\"footer\"}}\n </div>\n </div>\n </div>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default StickyFooter;\n"],"names":["StickyFooter","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/layout/sticky-footer/index.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport './index.css';\nimport type { TOC } from '@ember/component/template-only';\nexport const StickyFooter: TOC<{\n /**\n * The wrapper element of the whole layout.\n * Valid parents for this element must have either a set height,\n * or a set max-height.\n */ Element: HTMLDivElement;\n Blocks: {\n /**\n * This is the scrollable content, contained within a `<div>` element for positioning.\n * If this component is used as the main layout on a page,\n * the `<main>` element would be appropriate within here.\n */ content: [];\n /**\n * This is the footer content, contained within a `<div>` element for positioning.\n * A `<footer>` element would be appropriate within here.\n *\n * This element will be at the bottom of the page if the content does not overflow the containing element and this element will be at the bottom of the content if there is overflow.\n */ footer: [];\n };\n}> = template(`\n <div class=\"ember-primitives__sticky-footer__wrapper\" ...attributes>\n <div class=\"ember-primitives__sticky-footer__container\">\n <div class=\"ember-primitives__sticky-footer__content\">\n {{yield to=\"content\"}}\n </div>\n <div class=\"ember-primitives__sticky-footer__footer\">\n {{yield to=\"footer\"}}\n </div>\n </div>\n </div>\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default StickyFooter;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL2xheW91dC9zdGlja3ktZm9vdGVyL2luZGV4Lmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vaW5kZXguY3NzJztcblxuaW1wb3J0IHR5cGUgeyBUT0MgfSBmcm9tICdAZW1iZXIvY29tcG9uZW50L3RlbXBsYXRlLW9ubHknO1xuXG5leHBvcnQgY29uc3QgU3RpY2t5Rm9vdGVyOiBUT0M8e1xuICAvKipcbiAgICogVGhlIHdyYXBwZXIgZWxlbWVudCBvZiB0aGUgd2hvbGUgbGF5b3V0LlxuICAgKiBWYWxpZCBwYXJlbnRzIGZvciB0aGlzIGVsZW1lbnQgbXVzdCBoYXZlIGVpdGhlciBhIHNldCBoZWlnaHQsXG4gICAqIG9yIGEgc2V0IG1heC1oZWlnaHQuXG4gICAqL1xuICBFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcbiAgQmxvY2tzOiB7XG4gICAgLyoqXG4gICAgICogVGhpcyBpcyB0aGUgc2Nyb2xsYWJsZSBjb250ZW50LCBjb250YWluZWQgd2l0aGluIGEgYDxkaXY-YCBlbGVtZW50IGZvciBwb3NpdGlvbmluZy5cbiAgICAgKiBJZiB0aGlzIGNvbXBvbmVudCBpcyB1c2VkIGFzIHRoZSBtYWluIGxheW91dCBvbiBhIHBhZ2UsXG4gICAgICogdGhlIGA8bWFpbj5gIGVsZW1lbnQgd291bGQgYmUgYXBwcm9wcmlhdGUgd2l0aGluIGhlcmUuXG4gICAgICovXG4gICAgY29udGVudDogW107XG4gICAgLyoqXG4gICAgICogVGhpcyBpcyB0aGUgZm9vdGVyIGNvbnRlbnQsIGNvbnRhaW5lZCB3aXRoaW4gYSBgPGRpdj5gIGVsZW1lbnQgZm9yIHBvc2l0aW9uaW5nLlxuICAgICAqIEEgYDxmb290ZXI-YCBlbGVtZW50IHdvdWxkIGJlIGFwcHJvcHJpYXRlIHdpdGhpbiBoZXJlLlxuICAgICAqXG4gICAgICogVGhpcyBlbGVtZW50IHdpbGwgYmUgYXQgdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSBpZiB0aGUgY29udGVudCBkb2VzIG5vdCBvdmVyZmxvdyB0aGUgY29udGFpbmluZyBlbGVtZW50IGFuZCB0aGlzIGVsZW1lbnQgd2lsbCBiZSBhdCB0aGUgYm90dG9tIG9mIHRoZSBjb250ZW50IGlmIHRoZXJlIGlzIG92ZXJmbG93LlxuICAgICAqL1xuICAgIGZvb3RlcjogW107XG4gIH07XG59PiA9IDx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImVtYmVyLXByaW1pdGl2ZXNfX3N0aWNreS1mb290ZXJfX3dyYXBwZXJcIiAuLi5hdHRyaWJ1dGVzPlxuICAgIDxkaXYgY2xhc3M9XCJlbWJlci1wcmltaXRpdmVzX19zdGlja3ktZm9vdGVyX19jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbWJlci1wcmltaXRpdmVzX19zdGlja3ktZm9vdGVyX19jb250ZW50XCI-XG4gICAgICAgIHt7eWllbGQgdG89XCJjb250ZW50XCJ9fVxuICAgICAgPC9kaXY-XG4gICAgICA8ZGl2IGNsYXNzPVwiZW1iZXItcHJpbWl0aXZlc19fc3RpY2t5LWZvb3Rlcl9fZm9vdGVyXCI-XG4gICAgICAgIHt7eWllbGQgdG89XCJmb290ZXJcIn19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY-XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgU3RpY2t5Rm9vdGVyO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLGNBQWM7QUFFckIsY0FBYyxHQUFHLFFBQVEsaUNBQWlDO0FBRTFELE9BQU8sTUFBTSxjQUFjO0lBQ3pCOzs7O0dBSUMsR0FDRCxTQUFTO0lBQ1Q7UUFDRTs7OztLQUlDLEdBQ0Q7UUFDQTs7Ozs7S0FLQyxHQUNEOztLQUVDLFNBQVUsQ0FBQTs7Ozs7Ozs7Ozs7QUFXZixDQUFBLEVBQUE7SUFBQTtRQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztJQUFEO0FBQUEsR0FBRTtBQUVaLGVBQWUsYUFBYSJ9"],"names":["StickyFooter","precompileTemplate","strictMode","templateOnly"],"mappings":";;;;;AAIaA,MAAAA,eAsBRC,oBAAAA,CAAAA,kBAAA,CAWL,kYAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
|
package/dist/components/link.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import Component from '@glimmer/component';
|
|
2
|
-
import { assert } from '@ember/debug';
|
|
3
|
-
import { service } from '@ember/service';
|
|
4
|
-
import { handle } from '../proper-links.js';
|
|
5
|
-
import { ExternalLink } from './external-link.js';
|
|
6
1
|
import { hash } from '@ember/helper';
|
|
7
2
|
import { on } from '@ember/modifier';
|
|
3
|
+
import { link } from '../helpers/link.js';
|
|
4
|
+
import { ExternalLink } from './external-link.js';
|
|
8
5
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
9
6
|
import { setComponentTemplate } from '@ember/component';
|
|
10
|
-
import
|
|
7
|
+
import templateOnly from '@ember/component/template-only';
|
|
11
8
|
|
|
12
9
|
/**
|
|
13
10
|
* TODO: make template-only component,
|
|
@@ -21,78 +18,15 @@ import { g, i } from 'decorator-transforms/runtime';
|
|
|
21
18
|
*
|
|
22
19
|
* [mdn-a]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a
|
|
23
20
|
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
strictMode: true
|
|
34
|
-
}), this);
|
|
35
|
-
}
|
|
36
|
-
static {
|
|
37
|
-
g(this.prototype, "router", [service]);
|
|
38
|
-
}
|
|
39
|
-
#router = (i(this, "router"), void 0);
|
|
40
|
-
handleClick = event1 => {
|
|
41
|
-
assert('[BUG]', event1.target instanceof HTMLAnchorElement);
|
|
42
|
-
handle(this.router, event1.target, [], event1);
|
|
43
|
-
};
|
|
44
|
-
get isActive() {
|
|
45
|
-
let {
|
|
46
|
-
href: href1,
|
|
47
|
-
includeActiveQueryParams: includeActiveQueryParams1
|
|
48
|
-
} = this.args;
|
|
49
|
-
return isActive(this.router, href1, includeActiveQueryParams1);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
function isExternal(href1) {
|
|
53
|
-
if (!href1) return false;
|
|
54
|
-
if (href1.startsWith('#')) return false;
|
|
55
|
-
if (href1.startsWith('/')) return false;
|
|
56
|
-
return location.origin !== new URL(href1).origin;
|
|
57
|
-
}
|
|
58
|
-
function isActive(router1, href1, includeQueryParams1) {
|
|
59
|
-
if (!includeQueryParams1) {
|
|
60
|
-
/**
|
|
61
|
-
* is Active doesn't understand `href`, so we have to convert to RouteInfo-esque
|
|
62
|
-
*/
|
|
63
|
-
let info1 = router1.recognize(href1);
|
|
64
|
-
if (info1) {
|
|
65
|
-
let dynamicSegments1 = getParams(info1);
|
|
66
|
-
return router1.isActive(info1.name, ...dynamicSegments1);
|
|
67
|
-
}
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
let url1 = new URL(href1, location.origin);
|
|
71
|
-
let hrefQueryParams1 = new URLSearchParams(url1.searchParams);
|
|
72
|
-
let hrefPath1 = url1.pathname;
|
|
73
|
-
const currentPath1 = router1.currentURL?.split('?')[0];
|
|
74
|
-
if (!currentPath1) return false;
|
|
75
|
-
if (hrefPath1 !== currentPath1) return false;
|
|
76
|
-
const currentQueryParams1 = router1.currentRoute?.queryParams;
|
|
77
|
-
if (!currentQueryParams1) return false;
|
|
78
|
-
if (includeQueryParams1 === true) {
|
|
79
|
-
return Object.entries(currentQueryParams1).every(([key1, value1]) => {
|
|
80
|
-
return hrefQueryParams1.get(key1) === value1;
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
return includeQueryParams1.every(key1 => {
|
|
84
|
-
return hrefQueryParams1.get(key1) === currentQueryParams1[key1];
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
function getParams(currentRouteInfo1) {
|
|
88
|
-
let params1 = [];
|
|
89
|
-
while (currentRouteInfo1?.parent) {
|
|
90
|
-
let currentParams1 = currentRouteInfo1.params;
|
|
91
|
-
params1 = currentParams1 ? [currentParams1, ...params1] : params1;
|
|
92
|
-
currentRouteInfo1 = currentRouteInfo1.parent;
|
|
93
|
-
}
|
|
94
|
-
return params1.map(Object.values).flat();
|
|
95
|
-
}
|
|
21
|
+
const Link = setComponentTemplate(precompileTemplate("\n {{#let (link @href includeActiveQueryParams=@includeActiveQueryParams activeOnSubPaths=@activeOnSubPaths) as |l|}}\n {{#if l.isExternal}}\n <ExternalLink href={{@href}} ...attributes>\n {{yield (hash isExternal=true isActive=false)}}\n </ExternalLink>\n {{else}}\n <a data-active={{l.isActive}} href={{if @href @href \"##missing##\"}} {{on \"click\" l.handleClick}} ...attributes>\n {{yield (hash isExternal=false isActive=l.isActive)}}\n </a>\n {{/if}}\n {{/let}}\n", {
|
|
22
|
+
strictMode: true,
|
|
23
|
+
scope: () => ({
|
|
24
|
+
link,
|
|
25
|
+
ExternalLink,
|
|
26
|
+
hash,
|
|
27
|
+
on
|
|
28
|
+
})
|
|
29
|
+
}), templateOnly());
|
|
96
30
|
|
|
97
31
|
export { Link, Link as default };
|
|
98
32
|
//# sourceMappingURL=link.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sources":["../../src/components/link.gts"],"sourcesContent":["/**\n * TODO: make template-only component,\n * and use class-based modifier?\n *\n * This would require that modifiers could run pre-render\n */ import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { service } from '@ember/service';\nimport { handle } from '../proper-links.ts';\nimport { ExternalLink } from './external-link.gts';\nimport type RouterService from '@ember/routing/router-service';\nexport interface Signature {\n Element: HTMLAnchorElement;\n Args: {\n /**\n * the `href` string value to set on the anchor element.\n */ href: string;\n /**\n * When calculating the \"active\" state of the link, you may decide\n * whether or not you want to _require_ that all query params be considered (true)\n * or specify individual query params, ignoring anything not specified.\n *\n * For example:\n *\n * ```gjs live preview\n * import { Link } from 'ember-primitives';\n *\n * <template>\n * <Link @href=\"/\" @includeActiveQueryParams={{true}} as |a|>\n * ...\n * </Link>\n * </template>\n * ```\n *\n * the data-active state here will only be \"true\" on\n * - `/`\n * - `/?foo=2`\n * - `/?foo=&bar=`\n *\n */ includeActiveQueryParams?: true | string[];\n };\n Blocks: {\n default: [{\n /**\n * Indicates if the passed `href` is pointing to an external site.\n * Useful if you want your links to have additional context for when\n * a user is about to leave your site.\n *\n * For example:\n *\n * ```gjs live preview\n * import { Link } from 'ember-primitives';\n *\n * const MyLink = <template>\n * <Link @href={{@href}} as |a|>\n * {{yield}}\n * {{#if a.isExternal}}\n * ➚\n * {{/if}}\n * </Link>\n * </template>;\n *\n * <template>\n * <MyLink @href=\"https://developer.mozilla.org\">MDN</MyLink> \n * <MyLink @href=\"/\">Home</MyLink>\n * </template>\n * ```\n */ isExternal: boolean;\n /**\n * Indicates if the passed `href` is *active*, or the user is on the same basepath.\n * This allows consumers to style their link if they wish or style their text.\n * The active state will also be present on a `data-active` attribute on the generated anchor tag.\n *\n *\n * For example\n * ```gjs\n * import { Link, service } from 'ember-primitives';\n *\n * const MyLink = <template>\n * <Link @href=\"...\"> as |a|>\n * <span class=\"{{if a.isActive 'underline'}}\">\n * {{yield}}\n * </span>\n * </Link>\n * </template>\n *\n * <template>\n * {{#let (service 'router') as |router|}}\n * <MyLink @href={{router.currentURL}}>Ths page</MyLink> \n * <MyLink @href=\"/\">Home</MyLink>\n * {{/let}}\n * </template>\n * ```\n *\n * By default, the query params are omitted from `isActive` calculation, but you may\n * configure the query params to be included if you wish\n * See: `@includeActiveQueryParams`\n *\n * Note that external links are never active.\n */ isActive: boolean;\n }];\n };\n}\n/**\n * A light wrapper around the [Anchor element][mdn-a], which will appropriately make your link an external link if the passed `@href` is not on the same domain.\n *\n *\n * [mdn-a]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a\n */ export class Link extends Component<Signature> {\n static{\n template(`\n {{#if (isExternal @href)}}\n <ExternalLink href={{@href}} ...attributes>\n {{yield (hash isExternal=true isActive=false)}}\n </ExternalLink>\n {{else}}\n <a\n data-active={{this.isActive}}\n href={{if @href @href \"##missing##\"}}\n {{on \"click\" this.handleClick}}\n ...attributes\n >\n {{yield (hash isExternal=false isActive=this.isActive)}}\n </a>\n {{/if}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n @service\n router: RouterService;\n handleClick = (event1: MouseEvent)=>{\n assert('[BUG]', event1.target instanceof HTMLAnchorElement);\n handle(this.router, event1.target, [], event1);\n };\n get isActive() {\n let { href: href1, includeActiveQueryParams: includeActiveQueryParams1 } = this.args;\n return isActive(this.router, href1, includeActiveQueryParams1);\n }\n}\nexport default Link;\nfunction isExternal(href1: string) {\n if (!href1) return false;\n if (href1.startsWith('#')) return false;\n if (href1.startsWith('/')) return false;\n return location.origin !== new URL(href1).origin;\n}\nfunction isActive(router1: RouterService, href1: string, includeQueryParams1?: boolean | string[]) {\n if (!includeQueryParams1) {\n /**\n * is Active doesn't understand `href`, so we have to convert to RouteInfo-esque\n */ let info1 = router1.recognize(href1);\n if (info1) {\n let dynamicSegments1 = getParams(info1);\n return router1.isActive(info1.name, ...dynamicSegments1);\n }\n return false;\n }\n let url1 = new URL(href1, location.origin);\n let hrefQueryParams1 = new URLSearchParams(url1.searchParams);\n let hrefPath1 = url1.pathname;\n const currentPath1 = router1.currentURL?.split('?')[0];\n if (!currentPath1) return false;\n if (hrefPath1 !== currentPath1) return false;\n const currentQueryParams1 = router1.currentRoute?.queryParams;\n if (!currentQueryParams1) return false;\n if (includeQueryParams1 === true) {\n return Object.entries(currentQueryParams1).every(([key1, value1])=>{\n return hrefQueryParams1.get(key1) === value1;\n });\n }\n return includeQueryParams1.every((key1)=>{\n return hrefQueryParams1.get(key1) === currentQueryParams1[key1];\n });\n}\ntype RouteInfo = ReturnType<RouterService['recognize']>;\nfunction getParams(currentRouteInfo1: RouteInfo) {\n let params1: Record<string, string | unknown | undefined>[] = [];\n while(currentRouteInfo1?.parent){\n let currentParams1 = currentRouteInfo1.params;\n params1 = currentParams1 ? [\n currentParams1,\n ...params1\n ] : params1;\n currentRouteInfo1 = currentRouteInfo1.parent;\n }\n return params1.map(Object.values).flat();\n}\n"],"names":["Link","Component","setComponentTemplate","precompileTemplate","scope","isExternal","ExternalLink","hash","on","strictMode","g","this","prototype","service","i","void 0","handleClick","event1","assert","target","HTMLAnchorElement","handle","router","isActive","href","href1","includeActiveQueryParams","includeActiveQueryParams1","args","startsWith","location","origin","URL","router1","includeQueryParams1","info1","recognize","dynamicSegments1","getParams","name","url1","hrefQueryParams1","URLSearchParams","searchParams","hrefPath1","pathname","currentPath1","currentURL","split","currentQueryParams1","currentRoute","queryParams","Object","entries","every","key1","value1","get","currentRouteInfo1","params1","parent","currentParams1","params","map","values","flat"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"link.js","sources":["../../src/components/link.gts"],"sourcesContent":["/**\n * TODO: make template-only component,\n * and use class-based modifier?\n *\n * This would require that modifiers could run pre-render\n */ import { template } from \"@ember/template-compiler\";\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { link } from '../helpers/link.ts';\nimport { ExternalLink } from './external-link.gts';\nimport type { TOC } from '@ember/component/template-only';\nexport interface Signature {\n Element: HTMLAnchorElement;\n Args: {\n /**\n * the `href` string value to set on the anchor element.\n */ href: string;\n /**\n * When calculating the \"active\" state of the link, you may decide\n * whether or not you want to _require_ that all query params be considered (true)\n * or specify individual query params, ignoring anything not specified.\n *\n * For example:\n *\n * ```gjs live preview\n * import { Link } from 'ember-primitives';\n *\n * <template>\n * <Link @href=\"/\" @includeActiveQueryParams={{true}} as |a|>\n * ...\n * </Link>\n * </template>\n * ```\n *\n * the data-active state here will only be \"true\" on\n * - `/`\n * - `/?foo=2`\n * - `/?foo=&bar=`\n *\n */ includeActiveQueryParams?: true | string[];\n /**\n * When calculating the \"active\" state of the link, you may decide\n * whether or not you want to consider sub paths to be active when\n * child routes/urls are active.\n *\n * For example:\n *\n * ```gjs live preview\n * import { Link } from 'ember-primitives';\n *\n * <template>\n * <Link @href=\"/forum/1\" @activeOnSubPaths={{true}} as |a|>\n * ...\n * </Link>\n * </template>\n * ```\n *\n * the data-active state here will be \"true\" on\n * - `/forum/1`\n * - `/forum/1/posts`\n * - `/forum/1/posts/comments`\n * - `/forum/1/*etc*`\n *\n * if `@activeOnSubPaths` is set to false or left off\n * the data-active state here will only be \"true\" on\n * - `/forum/1`\n *\n */ activeOnSubPaths?: true;\n };\n Blocks: {\n default: [{\n /**\n * Indicates if the passed `href` is pointing to an external site.\n * Useful if you want your links to have additional context for when\n * a user is about to leave your site.\n *\n * For example:\n *\n * ```gjs live preview\n * import { Link } from 'ember-primitives';\n *\n * const MyLink = <template>\n * <Link @href={{@href}} as |a|>\n * {{yield}}\n * {{#if a.isExternal}}\n * ➚\n * {{/if}}\n * </Link>\n * </template>;\n *\n * <template>\n * <MyLink @href=\"https://developer.mozilla.org\">MDN</MyLink> \n * <MyLink @href=\"/\">Home</MyLink>\n * </template>\n * ```\n */ isExternal: boolean;\n /**\n * Indicates if the passed `href` is *active*, or the user is on the same basepath.\n * This allows consumers to style their link if they wish or style their text.\n * The active state will also be present on a `data-active` attribute on the generated anchor tag.\n *\n *\n * For example\n * ```gjs\n * import { Link, service } from 'ember-primitives';\n *\n * const MyLink = <template>\n * <Link @href=\"...\"> as |a|>\n * <span class=\"{{if a.isActive 'underline'}}\">\n * {{yield}}\n * </span>\n * </Link>\n * </template>\n *\n * <template>\n * {{#let (service 'router') as |router|}}\n * <MyLink @href={{router.currentURL}}>Ths page</MyLink> \n * <MyLink @href=\"/\">Home</MyLink>\n * {{/let}}\n * </template>\n * ```\n *\n * By default, the query params are omitted from `isActive` calculation, but you may\n * configure the query params to be included if you wish\n * See: `@includeActiveQueryParams`\n *\n * By default, only the exact route/url is considered for the `isActive` calculation,\n * but you may configure sub routes/paths to also be considered active\n * See: `@activeOnSubPaths`\n *\n * Note that external links are never active.\n */ isActive: boolean;\n }];\n };\n}\n/**\n * A light wrapper around the [Anchor element][mdn-a], which will appropriately make your link an external link if the passed `@href` is not on the same domain.\n *\n *\n * [mdn-a]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a\n */ export const Link: TOC<Signature> = template(`\n {{#let (link @href includeActiveQueryParams=@includeActiveQueryParams activeOnSubPaths=@activeOnSubPaths) as |l|}}\n {{#if l.isExternal}}\n <ExternalLink href={{@href}} ...attributes>\n {{yield (hash isExternal=true isActive=false)}}\n </ExternalLink>\n {{else}}\n <a\n data-active={{l.isActive}}\n href={{if @href @href \"##missing##\"}}\n {{on \"click\" l.handleClick}}\n ...attributes\n >\n {{yield (hash isExternal=false isActive=l.isActive)}}\n </a>\n {{/if}}\n {{/let}}\n`, {\n eval () {\n return eval(arguments[0]);\n }\n});\nexport default Link;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2VtYmVyLXByaW1pdGl2ZXMvZW1iZXItcHJpbWl0aXZlcy9lbWJlci1wcmltaXRpdmVzL3NyYy9jb21wb25lbnRzL2xpbmsuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVE9ETzogbWFrZSB0ZW1wbGF0ZS1vbmx5IGNvbXBvbmVudCxcbiAqIGFuZCB1c2UgY2xhc3MtYmFzZWQgbW9kaWZpZXI_XG4gKlxuICogVGhpcyB3b3VsZCByZXF1aXJlIHRoYXQgbW9kaWZpZXJzIGNvdWxkIHJ1biBwcmUtcmVuZGVyXG4gKi9cbmltcG9ydCB7IGhhc2ggfSBmcm9tICdAZW1iZXIvaGVscGVyJztcbmltcG9ydCB7IG9uIH0gZnJvbSAnQGVtYmVyL21vZGlmaWVyJztcblxuaW1wb3J0IHsgbGluayB9IGZyb20gJy4uL2hlbHBlcnMvbGluay50cyc7XG5pbXBvcnQgeyBFeHRlcm5hbExpbmsgfSBmcm9tICcuL2V4dGVybmFsLWxpbmsuZ3RzJztcblxuaW1wb3J0IHR5cGUgeyBUT0MgfSBmcm9tICdAZW1iZXIvY29tcG9uZW50L3RlbXBsYXRlLW9ubHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hdHVyZSB7XG4gIEVsZW1lbnQ6IEhUTUxBbmNob3JFbGVtZW50O1xuICBBcmdzOiB7XG4gICAgLyoqXG4gICAgICogdGhlIGBocmVmYCBzdHJpbmcgdmFsdWUgdG8gc2V0IG9uIHRoZSBhbmNob3IgZWxlbWVudC5cbiAgICAgKi9cbiAgICBocmVmOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogV2hlbiBjYWxjdWxhdGluZyB0aGUgXCJhY3RpdmVcIiBzdGF0ZSBvZiB0aGUgbGluaywgeW91IG1heSBkZWNpZGVcbiAgICAgKiB3aGV0aGVyIG9yIG5vdCB5b3Ugd2FudCB0byBfcmVxdWlyZV8gdGhhdCBhbGwgcXVlcnkgcGFyYW1zIGJlIGNvbnNpZGVyZWQgKHRydWUpXG4gICAgICogb3Igc3BlY2lmeSBpbmRpdmlkdWFsIHF1ZXJ5IHBhcmFtcywgaWdub3JpbmcgYW55dGhpbmcgbm90IHNwZWNpZmllZC5cbiAgICAgKlxuICAgICAqIEZvciBleGFtcGxlOlxuICAgICAqXG4gICAgICogYGBgZ2pzIGxpdmUgcHJldmlld1xuICAgICAqIGltcG9ydCB7IExpbmsgfSBmcm9tICdlbWJlci1wcmltaXRpdmVzJztcbiAgICAgKlxuICAgICAqIDx0ZW1wbGF0ZT5cbiAgICAgKiAgIDxMaW5rIEBocmVmPVwiL1wiIEBpbmNsdWRlQWN0aXZlUXVlcnlQYXJhbXM9e3t0cnVlfX0gYXMgfGF8PlxuICAgICAqICAgICAuLi5cbiAgICAgKiAgIDwvTGluaz5cbiAgICAgKiA8L3RlbXBsYXRlPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogdGhlIGRhdGEtYWN0aXZlIHN0YXRlIGhlcmUgd2lsbCBvbmx5IGJlIFwidHJ1ZVwiIG9uXG4gICAgICogLSBgL2BcbiAgICAgKiAtIGAvP2Zvbz0yYFxuICAgICAqIC0gYC8_Zm9vPSZiYXI9YFxuICAgICAqXG4gICAgICovXG4gICAgaW5jbHVkZUFjdGl2ZVF1ZXJ5UGFyYW1zPzogdHJ1ZSB8IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIFdoZW4gY2FsY3VsYXRpbmcgdGhlIFwiYWN0aXZlXCIgc3RhdGUgb2YgdGhlIGxpbmssIHlvdSBtYXkgZGVjaWRlXG4gICAgICogd2hldGhlciBvciBub3QgeW91IHdhbnQgdG8gY29uc2lkZXIgc3ViIHBhdGhzIHRvIGJlIGFjdGl2ZSB3aGVuXG4gICAgICogY2hpbGQgcm91dGVzL3VybHMgYXJlIGFjdGl2ZS5cbiAgICAgKlxuICAgICAqIEZvciBleGFtcGxlOlxuICAgICAqXG4gICAgICogYGBgZ2pzIGxpdmUgcHJldmlld1xuICAgICAqIGltcG9ydCB7IExpbmsgfSBmcm9tICdlbWJlci1wcmltaXRpdmVzJztcbiAgICAgKlxuICAgICAqIDx0ZW1wbGF0ZT5cbiAgICAgKiAgIDxMaW5rIEBocmVmPVwiL2ZvcnVtLzFcIiBAYWN0aXZlT25TdWJQYXRocz17e3RydWV9fSBhcyB8YXw-XG4gICAgICogICAgIC4uLlxuICAgICAqICAgPC9MaW5rPlxuICAgICAqIDwvdGVtcGxhdGU-XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiB0aGUgZGF0YS1hY3RpdmUgc3RhdGUgaGVyZSB3aWxsIGJlIFwidHJ1ZVwiIG9uXG4gICAgICogLSBgL2ZvcnVtLzFgXG4gICAgICogLSBgL2ZvcnVtLzEvcG9zdHNgXG4gICAgICogLSBgL2ZvcnVtLzEvcG9zdHMvY29tbWVudHNgXG4gICAgICogLSBgL2ZvcnVtLzEvKmV0YypgXG4gICAgICpcbiAgICAgKiBpZiBgQGFjdGl2ZU9uU3ViUGF0aHNgIGlzIHNldCB0byBmYWxzZSBvciBsZWZ0IG9mZlxuICAgICAqIHRoZSBkYXRhLWFjdGl2ZSBzdGF0ZSBoZXJlIHdpbGwgb25seSBiZSBcInRydWVcIiBvblxuICAgICAqIC0gYC9mb3J1bS8xYFxuICAgICAqXG4gICAgICovXG4gICAgYWN0aXZlT25TdWJQYXRocz86IHRydWU7XG4gIH07XG4gIEJsb2Nrczoge1xuICAgIGRlZmF1bHQ6IFtcbiAgICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluZGljYXRlcyBpZiB0aGUgcGFzc2VkIGBocmVmYCBpcyBwb2ludGluZyB0byBhbiBleHRlcm5hbCBzaXRlLlxuICAgICAgICAgKiBVc2VmdWwgaWYgeW91IHdhbnQgeW91ciBsaW5rcyB0byBoYXZlIGFkZGl0aW9uYWwgY29udGV4dCBmb3Igd2hlblxuICAgICAgICAgKiBhIHVzZXIgaXMgYWJvdXQgdG8gbGVhdmUgeW91ciBzaXRlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBGb3IgZXhhbXBsZTpcbiAgICAgICAgICpcbiAgICAgICAgICogYGBgZ2pzIGxpdmUgcHJldmlld1xuICAgICAgICAgKiBpbXBvcnQgeyBMaW5rIH0gZnJvbSAnZW1iZXItcHJpbWl0aXZlcyc7XG4gICAgICAgICAqXG4gICAgICAgICAqIGNvbnN0IE15TGluayA9IDx0ZW1wbGF0ZT5cbiAgICAgICAgICogICA8TGluayBAaHJlZj17e0BocmVmfX0gYXMgfGF8PlxuICAgICAgICAgKiAgICAge3t5aWVsZH19XG4gICAgICAgICAqICAgICB7eyNpZiBhLmlzRXh0ZXJuYWx9fVxuICAgICAgICAgKiAgICAgICDinppcbiAgICAgICAgICogICAgIHt7L2lmfX1cbiAgICAgICAgICogICA8L0xpbms-XG4gICAgICAgICAqIDwvdGVtcGxhdGU-O1xuICAgICAgICAgKlxuICAgICAgICAgKiA8dGVtcGxhdGU-XG4gICAgICAgICAqICAgPE15TGluayBAaHJlZj1cImh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnXCI-TUROPC9NeUxpbms-ICZuYnNwOyZuYnNwO1xuICAgICAgICAgKiAgIDxNeUxpbmsgQGhyZWY9XCIvXCI-SG9tZTwvTXlMaW5rPlxuICAgICAgICAgKiAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICogYGBgXG4gICAgICAgICAqL1xuICAgICAgICBpc0V4dGVybmFsOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogSW5kaWNhdGVzIGlmIHRoZSBwYXNzZWQgYGhyZWZgIGlzICphY3RpdmUqLCBvciB0aGUgdXNlciBpcyBvbiB0aGUgc2FtZSBiYXNlcGF0aC5cbiAgICAgICAgICogVGhpcyBhbGxvd3MgY29uc3VtZXJzIHRvIHN0eWxlIHRoZWlyIGxpbmsgaWYgdGhleSB3aXNoIG9yIHN0eWxlIHRoZWlyIHRleHQuXG4gICAgICAgICAqIFRoZSBhY3RpdmUgc3RhdGUgd2lsbCBhbHNvIGJlIHByZXNlbnQgb24gYSBgZGF0YS1hY3RpdmVgIGF0dHJpYnV0ZSBvbiB0aGUgZ2VuZXJhdGVkIGFuY2hvciB0YWcuXG4gICAgICAgICAqXG4gICAgICAgICAqXG4gICAgICAgICAqIEZvciBleGFtcGxlXG4gICAgICAgICAqIGBgYGdqc1xuICAgICAgICAgKiBpbXBvcnQgeyBMaW5rLCBzZXJ2aWNlIH0gZnJvbSAnZW1iZXItcHJpbWl0aXZlcyc7XG4gICAgICAgICAqXG4gICAgICAgICAqIGNvbnN0IE15TGluayA9IDx0ZW1wbGF0ZT5cbiAgICAgICAgICogICA8TGluayBAaHJlZj1cIi4uLlwiPiBhcyB8YXw-XG4gICAgICAgICAqICAgICA8c3BhbiBjbGFzcz1cInt7aWYgYS5pc0FjdGl2ZSAndW5kZXJsaW5lJ319XCI-XG4gICAgICAgICAqICAgICB7e3lpZWxkfX1cbiAgICAgICAgICogICAgIDwvc3Bhbj5cbiAgICAgICAgICogICA8L0xpbms-XG4gICAgICAgICAqIDwvdGVtcGxhdGU-XG4gICAgICAgICAqXG4gICAgICAgICAqIDx0ZW1wbGF0ZT5cbiAgICAgICAgICoge3sjbGV0IChzZXJ2aWNlICdyb3V0ZXInKSBhcyB8cm91dGVyfH19XG4gICAgICAgICAqICAgICA8TXlMaW5rIEBocmVmPXt7cm91dGVyLmN1cnJlbnRVUkx9fT5UaHMgcGFnZTwvTXlMaW5rPiAmbmJzcDsmbmJzcDtcbiAgICAgICAgICogICAgIDxNeUxpbmsgQGhyZWY9XCIvXCI-SG9tZTwvTXlMaW5rPlxuICAgICAgICAgKiAgIHt7L2xldH19XG4gICAgICAgICAqICA8L3RlbXBsYXRlPlxuICAgICAgICAgKiBgYGBcbiAgICAgICAgICpcbiAgICAgICAgICogQnkgZGVmYXVsdCwgdGhlIHF1ZXJ5IHBhcmFtcyBhcmUgb21pdHRlZCBmcm9tIGBpc0FjdGl2ZWAgY2FsY3VsYXRpb24sIGJ1dCB5b3UgbWF5XG4gICAgICAgICAqIGNvbmZpZ3VyZSB0aGUgcXVlcnkgcGFyYW1zIHRvIGJlIGluY2x1ZGVkIGlmIHlvdSB3aXNoXG4gICAgICAgICAqIFNlZTogYEBpbmNsdWRlQWN0aXZlUXVlcnlQYXJhbXNgXG4gICAgICAgICAqXG4gICAgICAgICAqIEJ5IGRlZmF1bHQsIG9ubHkgdGhlIGV4YWN0IHJvdXRlL3VybCBpcyBjb25zaWRlcmVkIGZvciB0aGUgYGlzQWN0aXZlYCBjYWxjdWxhdGlvbixcbiAgICAgICAgICogYnV0IHlvdSBtYXkgY29uZmlndXJlIHN1YiByb3V0ZXMvcGF0aHMgdG8gYWxzbyBiZSBjb25zaWRlcmVkIGFjdGl2ZVxuICAgICAgICAgKiBTZWU6IGBAYWN0aXZlT25TdWJQYXRoc2BcbiAgICAgICAgICpcbiAgICAgICAgICogTm90ZSB0aGF0IGV4dGVybmFsIGxpbmtzIGFyZSBuZXZlciBhY3RpdmUuXG4gICAgICAgICAqL1xuICAgICAgICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgICAgIH0sXG4gICAgXTtcbiAgfTtcbn1cblxuLyoqXG4gKiBBIGxpZ2h0IHdyYXBwZXIgYXJvdW5kIHRoZSBbQW5jaG9yIGVsZW1lbnRdW21kbi1hXSwgd2hpY2ggd2lsbCBhcHByb3ByaWF0ZWx5IG1ha2UgeW91ciBsaW5rIGFuIGV4dGVybmFsIGxpbmsgaWYgdGhlIHBhc3NlZCBgQGhyZWZgIGlzIG5vdCBvbiB0aGUgc2FtZSBkb21haW4uXG4gKlxuICpcbiAqIFttZG4tYV06IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hXG4gKi9cbmV4cG9ydCBjb25zdCBMaW5rOiBUT0M8U2lnbmF0dXJlPiA9IDx0ZW1wbGF0ZT5cbiAge3sjbGV0IChsaW5rIEBocmVmIGluY2x1ZGVBY3RpdmVRdWVyeVBhcmFtcz1AaW5jbHVkZUFjdGl2ZVF1ZXJ5UGFyYW1zIGFjdGl2ZU9uU3ViUGF0aHM9QGFjdGl2ZU9uU3ViUGF0aHMpIGFzIHxsfH19XG4gICAge3sjaWYgbC5pc0V4dGVybmFsfX1cbiAgICAgIDxFeHRlcm5hbExpbmsgaHJlZj17e0BocmVmfX0gLi4uYXR0cmlidXRlcz5cbiAgICAgICAge3t5aWVsZCAoaGFzaCBpc0V4dGVybmFsPXRydWUgaXNBY3RpdmU9ZmFsc2UpfX1cbiAgICAgIDwvRXh0ZXJuYWxMaW5rPlxuICAgIHt7ZWxzZX19XG4gICAgICA8YVxuICAgICAgICBkYXRhLWFjdGl2ZT17e2wuaXNBY3RpdmV9fVxuICAgICAgICBocmVmPXt7aWYgQGhyZWYgQGhyZWYgXCIjI21pc3NpbmcjI1wifX1cbiAgICAgICAge3tvbiBcImNsaWNrXCIgbC5oYW5kbGVDbGlja319XG4gICAgICAgIC4uLmF0dHJpYnV0ZXNcbiAgICAgID5cbiAgICAgICAge3t5aWVsZCAoaGFzaCBpc0V4dGVybmFsPWZhbHNlIGlzQWN0aXZlPWwuaXNBY3RpdmUpfX1cbiAgICAgIDwvYT5cbiAgICB7ey9pZn19XG4gIHt7L2xldH19XG48L3RlbXBsYXRlPjtcblxuZXhwb3J0IGRlZmF1bHQgTGluaztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Q0FLQztBQUNELFNBQVMsSUFBSSxRQUFRLGdCQUFnQjtBQUNyQyxTQUFTLEVBQUUsUUFBUSxrQkFBa0I7QUFFckMsU0FBUyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVMsWUFBWSxRQUFRLHNCQUFzQjtBQUVuRCxjQUFjLEdBQUcsUUFBUSxpQ0FBaUM7QUFFMUQsaUJBQWlCO0lBQ2YsU0FBUztJQUNUO1FBQ0U7O0tBRUMsR0FDRCxNQUFNLE1BQU07UUFDWjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXNCQyxHQUNELDJCQUEyQixJQUFJLEdBQUcsTUFBTTtRQUN4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBMkJDLEdBQ0QsbUJBQW1CLElBQUk7O0lBRXpCO1FBQ0U7Z0JBRUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQXdCQyxHQUNELFlBQVksT0FBTztnQkFDbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBbUNDLEdBQ0QsVUFBVSxPQUFPOzs7O0FBTXpCOzs7OztDQUtDLEdBQ0QsT0FBTyxNQUFNLE1BQU0sSUFBSSxhQUFhLFNBQVUsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQjlDLENBQUEsRUFBQTtJQUFBO1FBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO0lBQUQ7QUFBQSxHQUFFO0FBRVosZUFBZSxLQUFLIn0"],"names":["Link","setComponentTemplate","precompileTemplate","strictMode","scope","link","ExternalLink","hash","on","templateOnly"],"mappings":";;;;;;;;AAAA;;;;;;AAkJA;;;;;;MAMaA,IAAU,GAAAC,oBAAA,CAAaC,kBAAA,CAiBpC,ogBAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,IAAA;IAAAC,YAAA;IAAAC,IAAA;AAAAC,IAAAA,EAAAA;AAAA,GAAA,CAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
|
package/dist/components/menu.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import Component from '@glimmer/component';
|
|
2
|
+
import { hash } from '@ember/helper';
|
|
3
|
+
import { on } from '@ember/modifier';
|
|
2
4
|
import { guidFor } from '@ember/object/internals';
|
|
3
5
|
import { modifier } from 'ember-modifier';
|
|
4
6
|
import { cell } from 'ember-resources';
|
|
5
|
-
import { getTabsterAttribute, Types, getTabster } from 'tabster';
|
|
7
|
+
import { getTabsterAttribute, Types, getTabster, setTabsterAttribute } from 'tabster';
|
|
8
|
+
import { Popover } from './popover.js';
|
|
6
9
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
7
10
|
import { setComponentTemplate } from '@ember/component';
|
|
8
11
|
import templateOnly from '@ember/component/template-only';
|
|
9
|
-
import { on } from '@ember/modifier';
|
|
10
|
-
import { hash } from '@ember/helper';
|
|
11
|
-
import { Popover } from './popover.js';
|
|
12
12
|
|
|
13
13
|
const TABSTER_CONFIG_CONTENT = getTabsterAttribute({
|
|
14
14
|
mover: {
|
|
@@ -17,9 +17,9 @@ const TABSTER_CONFIG_CONTENT = getTabsterAttribute({
|
|
|
17
17
|
},
|
|
18
18
|
deloser: {}
|
|
19
19
|
}, true);
|
|
20
|
-
const TABSTER_CONFIG_TRIGGER =
|
|
20
|
+
const TABSTER_CONFIG_TRIGGER = {
|
|
21
21
|
deloser: {}
|
|
22
|
-
}
|
|
22
|
+
};
|
|
23
23
|
const Separator = setComponentTemplate(precompileTemplate("\n <div role=\"separator\" ...attributes>\n {{yield}}\n </div>\n", {
|
|
24
24
|
strictMode: true
|
|
25
25
|
}), templateOnly());
|
|
@@ -41,11 +41,11 @@ function focusOnHover(e1) {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
const Item = setComponentTemplate(precompileTemplate("\n <button type=\"button\" role=\"menuitem\" {{!-- @glint-ignore !--}} {{(if @onSelect (modifier on \"click\" @onSelect))}} {{on \"pointermove\" focusOnHover}} ...attributes>\n {{yield}}\n </button>\n", {
|
|
44
|
+
strictMode: true,
|
|
44
45
|
scope: () => ({
|
|
45
46
|
on,
|
|
46
47
|
focusOnHover
|
|
47
|
-
})
|
|
48
|
-
strictMode: true
|
|
48
|
+
})
|
|
49
49
|
}), templateOnly());
|
|
50
50
|
const installContent = modifier((element1, _1, {
|
|
51
51
|
isOpen: isOpen1,
|
|
@@ -77,6 +77,7 @@ const installContent = modifier((element1, _1, {
|
|
|
77
77
|
};
|
|
78
78
|
});
|
|
79
79
|
const Content = setComponentTemplate(precompileTemplate("\n {{#if @isOpen.current}}\n <@PopoverContent id={{@contentId}} role=\"menu\" data-tabster={{TABSTER_CONFIG_CONTENT}} tabindex=\"0\" {{installContent isOpen=@isOpen triggerElement=@triggerElement}} {{on \"click\" @isOpen.toggle}} ...attributes>\n {{yield (hash Item=Item Separator=Separator)}}\n </@PopoverContent>\n {{/if}}\n", {
|
|
80
|
+
strictMode: true,
|
|
80
81
|
scope: () => ({
|
|
81
82
|
TABSTER_CONFIG_CONTENT,
|
|
82
83
|
installContent,
|
|
@@ -84,20 +85,32 @@ const Content = setComponentTemplate(precompileTemplate("\n {{#if @isOpen.curre
|
|
|
84
85
|
hash,
|
|
85
86
|
Item,
|
|
86
87
|
Separator
|
|
87
|
-
})
|
|
88
|
-
strictMode: true
|
|
88
|
+
})
|
|
89
89
|
}), templateOnly());
|
|
90
|
-
const
|
|
91
|
-
triggerElement: triggerElement1
|
|
90
|
+
const trigger = modifier((element1, _1, {
|
|
91
|
+
triggerElement: triggerElement1,
|
|
92
|
+
isOpen: isOpen1,
|
|
93
|
+
contentId: contentId1,
|
|
94
|
+
setHook: setHook1
|
|
92
95
|
}) => {
|
|
96
|
+
element1.setAttribute('aria-haspopup', 'menu');
|
|
97
|
+
if (isOpen1.current) {
|
|
98
|
+
element1.setAttribute('aria-controls', contentId1);
|
|
99
|
+
element1.setAttribute('aria-expanded', 'true');
|
|
100
|
+
} else {
|
|
101
|
+
element1.removeAttribute('aria-controls');
|
|
102
|
+
element1.setAttribute('aria-expanded', 'false');
|
|
103
|
+
}
|
|
104
|
+
setTabsterAttribute(element1, TABSTER_CONFIG_TRIGGER);
|
|
105
|
+
const onTriggerClick1 = () => isOpen1.toggle();
|
|
106
|
+
element1.addEventListener('click', onTriggerClick1);
|
|
93
107
|
triggerElement1.current = element1;
|
|
108
|
+
setHook1(element1);
|
|
109
|
+
return () => {
|
|
110
|
+
element1.removeEventListener('click', onTriggerClick1);
|
|
111
|
+
};
|
|
94
112
|
});
|
|
95
|
-
const Trigger = setComponentTemplate(precompileTemplate("\n <button
|
|
96
|
-
scope: () => ({
|
|
97
|
-
TABSTER_CONFIG_TRIGGER,
|
|
98
|
-
installTrigger,
|
|
99
|
-
on
|
|
100
|
-
}),
|
|
113
|
+
const Trigger = setComponentTemplate(precompileTemplate("\n <button type=\"button\" {{@triggerModifier}} ...attributes>\n {{yield}}\n </button>\n", {
|
|
101
114
|
strictMode: true
|
|
102
115
|
}), templateOnly());
|
|
103
116
|
const IsOpen = () => cell(false);
|
|
@@ -105,16 +118,17 @@ const TriggerElement = () => cell();
|
|
|
105
118
|
class Menu extends Component {
|
|
106
119
|
contentId = guidFor(this);
|
|
107
120
|
static {
|
|
108
|
-
setComponentTemplate(precompileTemplate("\n {{#let (IsOpen) (TriggerElement) as |isOpen triggerEl|}}\n <Popover @flipOptions={{@flipOptions}} @middleware={{@middleware}} @offsetOptions={{@offsetOptions}} @placement={{@placement}} @shiftOptions={{@shiftOptions}} @strategy={{@strategy}} @inline={{@inline}} as |p|>\n {{
|
|
121
|
+
setComponentTemplate(precompileTemplate("\n {{#let (IsOpen) (TriggerElement) as |isOpen triggerEl|}}\n <Popover @flipOptions={{@flipOptions}} @middleware={{@middleware}} @offsetOptions={{@offsetOptions}} @placement={{@placement}} @shiftOptions={{@shiftOptions}} @strategy={{@strategy}} @inline={{@inline}} as |p|>\n {{#let (modifier trigger triggerElement=triggerEl isOpen=isOpen contentId=this.contentId setHook=p.setHook) as |triggerModifier|}}\n {{yield (hash trigger=triggerModifier Trigger=(component Trigger triggerModifier=triggerModifier) Content=(component Content PopoverContent=p.Content isOpen=isOpen triggerElement=triggerEl contentId=this.contentId) arrow=p.arrow isOpen=isOpen.current)}}\n {{/let}}\n </Popover>\n {{/let}}\n ", {
|
|
122
|
+
strictMode: true,
|
|
109
123
|
scope: () => ({
|
|
110
124
|
IsOpen,
|
|
111
125
|
TriggerElement,
|
|
112
126
|
Popover,
|
|
127
|
+
trigger,
|
|
113
128
|
hash,
|
|
114
129
|
Trigger,
|
|
115
130
|
Content
|
|
116
|
-
})
|
|
117
|
-
strictMode: true
|
|
131
|
+
})
|
|
118
132
|
}), this);
|
|
119
133
|
}
|
|
120
134
|
}
|