ku4web-components 6.4.80 → 6.4.81
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/angular/index.js +1 -1
- package/angular/index.mjs +1 -1
- package/dist/cjs/app-globals-3a1e7e63.js +5 -0
- package/dist/cjs/css-shim-aaf4fec9.js +6 -0
- package/dist/cjs/dom-14886762.js +75 -0
- package/dist/cjs/index-652a3cbf.js +14 -0
- package/dist/cjs/index-8e9e8864.js +3093 -0
- package/dist/cjs/{index-1e13241e.js → index-a9159bd6.js} +1 -1
- package/dist/cjs/index-c904eb3a.js +10 -0
- package/dist/cjs/{index-da3ed39d.js → index-f78c109e.js} +1 -1
- package/dist/cjs/ku4-carousel-controls.cjs.entry.js +10 -4
- package/dist/cjs/ku4-carousel-slide.cjs.entry.js +1 -1
- package/dist/cjs/ku4-carousel.cjs.entry.js +3 -3
- package/dist/cjs/ku4-col.cjs.entry.js +1 -1
- package/dist/cjs/ku4-drawer.cjs.entry.js +1 -1
- package/dist/cjs/ku4-feature.cjs.entry.js +2 -2
- package/dist/cjs/ku4-focus-trap.cjs.entry.js +26 -26
- package/dist/cjs/ku4-form.cjs.entry.js +3 -3
- package/dist/cjs/ku4-grid.cjs.entry.js +1 -1
- package/dist/cjs/ku4-label.cjs.entry.js +2 -2
- package/dist/cjs/ku4-mask.cjs.entry.js +2 -2
- package/dist/cjs/ku4-modal.cjs.entry.js +3 -3
- package/dist/cjs/ku4-panel.cjs.entry.js +1 -1
- package/dist/cjs/ku4-preview.cjs.entry.js +43 -14
- package/dist/cjs/ku4-tab-list.cjs.entry.js +4 -4
- package/dist/cjs/ku4-tab-panel.cjs.entry.js +3 -3
- package/dist/cjs/ku4-tab.cjs.entry.js +3 -3
- package/dist/cjs/ku4-table.cjs.entry.js +1 -1
- package/dist/cjs/ku4-tooltip.cjs.entry.js +2 -2
- package/dist/cjs/ku4-validation.cjs.entry.js +2 -2
- package/dist/cjs/ku4web-components.cjs.js +103 -8
- package/dist/cjs/loader.cjs.js +19 -3
- package/dist/cjs/{shadow-css-8940f82d.js → shadow-css-c44ea13a.js} +1 -1
- package/dist/cjs/{uid-d6942c42.js → uid-97baaecc.js} +1 -1
- package/dist/cjs/uid-eb3bec28.js +11 -0
- package/dist/collection/capabilities/a11y/aria.js +26 -0
- package/dist/collection/capabilities/angular/index.js +24 -0
- package/dist/collection/capabilities/decorators/deprecated.js +20 -0
- package/dist/collection/capabilities/decorators/index.js +3 -0
- package/dist/collection/capabilities/decorators/memoize.js +7 -0
- package/dist/collection/capabilities/dom/isFocusable.js +7 -0
- package/dist/collection/capabilities/dom/queryFocusable.js +2 -0
- package/dist/collection/capabilities/identity/uid.js +6 -0
- package/dist/collection/capabilities/mask/index.js +5 -0
- package/dist/collection/capabilities/mask/patterns/date.js +40 -0
- package/dist/collection/capabilities/mask/patterns/index.js +7 -0
- package/dist/collection/capabilities/react/index.js +25 -0
- package/dist/collection/capabilities/testing/html.js +14 -0
- package/dist/collection/capabilities/testing/styles.js +14 -0
- package/dist/collection/capabilities/vue/index.js +28 -0
- package/dist/collection/capabilities/vue3/index.js +26 -0
- package/dist/collection/collection-manifest.json +31 -0
- package/dist/collection/components/ku4-carousel/ku4-carousel.css +221 -0
- package/dist/collection/components/ku4-carousel/ku4-carousel.js +362 -0
- package/dist/collection/components/ku4-carousel-controls/ku4-carousel-controls.css +32 -0
- package/dist/collection/components/ku4-carousel-controls/ku4-carousel-controls.js +112 -0
- package/dist/collection/components/ku4-carousel-slide/ku4-carousel-slide.css +3 -0
- package/dist/collection/components/ku4-carousel-slide/ku4-carousel-slide.js +159 -0
- package/dist/collection/components/ku4-col/ku4-col.css +601 -0
- package/dist/collection/components/ku4-col/ku4-col.js +288 -0
- package/dist/collection/components/ku4-drawer/ku4-drawer.css +56 -0
- package/dist/collection/components/ku4-drawer/ku4-drawer.js +163 -0
- package/dist/collection/components/ku4-feature/ku4-feature.js +70 -0
- package/dist/collection/components/ku4-focus-trap/ku4-focus-trap.css +3 -0
- package/dist/collection/components/ku4-focus-trap/ku4-focus-trap.js +441 -0
- package/dist/collection/components/ku4-form/ku4-form.js +225 -0
- package/dist/collection/components/ku4-grid/ku4-grid.css +751 -0
- package/dist/collection/components/ku4-grid/ku4-grid.js +408 -0
- package/dist/collection/components/ku4-label/ku4-label.css +36 -0
- package/dist/collection/components/ku4-label/ku4-label.js +115 -0
- package/dist/collection/components/ku4-mask/ku4-mask.css +3 -0
- package/dist/collection/components/ku4-mask/ku4-mask.js +458 -0
- package/dist/collection/components/ku4-modal/ku4-modal.css +85 -0
- package/dist/collection/components/ku4-modal/ku4-modal.js +208 -0
- package/dist/collection/components/ku4-panel/ku4-panel.css +14 -0
- package/dist/collection/components/ku4-panel/ku4-panel.js +119 -0
- package/dist/collection/components/ku4-preview/ku4-preview.css +23 -0
- package/dist/collection/components/ku4-preview/ku4-preview.js +266 -0
- package/dist/collection/components/ku4-tab/ku4-tab.css +82 -0
- package/dist/collection/components/ku4-tab/ku4-tab.js +191 -0
- package/dist/collection/components/ku4-tab-list/ku4-tab-list.css +6 -0
- package/dist/collection/components/ku4-tab-list/ku4-tab-list.js +118 -0
- package/dist/collection/components/ku4-tab-panel/ku4-tab-panel.css +26 -0
- package/dist/collection/components/ku4-tab-panel/ku4-tab-panel.js +166 -0
- package/dist/collection/components/ku4-table/ku4-table.css +116 -0
- package/dist/collection/components/ku4-table/ku4-table.js +120 -0
- package/dist/collection/components/ku4-tooltip/ku4-tooltip.css +56 -0
- package/dist/collection/components/ku4-tooltip/ku4-tooltip.js +274 -0
- package/dist/collection/components/ku4-validation/ku4-validation.css +19 -0
- package/dist/collection/components/ku4-validation/ku4-validation.js +364 -0
- package/dist/collection/components/ku4-validation/validate.js +14 -0
- package/dist/collection/index.js +1 -0
- package/dist/collection/security.js +27 -0
- package/dist/esm/app-globals-0f993ce5.js +3 -0
- package/dist/esm/css-shim-091f949f.js +4 -0
- package/dist/esm/dom-a385e381.js +73 -0
- package/dist/esm/{index-9e3af5f4.js → index-26cde78a.js} +1 -1
- package/dist/esm/index-3e1e5aa3.js +3 -0
- package/dist/esm/index-516c5188.js +3057 -0
- package/dist/esm/index-7ff6e718.js +3 -0
- package/dist/esm/{index-20c3926d.js → index-bdb0771a.js} +1 -1
- package/dist/esm/ku4-carousel-controls.entry.js +10 -4
- package/dist/esm/ku4-carousel-slide.entry.js +1 -1
- package/dist/esm/ku4-carousel.entry.js +3 -3
- package/dist/esm/ku4-col.entry.js +1 -1
- package/dist/esm/ku4-drawer.entry.js +1 -1
- package/dist/esm/ku4-feature.entry.js +2 -2
- package/dist/esm/ku4-focus-trap.entry.js +3 -3
- package/dist/esm/ku4-form.entry.js +3 -3
- package/dist/esm/ku4-grid.entry.js +1 -1
- package/dist/esm/ku4-label.entry.js +2 -2
- package/dist/esm/ku4-mask.entry.js +2 -2
- package/dist/esm/ku4-modal.entry.js +3 -3
- package/dist/esm/ku4-panel.entry.js +1 -1
- package/dist/esm/ku4-preview.entry.js +34 -5
- package/dist/esm/ku4-tab-list.entry.js +4 -4
- package/dist/esm/ku4-tab-panel.entry.js +3 -3
- package/dist/esm/ku4-tab.entry.js +3 -3
- package/dist/esm/ku4-table.entry.js +1 -1
- package/dist/esm/ku4-tooltip.entry.js +2 -2
- package/dist/esm/ku4-validation.entry.js +2 -2
- package/dist/esm/ku4web-components.js +103 -8
- package/dist/esm/loader.js +19 -3
- package/dist/esm/{shadow-css-5d2d01ce.js → shadow-css-ef431969.js} +1 -1
- package/dist/esm/{uid-15f8c937.js → uid-1ec3509b.js} +1 -1
- package/dist/esm/uid-9dbd7ad0.js +9 -0
- package/dist/esm-es5/{index-9e3af5f4.js → index-26cde78a.js} +1 -1
- package/dist/esm-es5/{index-20c3926d.js → index-bdb0771a.js} +1 -1
- package/dist/esm-es5/ku4-carousel-controls.entry.js +1 -1
- package/dist/esm-es5/ku4-carousel-slide.entry.js +1 -1
- package/dist/esm-es5/ku4-carousel.entry.js +1 -1
- package/dist/esm-es5/ku4-col.entry.js +1 -1
- package/dist/esm-es5/ku4-drawer.entry.js +1 -1
- package/dist/esm-es5/ku4-feature.entry.js +1 -1
- package/dist/esm-es5/ku4-focus-trap.entry.js +1 -1
- package/dist/esm-es5/ku4-form.entry.js +1 -1
- package/dist/esm-es5/ku4-grid.entry.js +1 -1
- package/dist/esm-es5/ku4-label.entry.js +1 -1
- package/dist/esm-es5/ku4-mask.entry.js +1 -1
- package/dist/esm-es5/ku4-modal.entry.js +1 -1
- package/dist/esm-es5/ku4-panel.entry.js +1 -1
- package/dist/esm-es5/ku4-preview.entry.js +1 -1
- package/dist/esm-es5/ku4-tab-list.entry.js +1 -1
- package/dist/esm-es5/ku4-tab-panel.entry.js +1 -1
- package/dist/esm-es5/ku4-tab.entry.js +1 -1
- package/dist/esm-es5/ku4-table.entry.js +1 -1
- package/dist/esm-es5/ku4-tooltip.entry.js +1 -1
- package/dist/esm-es5/ku4-validation.entry.js +1 -1
- package/dist/esm-es5/ku4web-components.js +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/{shadow-css-5d2d01ce.js → shadow-css-ef431969.js} +0 -0
- package/dist/esm-es5/uid-1ec3509b.js +1 -0
- package/dist/index.js +1 -1
- package/dist/ku4web-components/app-globals-0f993ce5.js +3 -0
- package/dist/ku4web-components/app-globals-497eb362.system.js +1 -0
- package/dist/ku4web-components/css-shim-091f949f.js +4 -0
- package/dist/ku4web-components/css-shim-c5bffe6b.system.js +1 -0
- package/dist/ku4web-components/dom-99eb7b76.system.js +21 -0
- package/dist/ku4web-components/dom-a385e381.js +73 -0
- package/dist/ku4web-components/index-380cbe3a.system.js +1 -0
- package/dist/ku4web-components/index-3e1e5aa3.js +3 -0
- package/dist/ku4web-components/index-516c5188.js +3057 -0
- package/dist/ku4web-components/index-7d482e8a.system.js +1 -0
- package/dist/ku4web-components/index-7ff6e718.js +3 -0
- package/dist/ku4web-components/index-fd0c89d0.system.js +1 -0
- package/dist/ku4web-components/index.esm.js +1 -0
- package/dist/ku4web-components/index.system.js +1 -0
- package/dist/ku4web-components/ku4-carousel-controls.entry.js +89 -0
- package/dist/ku4web-components/ku4-carousel-controls.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-carousel-slide.entry.js +47 -0
- package/dist/ku4web-components/ku4-carousel-slide.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-carousel.entry.js +168 -0
- package/dist/ku4web-components/ku4-carousel.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-col.entry.js +75 -0
- package/dist/ku4web-components/ku4-col.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-drawer.entry.js +35 -0
- package/dist/ku4web-components/ku4-drawer.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-feature.entry.js +29 -0
- package/dist/ku4web-components/ku4-feature.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-focus-trap.entry.js +323 -0
- package/dist/ku4web-components/ku4-focus-trap.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-form.entry.js +112 -0
- package/dist/ku4web-components/ku4-form.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-grid.entry.js +108 -0
- package/dist/ku4web-components/ku4-grid.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-label.entry.js +70 -0
- package/dist/ku4web-components/ku4-label.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-mask.entry.js +342 -0
- package/dist/ku4web-components/ku4-mask.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-modal.entry.js +75 -0
- package/dist/ku4web-components/ku4-modal.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-panel.entry.js +49 -0
- package/dist/ku4web-components/ku4-panel.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-preview.entry.js +128 -0
- package/dist/ku4web-components/ku4-preview.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-tab-list.entry.js +76 -0
- package/dist/ku4web-components/ku4-tab-list.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-tab-panel.entry.js +72 -0
- package/dist/ku4web-components/ku4-tab-panel.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-tab.entry.js +63 -0
- package/dist/ku4web-components/ku4-tab.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-table.entry.js +79 -0
- package/dist/ku4web-components/ku4-table.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-tooltip.entry.js +120 -0
- package/dist/ku4web-components/ku4-tooltip.system.entry.js +1 -0
- package/dist/ku4web-components/ku4-validation.entry.js +162 -0
- package/dist/ku4web-components/ku4-validation.system.entry.js +1 -0
- package/dist/ku4web-components/ku4web-components.css +299 -1
- package/dist/ku4web-components/ku4web-components.esm.js +129 -1
- package/dist/ku4web-components/ku4web-components.js +1 -1
- package/dist/ku4web-components/ku4web-components.system.js +1 -0
- package/dist/ku4web-components/p-019be0a7.entry.js +1 -0
- package/dist/ku4web-components/{p-8f480cb5.system.entry.js → p-01ae9e4c.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-02e342f7.system.entry.js → p-03d6fb35.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-3c182b2f.entry.js → p-0c05c4ad.entry.js} +1 -1
- package/dist/ku4web-components/{p-04948520.system.entry.js → p-0cc659d9.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-2aac6c90.js → p-0ded083e.js} +1 -1
- package/dist/ku4web-components/{p-761b2cbc.system.entry.js → p-0e222607.system.entry.js} +1 -1
- package/dist/ku4web-components/p-17d548db.js +1 -0
- package/dist/ku4web-components/{p-c1068ffa.js → p-189cde73.js} +1 -1
- package/dist/ku4web-components/{p-2f2d74dc.system.entry.js → p-2300b0b7.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-8faad87d.entry.js → p-25ca27d4.entry.js} +1 -1
- package/dist/ku4web-components/{p-f1cc1b2d.entry.js → p-2a6d5089.entry.js} +1 -1
- package/dist/ku4web-components/{p-9c0d71af.system.entry.js → p-341081d6.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-e4ff1c36.entry.js → p-55d15007.entry.js} +1 -1
- package/dist/ku4web-components/{p-d6ec34c3.entry.js → p-57ec7c89.entry.js} +1 -1
- package/dist/ku4web-components/{p-15ee8b8e.system.entry.js → p-5d6cf40f.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-01debe28.system.entry.js → p-5eb48119.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-67adc5b1.system.entry.js → p-64bcfdeb.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-71d57b8b.system.js → p-6bf18c7c.system.js} +0 -0
- package/dist/ku4web-components/{p-0eb73a0f.system.entry.js → p-6c5699e3.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-840704e4.entry.js → p-6d63d17d.entry.js} +1 -1
- package/dist/ku4web-components/{p-f06bf0ae.entry.js → p-6f47f245.entry.js} +1 -1
- package/dist/ku4web-components/{p-b4488a7d.system.entry.js → p-75161edb.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-0e010c10.system.entry.js → p-801fab11.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-0f8708f8.entry.js → p-8c0cb5c1.entry.js} +1 -1
- package/dist/ku4web-components/{p-2edd35f8.system.entry.js → p-92bc6bf1.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-7273db60.entry.js → p-94dd5fad.entry.js} +1 -1
- package/dist/ku4web-components/{p-660ebd19.entry.js → p-993123b6.entry.js} +1 -1
- package/dist/ku4web-components/{p-c50540ec.system.entry.js → p-9f1bc248.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-f6455ab3.js → p-b10887b2.js} +0 -0
- package/dist/ku4web-components/{p-a5c7f5f7.system.entry.js → p-b3bdc458.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-d360c64a.entry.js → p-b60c60e4.entry.js} +1 -1
- package/dist/ku4web-components/{p-0785fc39.system.js → p-c3293202.system.js} +1 -1
- package/dist/ku4web-components/{p-7a47027b.entry.js → p-c459bbb7.entry.js} +1 -1
- package/dist/ku4web-components/{p-90c37394.entry.js → p-c62c66be.entry.js} +1 -1
- package/dist/ku4web-components/{p-c19fd841.entry.js → p-c646a177.entry.js} +1 -1
- package/dist/ku4web-components/{p-8e2fca0b.system.entry.js → p-ca547c71.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-ce6eddc3.system.entry.js → p-d6f80a73.system.entry.js} +1 -1
- package/dist/ku4web-components/p-db3040f3.system.js +1 -0
- package/dist/ku4web-components/{p-19a8c0f6.system.entry.js → p-db493d59.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-77f1853c.entry.js → p-dc35b1af.entry.js} +1 -1
- package/dist/ku4web-components/p-deb02b56.entry.js +1 -0
- package/dist/ku4web-components/{p-3874127d.entry.js → p-df1544c7.entry.js} +1 -1
- package/dist/ku4web-components/{p-22eed87f.entry.js → p-e10de631.entry.js} +1 -1
- package/dist/ku4web-components/{p-8d9eb18b.system.entry.js → p-e29d66a7.system.entry.js} +1 -1
- package/dist/ku4web-components/{p-f0b1c07c.system.js → p-e2ae0504.system.js} +1 -1
- package/dist/ku4web-components/p-e641f14e.system.js +1 -0
- package/dist/ku4web-components/{p-adddaeef.entry.js → p-e6937d21.entry.js} +1 -1
- package/dist/ku4web-components/{p-232787a5.system.entry.js → p-f0e309a9.system.entry.js} +1 -1
- package/dist/ku4web-components/shadow-css-27708fdd.system.js +13 -0
- package/dist/ku4web-components/shadow-css-ef431969.js +388 -0
- package/dist/ku4web-components/uid-9dbd7ad0.js +9 -0
- package/dist/ku4web-components/uid-fb867945.system.js +1 -0
- package/dist/types/components/ku4-carousel-controls/ku4-carousel-controls.d.ts +1 -0
- package/dist/types/components/ku4-carousel-slide/ku4-carousel-slide.d.ts +6 -0
- package/dist/types/components.d.ts +8 -0
- package/package.json +15 -15
- package/react/index.js +1 -1
- package/react/index.mjs +1 -1
- package/vue/index.js +1 -1
- package/vue/index.mjs +1 -1
- package/vue3/index.js +1 -1
- package/vue3/index.mjs +1 -1
- package/dist/esm-es5/uid-15f8c937.js +0 -1
- package/dist/ku4web-components/p-b590da20.entry.js +0 -1
- package/dist/ku4web-components/p-be7890a1.system.js +0 -1
- package/dist/ku4web-components/p-cbbb4b1b.js +0 -1
- package/dist/ku4web-components/p-eb58b04b.system.js +0 -1
- package/dist/ku4web-components/p-eb6882c8.entry.js +0 -1
@@ -0,0 +1,441 @@
|
|
1
|
+
import { Component, Prop, Method, Watch, Element, h } from '@stencil/core';
|
2
|
+
import { Assert, deduplicate } from 'ku4es-kernel';
|
3
|
+
import { Event, Key } from 'ku4es-ui-kernel';
|
4
|
+
import { ariaHidden } from '../../capabilities/a11y/aria';
|
5
|
+
import isFocusable from '../../capabilities/dom/isFocusable';
|
6
|
+
import { queryTabbable, queryFocusable } from '../../capabilities/dom/queryFocusable';
|
7
|
+
const { tab } = Key;
|
8
|
+
const tabShift = Key.tab.shift;
|
9
|
+
const tabAlt = Key.tab.alt;
|
10
|
+
const tabAltShift = Key.tab.alt.shift;
|
11
|
+
/**
|
12
|
+
* @description ku4-focus-trap
|
13
|
+
*/
|
14
|
+
export class Ku4FocusTrap {
|
15
|
+
constructor() {
|
16
|
+
this.iframes = [];
|
17
|
+
/**
|
18
|
+
* Focus trap will be active when true.
|
19
|
+
*/
|
20
|
+
this.active = false;
|
21
|
+
this.handleKeyDown = this.handleKeyDown.bind(this);
|
22
|
+
this.handleKeyUp = this.handleKeyUp.bind(this);
|
23
|
+
this.handleMouse = this.handleMouse.bind(this);
|
24
|
+
}
|
25
|
+
activeHandler(value) {
|
26
|
+
value ? this.handleActivate() : this.handleDeactivate();
|
27
|
+
}
|
28
|
+
/**
|
29
|
+
* Activate focus trap
|
30
|
+
* @param {Element} [element] - Element to return focus to when trap is deactivated.
|
31
|
+
*/
|
32
|
+
async activate(element) {
|
33
|
+
this.lastActiveElement = element || document.querySelector(this.return || null);
|
34
|
+
this.active = true;
|
35
|
+
}
|
36
|
+
/**
|
37
|
+
* Deactivate focus trap.
|
38
|
+
*/
|
39
|
+
async deactivate() {
|
40
|
+
this.active = false;
|
41
|
+
}
|
42
|
+
handleActivate() {
|
43
|
+
this.lastActiveElement = this.lastActiveElement || document.activeElement;
|
44
|
+
if (this.lastActiveElement && this.lastActiveElement.blur) {
|
45
|
+
this.lastActiveElement.blur();
|
46
|
+
}
|
47
|
+
this.addEventListeners(this.elements);
|
48
|
+
ariaHidden(this.outerElements, true);
|
49
|
+
window.requestAnimationFrame(() => {
|
50
|
+
const element = (document.querySelector(this.initial || null) ||
|
51
|
+
this.focusableElements[0] ||
|
52
|
+
this.trapElements[0]);
|
53
|
+
element.blur();
|
54
|
+
element.focus();
|
55
|
+
this.activateTraps();
|
56
|
+
});
|
57
|
+
}
|
58
|
+
handleDeactivate() {
|
59
|
+
this.removeEventListeners(this.elements);
|
60
|
+
this.deactivateTraps();
|
61
|
+
ariaHidden(this.outerElements);
|
62
|
+
if (this.lastActiveElement && this.lastActiveElement.focus) {
|
63
|
+
this.lastActiveElement.focus();
|
64
|
+
}
|
65
|
+
this.lastActiveElement = null;
|
66
|
+
}
|
67
|
+
// Handles keydown and mutes the event if it occurs on a focusable
|
68
|
+
// item that is in the focus trap. This allows this block to force
|
69
|
+
// the decision as to who will get next focus and not let that
|
70
|
+
// decisioning fall out to the browser.
|
71
|
+
handleKeyDown(e) {
|
72
|
+
if ((tabShift.didFire(e) || tabAltShift.didFire(e))) {
|
73
|
+
try {
|
74
|
+
if (this.iframes.length > 0 && (this.trapElements[1] === e.target ||
|
75
|
+
!Assert.isNull(e.target.getAttribute('ku4-focus-wrap')) ||
|
76
|
+
this.iframes.some(iframe => iframe.contains(e.target)))) {
|
77
|
+
return;
|
78
|
+
}
|
79
|
+
if (this.trapElements[0] === e.target) {
|
80
|
+
this.trapElements[1].focus();
|
81
|
+
return Event.mute(e);
|
82
|
+
}
|
83
|
+
const nextIndex = this.focusableElements.indexOf(e.target) - 1;
|
84
|
+
const next = nextIndex < 0 ? this.focusableElements.length - 1 : nextIndex;
|
85
|
+
this.focusableElements[next].focus();
|
86
|
+
return Event.mute(e);
|
87
|
+
}
|
88
|
+
catch (e) {
|
89
|
+
return Event.mute(e);
|
90
|
+
}
|
91
|
+
}
|
92
|
+
if ((tab.didFire(e) || tabAlt.didFire(e))) {
|
93
|
+
try {
|
94
|
+
if (this.iframes.length > 0 && (this.trapElements[0] === e.target ||
|
95
|
+
!Assert.isNull(e.target.getAttribute('ku4-focus-wrap')) ||
|
96
|
+
this.iframes.some(iframe => iframe.contains(e.target)))) {
|
97
|
+
return;
|
98
|
+
}
|
99
|
+
if (this.trapElements[1] === e.target) {
|
100
|
+
this.trapElements[0].focus();
|
101
|
+
return Event.mute(e);
|
102
|
+
}
|
103
|
+
const nextIndex = this.focusableElements.indexOf(e.target) + 1;
|
104
|
+
const next = nextIndex >= this.focusableElements.length ? 0 : nextIndex;
|
105
|
+
this.focusableElements[next].focus();
|
106
|
+
return Event.mute(e);
|
107
|
+
}
|
108
|
+
catch (e) {
|
109
|
+
return Event.mute(e);
|
110
|
+
}
|
111
|
+
}
|
112
|
+
}
|
113
|
+
// Handles keyup and mutes the event if it occurs on a focusable
|
114
|
+
// item that is in the focus trap. This allows for us to determine
|
115
|
+
// if we need to move to the next focusable if the key is released
|
116
|
+
// on one of the trapElements (the two dynamically created wrapper
|
117
|
+
// elements that create the trap);
|
118
|
+
handleKeyUp(e) {
|
119
|
+
const index = this.trapElements.indexOf(e.target);
|
120
|
+
if (index === 0 && (tabShift.didFire(e) || tabAltShift.didFire(e))) {
|
121
|
+
const element = this.focusableElements[this.focusableElements.length - 1] || this.trapElements[1];
|
122
|
+
element.focus();
|
123
|
+
return Event.mute(e);
|
124
|
+
}
|
125
|
+
if (index === 1 && (tab.didFire(e) || tabAlt.didFire(e))) {
|
126
|
+
const element = this.focusableElements[0] || this.trapElements[0];
|
127
|
+
element.focus();
|
128
|
+
return Event.mute(e);
|
129
|
+
}
|
130
|
+
}
|
131
|
+
// Prevents all mouse activity on any elements that are not focusable
|
132
|
+
// inside of the active trap.
|
133
|
+
handleMouse(e) {
|
134
|
+
if (!this.elements.some(element => element === e.target)) {
|
135
|
+
Event.mute(e);
|
136
|
+
}
|
137
|
+
}
|
138
|
+
addEventListeners(elements) {
|
139
|
+
elements.forEach(element => element.addEventListener('keydown', this.handleKeyDown, { passive: true }));
|
140
|
+
elements.forEach(element => element.addEventListener('keyup', this.handleKeyUp, { passive: true }));
|
141
|
+
window.addEventListener('click', this.handleMouse, { passive: true });
|
142
|
+
window.addEventListener('mousedown', this.handleMouse, { passive: true });
|
143
|
+
window.addEventListener('mouseup', this.handleMouse, { passive: true });
|
144
|
+
window.addEventListener('touchstart', this.handleMouse, { passive: true });
|
145
|
+
}
|
146
|
+
removeEventListeners(elements) {
|
147
|
+
elements.forEach(element => element.removeEventListener('keydown', this.handleKeyDown, true));
|
148
|
+
elements.forEach(element => element.removeEventListener('keyup', this.handleKeyUp, true));
|
149
|
+
window.removeEventListener('click', this.handleMouse, true);
|
150
|
+
window.removeEventListener('mousedown', this.handleMouse, true);
|
151
|
+
window.removeEventListener('mouseup', this.handleMouse, true);
|
152
|
+
window.addEventListener('touchstart', this.handleMouse, true);
|
153
|
+
}
|
154
|
+
activateTraps() {
|
155
|
+
this.setTraps(0);
|
156
|
+
}
|
157
|
+
deactivateTraps() {
|
158
|
+
this.setTraps(-1);
|
159
|
+
}
|
160
|
+
setTraps(value) {
|
161
|
+
[].slice.call(this.host.querySelectorAll('[ku4-focus-trap], [ku4-focus-wrap]'))
|
162
|
+
.forEach(element => element.setAttribute('tabindex', value));
|
163
|
+
}
|
164
|
+
wrap(element) {
|
165
|
+
const fragment = document.createDocumentFragment();
|
166
|
+
fragment.appendChild(this.createWrapTag());
|
167
|
+
fragment.appendChild(element.cloneNode());
|
168
|
+
fragment.appendChild(this.createWrapTag());
|
169
|
+
element.parentNode.replaceChild(fragment, element);
|
170
|
+
}
|
171
|
+
createTrapTag() {
|
172
|
+
return this.createTag('ku4-focus-trap');
|
173
|
+
}
|
174
|
+
createWrapTag() {
|
175
|
+
return this.createTag('ku4-focus-wrap');
|
176
|
+
}
|
177
|
+
createTag(type) {
|
178
|
+
const trap = document.createElement('button');
|
179
|
+
trap.setAttribute(type, '');
|
180
|
+
trap.setAttribute('tabindex', '0');
|
181
|
+
trap.setAttribute('aria-hidden', 'true');
|
182
|
+
trap.style.position = 'static';
|
183
|
+
trap.style.display = 'block';
|
184
|
+
trap.style.width = '0';
|
185
|
+
trap.style.height = '0';
|
186
|
+
trap.style.margin = '0';
|
187
|
+
trap.style.padding = '0';
|
188
|
+
trap.style.border = 'none';
|
189
|
+
trap.style.outline = 'none';
|
190
|
+
return trap;
|
191
|
+
}
|
192
|
+
initialize() {
|
193
|
+
// All elements in this focus-trap
|
194
|
+
const innerElements = [].slice.call(this.host.querySelectorAll('*'));
|
195
|
+
// May need to break this out as it is really included for the mouse events
|
196
|
+
// e.g. for an overlay on a modal to make that clickable that is make it
|
197
|
+
// so this does not include it for muting the mouse events. This component
|
198
|
+
// is very powerful in shutting everything down and needs to allow for
|
199
|
+
// the ability to let items be clickable.
|
200
|
+
const inclusions = [].slice.call(document.querySelectorAll(this.include || null) || []);
|
201
|
+
// May need to break this out as it is really here to explicitly exclude items from
|
202
|
+
// being read out by screen readers. That is make them hidden so that screen
|
203
|
+
// readers get the same treatment as regular users.
|
204
|
+
const exclusions = [].slice.call(document.querySelectorAll(this.exclude) || []);
|
205
|
+
let shadowExclusions = [];
|
206
|
+
(this.excludeShadow || '').split(',').forEach((selector) => {
|
207
|
+
if (Assert.isNullOrEmpty(selector)) {
|
208
|
+
return;
|
209
|
+
}
|
210
|
+
try {
|
211
|
+
const parts = selector.trim().replace(/\s/, '|').split('|');
|
212
|
+
const shadowElements = document.querySelector(parts[0]).shadowRoot.querySelectorAll(parts[1]);
|
213
|
+
shadowExclusions = shadowExclusions.concat([].slice.call(shadowElements || []));
|
214
|
+
}
|
215
|
+
catch (e) {
|
216
|
+
// eslint-disable-next-line no-console
|
217
|
+
console.error('Invalid shadow selector', selector);
|
218
|
+
}
|
219
|
+
});
|
220
|
+
// Get all of the iframes as we cannot reach into them to find
|
221
|
+
// their focusable elements. We can only focus on the trap elements
|
222
|
+
// that wrap it
|
223
|
+
this.iframes = [].slice.call(this.host.querySelectorAll('iframe') || []);
|
224
|
+
this.iframes.forEach(iframe => this.wrap(iframe));
|
225
|
+
// Set element in this trap deduplicating any that may have been duplicated
|
226
|
+
// with careless user inclusions.
|
227
|
+
this.elements = deduplicate([...queryTabbable(this.host), ...inclusions]);
|
228
|
+
// Get the focusable elements. This may be overkill as we really only need
|
229
|
+
// to know the first and last focusable. If that is the case, we may be
|
230
|
+
// able to just use the first and last `this.element` it is still not clear.
|
231
|
+
this.focusableElements = this.elements
|
232
|
+
.reduce((acc, value) => {
|
233
|
+
if (isFocusable(value) && !this.trapElements.includes(value)) {
|
234
|
+
acc.push(value);
|
235
|
+
}
|
236
|
+
return acc;
|
237
|
+
}, []);
|
238
|
+
/**
|
239
|
+
* We can not currently do this this way because MSEdge
|
240
|
+
* is reordering querySelectorAll items such that they
|
241
|
+
* not selecting in DOM order. If/when we dump support
|
242
|
+
* for MSEdge (non Chromium) or it fixes support we
|
243
|
+
* can move to this more efficient way. Until then, we
|
244
|
+
* need to use the && condition .includes in the
|
245
|
+
* `reduce` above. It will be more efficient to do it
|
246
|
+
* the below way when we can.
|
247
|
+
*/
|
248
|
+
// this.focusableElements.shift();
|
249
|
+
// this.focusableElements.pop();
|
250
|
+
//This may need to be defied more specifically as a11y as it is needed
|
251
|
+
//for the screen reader capabilities and may be interfering with
|
252
|
+
//regular usage.
|
253
|
+
this.outerElements = [...queryFocusable(document.body), ...exclusions, ...shadowExclusions]
|
254
|
+
.filter(element => !(element === this.host ||
|
255
|
+
innerElements.includes(element) ||
|
256
|
+
inclusions.includes(element)));
|
257
|
+
}
|
258
|
+
componentDidLoad() {
|
259
|
+
const trapStart = this.createTrapTag();
|
260
|
+
const trapEnd = this.createTrapTag();
|
261
|
+
this.trapElements = [trapStart, trapEnd];
|
262
|
+
this.host.insertBefore(trapStart, this.host.firstChild);
|
263
|
+
this.host.appendChild(trapEnd);
|
264
|
+
this.initialize();
|
265
|
+
if (this.active) {
|
266
|
+
this.handleActivate();
|
267
|
+
}
|
268
|
+
else {
|
269
|
+
this.handleDeactivate();
|
270
|
+
}
|
271
|
+
}
|
272
|
+
disconnectedCallback() {
|
273
|
+
if (this.active) {
|
274
|
+
this.handleDeactivate();
|
275
|
+
}
|
276
|
+
}
|
277
|
+
render() {
|
278
|
+
return h("slot", null);
|
279
|
+
}
|
280
|
+
static get is() { return "ku4-focus-trap"; }
|
281
|
+
static get encapsulation() { return "shadow"; }
|
282
|
+
static get originalStyleUrls() { return {
|
283
|
+
"$": ["ku4-focus-trap.scss"]
|
284
|
+
}; }
|
285
|
+
static get styleUrls() { return {
|
286
|
+
"$": ["ku4-focus-trap.css"]
|
287
|
+
}; }
|
288
|
+
static get properties() { return {
|
289
|
+
"active": {
|
290
|
+
"type": "boolean",
|
291
|
+
"mutable": true,
|
292
|
+
"complexType": {
|
293
|
+
"original": "boolean",
|
294
|
+
"resolved": "boolean",
|
295
|
+
"references": {}
|
296
|
+
},
|
297
|
+
"required": false,
|
298
|
+
"optional": false,
|
299
|
+
"docs": {
|
300
|
+
"tags": [],
|
301
|
+
"text": "Focus trap will be active when true."
|
302
|
+
},
|
303
|
+
"attribute": "active",
|
304
|
+
"reflect": true,
|
305
|
+
"defaultValue": "false"
|
306
|
+
},
|
307
|
+
"include": {
|
308
|
+
"type": "string",
|
309
|
+
"mutable": false,
|
310
|
+
"complexType": {
|
311
|
+
"original": "string",
|
312
|
+
"resolved": "string",
|
313
|
+
"references": {}
|
314
|
+
},
|
315
|
+
"required": false,
|
316
|
+
"optional": false,
|
317
|
+
"docs": {
|
318
|
+
"tags": [],
|
319
|
+
"text": "A querySelector of elements to include in the trap that\nare not children of this focus trap. This can be useful\nfor specific situations such as modal overlays."
|
320
|
+
},
|
321
|
+
"attribute": "include",
|
322
|
+
"reflect": false
|
323
|
+
},
|
324
|
+
"exclude": {
|
325
|
+
"type": "string",
|
326
|
+
"mutable": false,
|
327
|
+
"complexType": {
|
328
|
+
"original": "string",
|
329
|
+
"resolved": "string",
|
330
|
+
"references": {}
|
331
|
+
},
|
332
|
+
"required": false,
|
333
|
+
"optional": false,
|
334
|
+
"docs": {
|
335
|
+
"tags": [],
|
336
|
+
"text": "A querySelector of elements to explicitly exclude. This\ncan be useful for greedy accessibility apis and screen\nreader fallover. Pass a comma delimited string of multiple\nselectors to target multiple exclusions."
|
337
|
+
},
|
338
|
+
"attribute": "exclude",
|
339
|
+
"reflect": false
|
340
|
+
},
|
341
|
+
"excludeShadow": {
|
342
|
+
"type": "string",
|
343
|
+
"mutable": false,
|
344
|
+
"complexType": {
|
345
|
+
"original": "string",
|
346
|
+
"resolved": "string",
|
347
|
+
"references": {}
|
348
|
+
},
|
349
|
+
"required": false,
|
350
|
+
"optional": false,
|
351
|
+
"docs": {
|
352
|
+
"tags": [],
|
353
|
+
"text": "A querySelector of shadow elements to explicitly exclude. This\ncan be useful for greedy accessibility apis and screen\nreader fallover. Pass a comma delimited string of multiple\nselectors to target multiple exclusions. Pass selectors that\nstarts with the target components host lightDom element\nE.g. `'ku4-carousel .next, ku4-carousel .prev'` will explicitly\nexclude the target ku4-carousel next and previous buttons from\nbeing navigable by greedy accessibility tools, i.e. VoiceOver."
|
354
|
+
},
|
355
|
+
"attribute": "exclude-shadow",
|
356
|
+
"reflect": false
|
357
|
+
},
|
358
|
+
"initial": {
|
359
|
+
"type": "string",
|
360
|
+
"mutable": false,
|
361
|
+
"complexType": {
|
362
|
+
"original": "string",
|
363
|
+
"resolved": "string",
|
364
|
+
"references": {}
|
365
|
+
},
|
366
|
+
"required": false,
|
367
|
+
"optional": false,
|
368
|
+
"docs": {
|
369
|
+
"tags": [],
|
370
|
+
"text": "A querySelector of element to initially focus"
|
371
|
+
},
|
372
|
+
"attribute": "initial",
|
373
|
+
"reflect": false
|
374
|
+
},
|
375
|
+
"return": {
|
376
|
+
"type": "string",
|
377
|
+
"mutable": false,
|
378
|
+
"complexType": {
|
379
|
+
"original": "string",
|
380
|
+
"resolved": "string",
|
381
|
+
"references": {}
|
382
|
+
},
|
383
|
+
"required": false,
|
384
|
+
"optional": false,
|
385
|
+
"docs": {
|
386
|
+
"tags": [],
|
387
|
+
"text": "A querySelector of element to return focus to"
|
388
|
+
},
|
389
|
+
"attribute": "return",
|
390
|
+
"reflect": false
|
391
|
+
}
|
392
|
+
}; }
|
393
|
+
static get methods() { return {
|
394
|
+
"activate": {
|
395
|
+
"complexType": {
|
396
|
+
"signature": "(element?: any) => Promise<void>",
|
397
|
+
"parameters": [{
|
398
|
+
"tags": [{
|
399
|
+
"name": "param",
|
400
|
+
"text": "element - Element to return focus to when trap is deactivated."
|
401
|
+
}],
|
402
|
+
"text": "- Element to return focus to when trap is deactivated."
|
403
|
+
}],
|
404
|
+
"references": {
|
405
|
+
"Promise": {
|
406
|
+
"location": "global"
|
407
|
+
}
|
408
|
+
},
|
409
|
+
"return": "Promise<void>"
|
410
|
+
},
|
411
|
+
"docs": {
|
412
|
+
"text": "Activate focus trap",
|
413
|
+
"tags": [{
|
414
|
+
"name": "param",
|
415
|
+
"text": "element - Element to return focus to when trap is deactivated."
|
416
|
+
}]
|
417
|
+
}
|
418
|
+
},
|
419
|
+
"deactivate": {
|
420
|
+
"complexType": {
|
421
|
+
"signature": "() => Promise<void>",
|
422
|
+
"parameters": [],
|
423
|
+
"references": {
|
424
|
+
"Promise": {
|
425
|
+
"location": "global"
|
426
|
+
}
|
427
|
+
},
|
428
|
+
"return": "Promise<void>"
|
429
|
+
},
|
430
|
+
"docs": {
|
431
|
+
"text": "Deactivate focus trap.",
|
432
|
+
"tags": []
|
433
|
+
}
|
434
|
+
}
|
435
|
+
}; }
|
436
|
+
static get elementRef() { return "host"; }
|
437
|
+
static get watchers() { return [{
|
438
|
+
"propName": "active",
|
439
|
+
"methodName": "activeHandler"
|
440
|
+
}]; }
|
441
|
+
}
|
@@ -0,0 +1,225 @@
|
|
1
|
+
import { Component, Method, Element, h, Prop } from '@stencil/core';
|
2
|
+
import { Assert } from 'ku4es-kernel';
|
3
|
+
import { form } from 'ku4es-ui-kernel';
|
4
|
+
/**
|
5
|
+
* @description ku4-form
|
6
|
+
*/
|
7
|
+
export class Ku4Form {
|
8
|
+
constructor() {
|
9
|
+
this.validate = this.validate.bind(this);
|
10
|
+
this.handleReset = this.handleReset.bind(this);
|
11
|
+
}
|
12
|
+
/**
|
13
|
+
* Returns a list of the names of all of the fields
|
14
|
+
* associated with this form.
|
15
|
+
*/
|
16
|
+
async listFieldNames() {
|
17
|
+
return form.readFieldNames(this.form);
|
18
|
+
}
|
19
|
+
/**
|
20
|
+
* Validates this form. This method is automatically called
|
21
|
+
* internally on submit of the form only allowing a successful
|
22
|
+
* submit if the form is valid.
|
23
|
+
*/
|
24
|
+
async validate() {
|
25
|
+
const { fields } = this;
|
26
|
+
const methods = fields.map(field => field.validate());
|
27
|
+
this.isValid = await Promise.all(methods).then(values => !values.some(v => v === false));
|
28
|
+
this.invalid = !this.isValid;
|
29
|
+
return this.isValid;
|
30
|
+
}
|
31
|
+
/**
|
32
|
+
* A string of the name of the field to invalidate
|
33
|
+
* @param {string} name
|
34
|
+
*/
|
35
|
+
async invalidate(name) {
|
36
|
+
if (Assert.isArray(name)) {
|
37
|
+
name.forEach((name) => {
|
38
|
+
const field = this.fields.find(field => field.for === name);
|
39
|
+
if (field) {
|
40
|
+
field.invalid = true;
|
41
|
+
}
|
42
|
+
});
|
43
|
+
}
|
44
|
+
else {
|
45
|
+
const field = this.fields.find(field => field.for === name);
|
46
|
+
if (field) {
|
47
|
+
field.invalid = true;
|
48
|
+
}
|
49
|
+
}
|
50
|
+
this.invalid = true;
|
51
|
+
return this;
|
52
|
+
}
|
53
|
+
/**
|
54
|
+
* Reads data from the associated form
|
55
|
+
*/
|
56
|
+
async read() {
|
57
|
+
return form.read(this.form);
|
58
|
+
}
|
59
|
+
/**
|
60
|
+
* Writes data to the associated form
|
61
|
+
*/
|
62
|
+
async write(data) {
|
63
|
+
form.write(this.form, data);
|
64
|
+
Object.keys(data).forEach((name) => {
|
65
|
+
try {
|
66
|
+
this.form.querySelector(`[name="${name}"]`)
|
67
|
+
.dispatchEvent(new Event('change'));
|
68
|
+
}
|
69
|
+
catch (e) {
|
70
|
+
/* Fail silently */
|
71
|
+
}
|
72
|
+
});
|
73
|
+
return this;
|
74
|
+
}
|
75
|
+
get form() {
|
76
|
+
return this.host.querySelector('form');
|
77
|
+
}
|
78
|
+
get fields() {
|
79
|
+
return [].slice.call(this.form.querySelectorAll('ku4-validation'));
|
80
|
+
}
|
81
|
+
handleReset() {
|
82
|
+
this.isValid = true;
|
83
|
+
this.invalid = !this.isValid;
|
84
|
+
}
|
85
|
+
componentWillLoad() {
|
86
|
+
const { form } = this;
|
87
|
+
if (Assert.exists(form)) {
|
88
|
+
const onsubmit = form.onsubmit || (() => { });
|
89
|
+
form.onsubmit = (e) => {
|
90
|
+
e.preventDefault();
|
91
|
+
this.validate()
|
92
|
+
.then(valid => valid && onsubmit.call(form, e))
|
93
|
+
.then(returnValue => !Assert.isFalse(returnValue) && form.submit());
|
94
|
+
return false;
|
95
|
+
};
|
96
|
+
form.addEventListener('reset', this.handleReset);
|
97
|
+
this.fields.forEach(field => field.addEventListener('validated', this.validate));
|
98
|
+
}
|
99
|
+
}
|
100
|
+
disconnectedCallback() {
|
101
|
+
const { form } = this;
|
102
|
+
if (Assert.exists(form)) {
|
103
|
+
form.removeEventListener('reset', this.handleReset);
|
104
|
+
this.fields.forEach(field => field.removeEventListener('validated', this.validate));
|
105
|
+
}
|
106
|
+
}
|
107
|
+
render() {
|
108
|
+
return h("slot", null);
|
109
|
+
}
|
110
|
+
static get is() { return "ku4-form"; }
|
111
|
+
static get properties() { return {
|
112
|
+
"invalid": {
|
113
|
+
"type": "boolean",
|
114
|
+
"mutable": true,
|
115
|
+
"complexType": {
|
116
|
+
"original": "boolean",
|
117
|
+
"resolved": "boolean",
|
118
|
+
"references": {}
|
119
|
+
},
|
120
|
+
"required": false,
|
121
|
+
"optional": false,
|
122
|
+
"docs": {
|
123
|
+
"tags": [],
|
124
|
+
"text": "Set to true to display as invalid"
|
125
|
+
},
|
126
|
+
"attribute": "invalid",
|
127
|
+
"reflect": true
|
128
|
+
}
|
129
|
+
}; }
|
130
|
+
static get methods() { return {
|
131
|
+
"listFieldNames": {
|
132
|
+
"complexType": {
|
133
|
+
"signature": "() => Promise<any>",
|
134
|
+
"parameters": [],
|
135
|
+
"references": {
|
136
|
+
"Promise": {
|
137
|
+
"location": "global"
|
138
|
+
}
|
139
|
+
},
|
140
|
+
"return": "Promise<any>"
|
141
|
+
},
|
142
|
+
"docs": {
|
143
|
+
"text": "Returns a list of the names of all of the fields\nassociated with this form.",
|
144
|
+
"tags": []
|
145
|
+
}
|
146
|
+
},
|
147
|
+
"validate": {
|
148
|
+
"complexType": {
|
149
|
+
"signature": "() => Promise<any>",
|
150
|
+
"parameters": [],
|
151
|
+
"references": {
|
152
|
+
"Promise": {
|
153
|
+
"location": "global"
|
154
|
+
}
|
155
|
+
},
|
156
|
+
"return": "Promise<any>"
|
157
|
+
},
|
158
|
+
"docs": {
|
159
|
+
"text": "Validates this form. This method is automatically called\ninternally on submit of the form only allowing a successful\nsubmit if the form is valid.",
|
160
|
+
"tags": []
|
161
|
+
}
|
162
|
+
},
|
163
|
+
"invalidate": {
|
164
|
+
"complexType": {
|
165
|
+
"signature": "(name: any) => Promise<this>",
|
166
|
+
"parameters": [{
|
167
|
+
"tags": [{
|
168
|
+
"name": "param",
|
169
|
+
"text": "name"
|
170
|
+
}],
|
171
|
+
"text": ""
|
172
|
+
}],
|
173
|
+
"references": {
|
174
|
+
"Promise": {
|
175
|
+
"location": "global"
|
176
|
+
}
|
177
|
+
},
|
178
|
+
"return": "Promise<this>"
|
179
|
+
},
|
180
|
+
"docs": {
|
181
|
+
"text": "A string of the name of the field to invalidate",
|
182
|
+
"tags": [{
|
183
|
+
"name": "param",
|
184
|
+
"text": "name"
|
185
|
+
}]
|
186
|
+
}
|
187
|
+
},
|
188
|
+
"read": {
|
189
|
+
"complexType": {
|
190
|
+
"signature": "() => Promise<any>",
|
191
|
+
"parameters": [],
|
192
|
+
"references": {
|
193
|
+
"Promise": {
|
194
|
+
"location": "global"
|
195
|
+
}
|
196
|
+
},
|
197
|
+
"return": "Promise<any>"
|
198
|
+
},
|
199
|
+
"docs": {
|
200
|
+
"text": "Reads data from the associated form",
|
201
|
+
"tags": []
|
202
|
+
}
|
203
|
+
},
|
204
|
+
"write": {
|
205
|
+
"complexType": {
|
206
|
+
"signature": "(data: any) => Promise<this>",
|
207
|
+
"parameters": [{
|
208
|
+
"tags": [],
|
209
|
+
"text": ""
|
210
|
+
}],
|
211
|
+
"references": {
|
212
|
+
"Promise": {
|
213
|
+
"location": "global"
|
214
|
+
}
|
215
|
+
},
|
216
|
+
"return": "Promise<this>"
|
217
|
+
},
|
218
|
+
"docs": {
|
219
|
+
"text": "Writes data to the associated form",
|
220
|
+
"tags": []
|
221
|
+
}
|
222
|
+
}
|
223
|
+
}; }
|
224
|
+
static get elementRef() { return "host"; }
|
225
|
+
}
|