@3t-transform/threeteeui 0.1.20 → 0.1.22
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/dist/cjs/{index-b8a62ede.js → index-dc6cc829.js} +2 -88
- package/dist/cjs/loader.cjs.js +3 -4
- package/dist/cjs/tttx-button.cjs.entry.js +24 -24
- package/dist/cjs/tttx-filter.cjs.entry.js +152 -152
- package/dist/cjs/tttx-form.cjs.entry.js +363 -363
- package/dist/cjs/tttx-icon.cjs.entry.js +11 -11
- package/dist/cjs/tttx-keyvalue-block.cjs.entry.js +59 -59
- package/dist/cjs/tttx-list.cjs.entry.js +43 -43
- package/dist/cjs/tttx-loading-spinner.cjs.entry.js +16 -16
- package/dist/cjs/tttx-sorter.cjs.entry.js +112 -0
- package/dist/cjs/tttx-standalone-input.cjs.entry.js +60 -60
- package/dist/cjs/tttx-toolbar.cjs.entry.js +10 -10
- package/dist/cjs/tttx.cjs.js +3 -7
- package/dist/collection/collection-manifest.json +3 -2
- package/dist/collection/components/atoms/tttx-button/tttx-button.js +110 -110
- package/dist/collection/components/atoms/tttx-button/tttx-button.stories.js +14 -14
- package/dist/collection/components/atoms/tttx-icon/tttx-icon.js +62 -62
- package/dist/collection/components/atoms/tttx-icon/tttx-icon.stories.js +22 -22
- package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.js +109 -109
- package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.stories.js +38 -38
- package/dist/collection/components/atoms/tttx-loading-spinner/tttx-loading-spinner.js +67 -67
- package/dist/collection/components/atoms/tttx-loading-spinner/tttx-loading-spinner.stories.js +17 -17
- package/dist/collection/components/molecules/tttx-filter/tttx-filter.js +325 -325
- package/dist/collection/components/molecules/tttx-filter/tttx-filter.stories.js +89 -89
- package/dist/collection/components/molecules/tttx-form/lib/setErrorState.js +35 -35
- package/dist/collection/components/molecules/tttx-form/lib/validityCheck.js +58 -58
- package/dist/collection/components/molecules/tttx-form/tttx-form.js +364 -364
- package/dist/collection/components/molecules/tttx-form/tttx-form.stories.js +127 -127
- package/dist/collection/components/molecules/tttx-list/tttx-list.js +105 -105
- package/dist/collection/components/molecules/tttx-list/tttx-list.stories.js +43 -43
- package/dist/collection/components/molecules/tttx-sorter/tttx-sorter.css +116 -0
- package/dist/collection/components/molecules/tttx-sorter/tttx-sorter.js +224 -0
- package/dist/collection/components/molecules/tttx-sorter/tttx-sorter.stories.js +47 -0
- package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.js +627 -627
- package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.js +157 -157
- package/dist/collection/components/molecules/tttx-toolbar/tttx-toolbar.js +44 -44
- package/dist/collection/components/molecules/tttx-toolbar/tttx-toolbar.stories.js +14 -14
- package/dist/collection/components/palette.stories.js +7 -7
- package/dist/collection/docs/gettingstarted-developer.stories.js +5 -5
- package/dist/collection/icons.js +2838 -2838
- package/dist/collection/index.js +1 -1
- package/dist/collection/shared/domsanitiser.options.js +14 -14
- package/dist/components/index.d.ts +1 -9
- package/dist/components/index.js +2 -1
- package/dist/components/tttx-button.js +48 -48
- package/dist/components/tttx-filter.js +184 -184
- package/dist/components/tttx-form.js +380 -380
- package/dist/components/tttx-icon2.js +28 -28
- package/dist/components/tttx-keyvalue-block.js +76 -76
- package/dist/components/tttx-list.js +65 -65
- package/dist/components/tttx-loading-spinner.js +33 -33
- package/dist/components/tttx-sorter.d.ts +11 -0
- package/dist/components/tttx-sorter.js +141 -0
- package/dist/components/tttx-standalone-input.js +107 -107
- package/dist/components/tttx-toolbar.js +26 -26
- package/dist/esm/{index-e888a5f4.js → index-86faeaab.js} +3 -88
- package/dist/esm/loader.js +3 -4
- package/dist/esm/polyfills/core-js.js +0 -0
- package/dist/esm/polyfills/css-shim.js +1 -1
- package/dist/esm/polyfills/dom.js +0 -0
- package/dist/esm/polyfills/es5-html-element.js +0 -0
- package/dist/esm/polyfills/index.js +0 -0
- package/dist/esm/polyfills/system.js +0 -0
- package/dist/esm/tttx-button.entry.js +24 -24
- package/dist/esm/tttx-filter.entry.js +152 -152
- package/dist/esm/tttx-form.entry.js +363 -363
- package/dist/esm/tttx-icon.entry.js +11 -11
- package/dist/esm/tttx-keyvalue-block.entry.js +59 -59
- package/dist/esm/tttx-list.entry.js +43 -43
- package/dist/esm/tttx-loading-spinner.entry.js +16 -16
- package/dist/esm/tttx-sorter.entry.js +108 -0
- package/dist/esm/tttx-standalone-input.entry.js +60 -60
- package/dist/esm/tttx-toolbar.entry.js +10 -10
- package/dist/esm/tttx.js +3 -4
- package/dist/tttx/p-12fc0b16.entry.js +3 -0
- package/dist/tttx/p-52a47b7c.js +2 -0
- package/dist/tttx/p-5d9b6bc0.entry.js +1 -0
- package/dist/tttx/{p-41f5b296.entry.js → p-603f6ebe.entry.js} +1 -1
- package/dist/tttx/{p-e145951b.entry.js → p-72b4c98a.entry.js} +1 -1
- package/dist/tttx/{p-043f9b8a.entry.js → p-8f3badad.entry.js} +1 -1
- package/dist/tttx/{p-4cf3e1e0.entry.js → p-ae48fe5a.entry.js} +1 -1
- package/dist/tttx/{p-01f4628e.entry.js → p-bdb054b2.entry.js} +1 -1
- package/dist/tttx/{p-dc5c356b.entry.js → p-c72d1a03.entry.js} +1 -1
- package/dist/tttx/{p-96bbf1ed.entry.js → p-e25d5fe2.entry.js} +1 -1
- package/dist/tttx/{p-b3a03986.entry.js → p-f1d7eb35.entry.js} +1 -1
- package/dist/tttx/tttx.esm.js +1 -1
- package/dist/types/components/atoms/tttx-button/tttx-button.d.ts +10 -10
- package/dist/types/components/atoms/tttx-button/tttx-button.stories.d.ts +10 -10
- package/dist/types/components/atoms/tttx-icon/tttx-icon.d.ts +5 -5
- package/dist/types/components/atoms/tttx-icon/tttx-icon.stories.d.ts +20 -20
- package/dist/types/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.d.ts +7 -7
- package/dist/types/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.stories.d.ts +9 -9
- package/dist/types/components/atoms/tttx-loading-spinner/tttx-loading-spinner.d.ts +6 -6
- package/dist/types/components/atoms/tttx-loading-spinner/tttx-loading-spinner.stories.d.ts +17 -17
- package/dist/types/components/molecules/tttx-filter/tttx-filter.d.ts +37 -37
- package/dist/types/components/molecules/tttx-filter/tttx-filter.stories.d.ts +43 -43
- package/dist/types/components/molecules/tttx-form/lib/setErrorState.d.ts +13 -13
- package/dist/types/components/molecules/tttx-form/lib/validityCheck.d.ts +17 -17
- package/dist/types/components/molecules/tttx-form/tttx-form.d.ts +114 -114
- package/dist/types/components/molecules/tttx-form/tttx-form.stories.d.ts +13 -13
- package/dist/types/components/molecules/tttx-list/tttx-list.d.ts +11 -11
- package/dist/types/components/molecules/tttx-list/tttx-list.stories.d.ts +14 -14
- package/dist/types/components/molecules/tttx-sorter/interfaces.d.ts +9 -0
- package/dist/types/components/molecules/tttx-sorter/tttx-sorter.d.ts +19 -0
- package/dist/types/components/molecules/tttx-sorter/tttx-sorter.stories.d.ts +30 -0
- package/dist/types/components/molecules/tttx-standalone-input/tttx-standalone-input.d.ts +56 -56
- package/dist/types/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.d.ts +123 -123
- package/dist/types/components/molecules/tttx-toolbar/tttx-toolbar.d.ts +4 -4
- package/dist/types/components/molecules/tttx-toolbar/tttx-toolbar.stories.d.ts +13 -13
- package/dist/types/components/palette.stories.d.ts +6 -6
- package/dist/types/components.d.ts +27 -0
- package/dist/types/docs/gettingstarted-developer.stories.d.ts +5 -5
- package/dist/types/icons.d.ts +2 -2
- package/dist/types/index.d.ts +1 -1
- package/dist/types/shared/domsanitiser.options.d.ts +10 -10
- package/dist/types/stencil-public-runtime.d.ts +3 -59
- package/loader/index.d.ts +0 -9
- package/package.json +1 -1
- package/dist/tttx/p-16723053.entry.js +0 -1
- package/dist/tttx/p-195e693c.entry.js +0 -1
- package/dist/tttx/p-2c32a944.entry.js +0 -1
- package/dist/tttx/p-34052e38.entry.js +0 -1
- package/dist/tttx/p-6ad738c8.entry.js +0 -1
- package/dist/tttx/p-6dff6b5a.entry.js +0 -3
- package/dist/tttx/p-8824113c.entry.js +0 -1
- package/dist/tttx/p-936ae935.entry.js +0 -1
- package/dist/tttx/p-c3ad551a.entry.js +0 -1
- package/dist/tttx/p-d7bbc7af.entry.js +0 -1
- package/dist/tttx/p-e02d7a43.entry.js +0 -1
- package/dist/tttx/p-e77e83b5.entry.js +0 -1
- package/dist/tttx/p-f764ffc4.js +0 -2
- package/dist/tttx/p-f98e154e.entry.js +0 -1
- package/dist/tttx/p-ffa187ee.entry.js +0 -1
|
@@ -63,18 +63,6 @@ const isComplexType = (o) => {
|
|
|
63
63
|
o = typeof o;
|
|
64
64
|
return o === 'object' || o === 'function';
|
|
65
65
|
};
|
|
66
|
-
/**
|
|
67
|
-
* Helper method for querying a `meta` tag that contains a nonce value
|
|
68
|
-
* out of a DOM's head.
|
|
69
|
-
*
|
|
70
|
-
* @param doc The DOM containing the `head` to query against
|
|
71
|
-
* @returns The content of the meta tag representing the nonce value, or `undefined` if no tag
|
|
72
|
-
* exists or the tag has no content.
|
|
73
|
-
*/
|
|
74
|
-
function queryNonceMetaTagContent(doc) {
|
|
75
|
-
var _a, _b, _c;
|
|
76
|
-
return (_c = (_b = (_a = doc.head) === null || _a === void 0 ? void 0 : _a.querySelector('meta[name="csp-nonce"]')) === null || _b === void 0 ? void 0 : _b.getAttribute('content')) !== null && _c !== void 0 ? _c : undefined;
|
|
77
|
-
}
|
|
78
66
|
/**
|
|
79
67
|
* Production h() function based on Preact by
|
|
80
68
|
* Jason Miller (@developit)
|
|
@@ -83,6 +71,7 @@ function queryNonceMetaTagContent(doc) {
|
|
|
83
71
|
*
|
|
84
72
|
* Modified for Stencil's compiler and vdom
|
|
85
73
|
*/
|
|
74
|
+
// const stack: any[] = [];
|
|
86
75
|
// export function h(nodeName: string | d.FunctionalComponent, vnodeData: d.PropsType, child?: d.ChildType): d.VNode;
|
|
87
76
|
// export function h(nodeName: string | d.FunctionalComponent, vnodeData: d.PropsType, ...children: d.ChildType[]): d.VNode;
|
|
88
77
|
const h = (nodeName, vnodeData, ...children) => {
|
|
@@ -141,14 +130,6 @@ const h = (nodeName, vnodeData, ...children) => {
|
|
|
141
130
|
}
|
|
142
131
|
return vnode;
|
|
143
132
|
};
|
|
144
|
-
/**
|
|
145
|
-
* A utility function for creating a virtual DOM node from a tag and some
|
|
146
|
-
* possible text content.
|
|
147
|
-
*
|
|
148
|
-
* @param tag the tag for this element
|
|
149
|
-
* @param text possible text content for the node
|
|
150
|
-
* @returns a newly-minted virtual DOM node
|
|
151
|
-
*/
|
|
152
133
|
const newVNode = (tag, text) => {
|
|
153
134
|
const vnode = {
|
|
154
135
|
$flags$: 0,
|
|
@@ -166,12 +147,6 @@ const newVNode = (tag, text) => {
|
|
|
166
147
|
return vnode;
|
|
167
148
|
};
|
|
168
149
|
const Host = {};
|
|
169
|
-
/**
|
|
170
|
-
* Check whether a given node is a Host node or not
|
|
171
|
-
*
|
|
172
|
-
* @param node the virtual DOM node to check
|
|
173
|
-
* @returns whether it's a Host node or not
|
|
174
|
-
*/
|
|
175
150
|
const isHost = (node) => node && node.$tag$ === Host;
|
|
176
151
|
/**
|
|
177
152
|
* Parse a new property value for a given property type.
|
|
@@ -260,7 +235,6 @@ const registerStyle = (scopeId, cssText, allowCS) => {
|
|
|
260
235
|
styles.set(scopeId, style);
|
|
261
236
|
};
|
|
262
237
|
const addStyle = (styleContainerNode, cmpMeta, mode, hostElm) => {
|
|
263
|
-
var _a;
|
|
264
238
|
let scopeId = getScopeId(cmpMeta);
|
|
265
239
|
const style = styles.get(scopeId);
|
|
266
240
|
// if an element is NOT connected then getRootNode() will return the wrong root node
|
|
@@ -280,11 +254,6 @@ const addStyle = (styleContainerNode, cmpMeta, mode, hostElm) => {
|
|
|
280
254
|
styleElm = doc.createElement('style');
|
|
281
255
|
styleElm.innerHTML = style;
|
|
282
256
|
}
|
|
283
|
-
// Apply CSP nonce to the style tag if it exists
|
|
284
|
-
const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);
|
|
285
|
-
if (nonce != null) {
|
|
286
|
-
styleElm.setAttribute('nonce', nonce);
|
|
287
|
-
}
|
|
288
257
|
styleContainerNode.insertBefore(styleElm, styleContainerNode.querySelector('link'));
|
|
289
258
|
}
|
|
290
259
|
if (appliedStyles) {
|
|
@@ -519,21 +488,6 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
|
|
|
519
488
|
}
|
|
520
489
|
return elm;
|
|
521
490
|
};
|
|
522
|
-
/**
|
|
523
|
-
* Create DOM nodes corresponding to a list of {@link d.Vnode} objects and
|
|
524
|
-
* add them to the DOM in the appropriate place.
|
|
525
|
-
*
|
|
526
|
-
* @param parentElm the DOM node which should be used as a parent for the new
|
|
527
|
-
* DOM nodes
|
|
528
|
-
* @param before a child of the `parentElm` which the new children should be
|
|
529
|
-
* inserted before (optional)
|
|
530
|
-
* @param parentVNode the parent virtual DOM node
|
|
531
|
-
* @param vnodes the new child virtual DOM nodes to produce DOM nodes for
|
|
532
|
-
* @param startIdx the index in the child virtual DOM nodes at which to start
|
|
533
|
-
* creating DOM nodes (inclusive)
|
|
534
|
-
* @param endIdx the index in the child virtual DOM nodes at which to stop
|
|
535
|
-
* creating DOM nodes (inclusive)
|
|
536
|
-
*/
|
|
537
491
|
const addVnodes = (parentElm, before, parentVNode, vnodes, startIdx, endIdx) => {
|
|
538
492
|
let containerElm = (parentElm);
|
|
539
493
|
let childNode;
|
|
@@ -550,19 +504,6 @@ const addVnodes = (parentElm, before, parentVNode, vnodes, startIdx, endIdx) =>
|
|
|
550
504
|
}
|
|
551
505
|
}
|
|
552
506
|
};
|
|
553
|
-
/**
|
|
554
|
-
* Remove the DOM elements corresponding to a list of {@link d.VNode} objects.
|
|
555
|
-
* This can be used to, for instance, clean up after a list of children which
|
|
556
|
-
* should no longer be shown.
|
|
557
|
-
*
|
|
558
|
-
* This function also handles some of Stencil's slot relocation logic.
|
|
559
|
-
*
|
|
560
|
-
* @param vnodes a list of virtual DOM nodes to remove
|
|
561
|
-
* @param startIdx the index at which to start removing nodes (inclusive)
|
|
562
|
-
* @param endIdx the index at which to stop removing nodes (inclusive)
|
|
563
|
-
* @param vnode a VNode
|
|
564
|
-
* @param elm an element
|
|
565
|
-
*/
|
|
566
507
|
const removeVnodes = (vnodes, startIdx, endIdx, vnode, elm) => {
|
|
567
508
|
for (; startIdx <= endIdx; ++startIdx) {
|
|
568
509
|
if ((vnode = vnodes[startIdx])) {
|
|
@@ -792,8 +733,7 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
|
|
|
792
733
|
*
|
|
793
734
|
* So, in other words, if `key` attrs are not set on VNodes which may be
|
|
794
735
|
* changing order within a `children` array or something along those lines then
|
|
795
|
-
* we could obtain a false
|
|
796
|
-
* (i.e. we'd say two VNodes aren't equal when in fact they should be).
|
|
736
|
+
* we could obtain a false positive and then have to do needless re-rendering.
|
|
797
737
|
*
|
|
798
738
|
* @param leftVNode the first VNode to check
|
|
799
739
|
* @param rightVNode the second VNode to check
|
|
@@ -866,18 +806,6 @@ const callNodeRefs = (vNode) => {
|
|
|
866
806
|
vNode.$children$ && vNode.$children$.map(callNodeRefs);
|
|
867
807
|
}
|
|
868
808
|
};
|
|
869
|
-
/**
|
|
870
|
-
* The main entry point for Stencil's virtual DOM-based rendering engine
|
|
871
|
-
*
|
|
872
|
-
* Given a {@link d.HostRef} container and some virtual DOM nodes, this
|
|
873
|
-
* function will handle creating a virtual DOM tree with a single root, patching
|
|
874
|
-
* the current virtual DOM tree onto an old one (if any), dealing with slot
|
|
875
|
-
* relocation, and reflecting attributes.
|
|
876
|
-
*
|
|
877
|
-
* @param hostRef data needed to root and render the virtual DOM tree, such as
|
|
878
|
-
* the DOM node into which it should be rendered.
|
|
879
|
-
* @param renderFnResults the virtual DOM nodes to be rendered
|
|
880
|
-
*/
|
|
881
809
|
const renderVdom = (hostRef, renderFnResults) => {
|
|
882
810
|
const hostElm = hostRef.$hostElement$;
|
|
883
811
|
const oldVNode = hostRef.$vnode$ || newVNode(null, null);
|
|
@@ -1324,7 +1252,6 @@ const disconnectedCallback = (elm) => {
|
|
|
1324
1252
|
}
|
|
1325
1253
|
};
|
|
1326
1254
|
const bootstrapLazy = (lazyBundles, options = {}) => {
|
|
1327
|
-
var _a;
|
|
1328
1255
|
const endBootstrap = createTime();
|
|
1329
1256
|
const cmpTags = [];
|
|
1330
1257
|
const exclude = options.exclude || [];
|
|
@@ -1403,11 +1330,6 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
|
|
|
1403
1330
|
{
|
|
1404
1331
|
visibilityStyle.innerHTML = cmpTags + HYDRATED_CSS;
|
|
1405
1332
|
visibilityStyle.setAttribute('data-styles', '');
|
|
1406
|
-
// Apply CSP nonce to the style tag if it exists
|
|
1407
|
-
const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);
|
|
1408
|
-
if (nonce != null) {
|
|
1409
|
-
visibilityStyle.setAttribute('nonce', nonce);
|
|
1410
|
-
}
|
|
1411
1333
|
head.insertBefore(visibilityStyle, metaCharset ? metaCharset.nextSibling : head.firstChild);
|
|
1412
1334
|
}
|
|
1413
1335
|
// Process deferred connectedCallbacks now all components have been registered
|
|
@@ -1423,13 +1345,6 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
|
|
|
1423
1345
|
// Fallback appLoad event
|
|
1424
1346
|
endBootstrap();
|
|
1425
1347
|
};
|
|
1426
|
-
/**
|
|
1427
|
-
* Assigns the given value to the nonce property on the runtime platform object.
|
|
1428
|
-
* During runtime, this value is used to set the nonce attribute on all dynamically created script and style tags.
|
|
1429
|
-
* @param nonce The value to be assigned to the platform nonce property.
|
|
1430
|
-
* @returns void
|
|
1431
|
-
*/
|
|
1432
|
-
const setNonce = (nonce) => (plt.$nonce$ = nonce);
|
|
1433
1348
|
const hostRefs = /*@__PURE__*/ new WeakMap();
|
|
1434
1349
|
const getHostRef = (ref) => hostRefs.get(ref);
|
|
1435
1350
|
const registerInstance = (lazyInstance, hostRef) => hostRefs.set((hostRef.$lazyInstance$ = lazyInstance), hostRef);
|
|
@@ -1543,4 +1458,3 @@ exports.getElement = getElement;
|
|
|
1543
1458
|
exports.h = h;
|
|
1544
1459
|
exports.promiseResolve = promiseResolve;
|
|
1545
1460
|
exports.registerInstance = registerInstance;
|
|
1546
|
-
exports.setNonce = setNonce;
|
package/dist/cjs/loader.cjs.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
5
|
+
const index = require('./index-dc6cc829.js');
|
|
6
6
|
|
|
7
7
|
/*
|
|
8
|
-
Stencil Client Patch Esm v2.
|
|
8
|
+
Stencil Client Patch Esm v2.20.0 | MIT Licensed | https://stenciljs.com
|
|
9
9
|
*/
|
|
10
10
|
const patchEsm = () => {
|
|
11
11
|
return index.promiseResolve();
|
|
@@ -14,9 +14,8 @@ const patchEsm = () => {
|
|
|
14
14
|
const defineCustomElements = (win, options) => {
|
|
15
15
|
if (typeof window === 'undefined') return Promise.resolve();
|
|
16
16
|
return patchEsm().then(() => {
|
|
17
|
-
return index.bootstrapLazy([["tttx-button.cjs",[[1,"tttx-button",{"notext":[4],"icon":[1],"iconposition":[1],"design":[1]}]]],["tttx-filter.cjs",[[1,"tttx-filter",{"filterKey":[1,"filter-key"],"filterOptions":[16],"showSelectAll":[4,"show-select-all"],"showSearchField":[4,"show-search-field"],"showOptionIcons":[4,"show-option-icons"],"filterButtonStyle":[1,"filter-button-style"],"filterHeader":[1,"filter-header"],"showPopover":[32],"selectedFilters":[32],"filterSearchTerm":[32],"displayedFilterSettings":[32],"allSelected":[32]}]]],["tttx-list.cjs",[[1,"tttx-list",{"data":[1025],"name":[1]}]]],["tttx-standalone-input.cjs",[[2,"tttx-standalone-input",{"label":[1],"showerrormsg":[4],"showerrorbubble":[4],"errormsg":[1],"iconleft":[1],"iconright":[1],"inputicon":[1],"inline":[4],"inputAutocapitalize":[1,"input-autocapitalize"],"inputAutofocus":[4,"input-autofocus"],"inputKeyhint":[1,"input-keyhint"],"inputIndex":[8,"input-index"],"inputTitle":[1,"input-title"],"autocomplete":[1],"checked":[4],"disabled":[4],"max":[8],"maxlength":[8],"min":[8],"minlength":[8],"name":[1],"pattern":[1],"placeholder":[1],"readonly":[8],"required":[4],"step":[8],"type":[1],"value":[1032]}]]],["tttx-form.cjs",[[1,"tttx-form",{"formschema":[1032],"submitValue":[1032,"submit-value"]}]]],["tttx-keyvalue-block.cjs",[[1,"tttx-keyvalue-block",{"keyvalues":[8],"horizontal":[4]}]]],["tttx-loading-spinner.cjs",[[1,"tttx-loading-spinner",{"loadingMessage":[1028,"loading-message"],"size":[1025]}]]],["tttx-toolbar.cjs",[[1,"tttx-toolbar",{"border":[4]}]]]
|
|
17
|
+
return index.bootstrapLazy([["tttx-icon.cjs",[[1,"tttx-icon",{"icon":[1],"color":[1]}]]],["tttx-button.cjs",[[1,"tttx-button",{"notext":[4],"icon":[1],"iconposition":[1],"design":[1]}]]],["tttx-filter.cjs",[[1,"tttx-filter",{"filterKey":[1,"filter-key"],"filterOptions":[16],"showSelectAll":[4,"show-select-all"],"showSearchField":[4,"show-search-field"],"showOptionIcons":[4,"show-option-icons"],"filterButtonStyle":[1,"filter-button-style"],"filterHeader":[1,"filter-header"],"showPopover":[32],"selectedFilters":[32],"filterSearchTerm":[32],"displayedFilterSettings":[32],"allSelected":[32]}]]],["tttx-list.cjs",[[1,"tttx-list",{"data":[1025],"name":[1]}]]],["tttx-sorter.cjs",[[1,"tttx-sorter",{"sorterKey":[1,"sorter-key"],"defaultSortDirection":[1,"default-sort-direction"],"fieldOptionsData":[1,"field-options-data"],"defaultOption":[1,"default-option"],"selectedField":[32],"sortDirection":[32],"dropdownExpand":[32],"dropdownOptions":[32]}]]],["tttx-standalone-input.cjs",[[2,"tttx-standalone-input",{"label":[1],"showerrormsg":[4],"showerrorbubble":[4],"errormsg":[1],"iconleft":[1],"iconright":[1],"inputicon":[1],"inline":[4],"inputAutocapitalize":[1,"input-autocapitalize"],"inputAutofocus":[4,"input-autofocus"],"inputKeyhint":[1,"input-keyhint"],"inputIndex":[8,"input-index"],"inputTitle":[1,"input-title"],"autocomplete":[1],"checked":[4],"disabled":[4],"max":[8],"maxlength":[8],"min":[8],"minlength":[8],"name":[1],"pattern":[1],"placeholder":[1],"readonly":[8],"required":[4],"step":[8],"type":[1],"value":[1032]}]]],["tttx-form.cjs",[[1,"tttx-form",{"formschema":[1032],"submitValue":[1032,"submit-value"]}]]],["tttx-keyvalue-block.cjs",[[1,"tttx-keyvalue-block",{"keyvalues":[8],"horizontal":[4]}]]],["tttx-loading-spinner.cjs",[[1,"tttx-loading-spinner",{"loadingMessage":[1028,"loading-message"],"size":[1025]}]]],["tttx-toolbar.cjs",[[1,"tttx-toolbar",{"border":[4]}]]]], options);
|
|
18
18
|
});
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
exports.setNonce = index.setNonce;
|
|
22
21
|
exports.defineCustomElements = defineCustomElements;
|
|
@@ -2,33 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
5
|
+
const index = require('./index-dc6cc829.js');
|
|
6
6
|
|
|
7
7
|
const tttxButtonCss = ".material-symbols-rounded{font-variation-settings:\"FILL\" 1, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24}.button{font-family:Roboto, serif;box-sizing:border-box;height:36px;min-width:36px;padding:0;margin:0;background:transparent;color:#212121;border:1px solid #c8c8c8;border-radius:4px;text-transform:uppercase;display:flex;justify-content:left;align-items:center;font-size:14px;font-weight:400}.button-content{display:block;padding:0 16px}.icon-left,.icon-right{margin-top:4px}.iconleft{padding-left:8px}.iconleft .button-content{padding-left:4px}.iconright{padding-right:8px}.iconright .button-content{padding-right:4px}.notext{padding:0 6px}.button:hover{background:rgba(17, 17, 17, 0.1);border:1px solid #D5D5D5}.button:active{background:rgba(17, 17, 17, 0.2);border:1px solid #D5D5D5}.primary{background:#1479c6;border:1px solid #1479c6;color:white}.primary:hover{background:#146EB3;border:1px solid #146EB3}.primary:active{background:#1464A2;border:1px solid #1464A2}.borderless{background:transparent;border:none;color:#212121}.borderless:hover{background:rgba(17, 17, 17, 0.1);border:none}.borderless:active{background:rgba(17, 17, 17, 0.2);border:none}.danger{background:#DC0000;border:1px solid #DC0000;color:white}.danger:hover{background:#C60000;border:1px solid #C60000}.danger:active{background:#B00000;border:1px solid #B00000}.disabled{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}.disabled:hover{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}.disabled:active{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}:host{display:inline-block}button{cursor:pointer}tttx-icon{cursor:inherit}.spacingleft{margin-left:8px}";
|
|
8
8
|
|
|
9
|
-
const TttxButton = class {
|
|
10
|
-
constructor(hostRef) {
|
|
11
|
-
index.registerInstance(this, hostRef);
|
|
12
|
-
this._iconcolor = 'black';
|
|
13
|
-
this.notext = undefined;
|
|
14
|
-
this.icon = undefined;
|
|
15
|
-
this.iconposition = 'left';
|
|
16
|
-
this.design = 'default';
|
|
17
|
-
}
|
|
18
|
-
componentWillLoad() {
|
|
19
|
-
this._design = this.design;
|
|
20
|
-
const designs = ['primary', 'default', 'disabled', 'danger', 'borderless'];
|
|
21
|
-
if (!designs.includes(this.design)) {
|
|
22
|
-
this._design = 'default';
|
|
23
|
-
}
|
|
24
|
-
if (this._design === 'primary' || this._design === 'danger') {
|
|
25
|
-
this._iconcolor = 'white';
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
render() {
|
|
29
|
-
return (index.h(index.Host, null, index.h("button", { class: `button ${this._design} ${this.icon ? 'withicon' : ''} ${this.icon && this.iconposition ? 'icon' + this.iconposition : ''} ${this.notext ? 'notext' : ''}` }, this.icon && this.iconposition === 'left' && (index.h("div", { class: "icon-left" }, index.h("tttx-icon", { icon: this.icon, color: this._iconcolor }))), !this.notext && index.h("div", { class: "button-content" }, index.h("slot", null)), this.icon && this.iconposition === 'right' && (index.h("div", { class: "icon-right" }, index.h("tttx-icon", { icon: this.icon, color: this._iconcolor }))))));
|
|
30
|
-
}
|
|
31
|
-
};
|
|
9
|
+
const TttxButton = class {
|
|
10
|
+
constructor(hostRef) {
|
|
11
|
+
index.registerInstance(this, hostRef);
|
|
12
|
+
this._iconcolor = 'black';
|
|
13
|
+
this.notext = undefined;
|
|
14
|
+
this.icon = undefined;
|
|
15
|
+
this.iconposition = 'left';
|
|
16
|
+
this.design = 'default';
|
|
17
|
+
}
|
|
18
|
+
componentWillLoad() {
|
|
19
|
+
this._design = this.design;
|
|
20
|
+
const designs = ['primary', 'default', 'disabled', 'danger', 'borderless'];
|
|
21
|
+
if (!designs.includes(this.design)) {
|
|
22
|
+
this._design = 'default';
|
|
23
|
+
}
|
|
24
|
+
if (this._design === 'primary' || this._design === 'danger') {
|
|
25
|
+
this._iconcolor = 'white';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
render() {
|
|
29
|
+
return (index.h(index.Host, null, index.h("button", { class: `button ${this._design} ${this.icon ? 'withicon' : ''} ${this.icon && this.iconposition ? 'icon' + this.iconposition : ''} ${this.notext ? 'notext' : ''}` }, this.icon && this.iconposition === 'left' && (index.h("div", { class: "icon-left" }, index.h("tttx-icon", { icon: this.icon, color: this._iconcolor }))), !this.notext && index.h("div", { class: "button-content" }, index.h("slot", null)), this.icon && this.iconposition === 'right' && (index.h("div", { class: "icon-right" }, index.h("tttx-icon", { icon: this.icon, color: this._iconcolor }))))));
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
32
|
TttxButton.style = tttxButtonCss;
|
|
33
33
|
|
|
34
34
|
exports.tttx_button = TttxButton;
|
|
@@ -2,161 +2,161 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
5
|
+
const index = require('./index-dc6cc829.js');
|
|
6
6
|
|
|
7
7
|
const tttxFilterCss = ".material-symbols-rounded{font-variation-settings:\"FILL\" 1, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24}.material-symbols-rounded{font-family:\"Material Symbols Rounded\", sans-serif;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color:#9e9e9e}.filter-container .filter-button{display:inline-flex;justify-content:center;align-items:center;font-size:14px;font-weight:400;font-family:\"Roboto\", serif;text-transform:uppercase;color:#212121;border:1px solid #d5d5d5;border-radius:4px;background:transparent;height:36px;width:95px;margin:0;padding-right:16px}.filter-container .filter-button .filter-icon{padding-left:8px;padding-right:4px}.filter-container .filter-button.--list-icon{font-size:0;width:36px;height:36px;padding:0}.filter-container .filter-button.--list-icon .filter-icon{padding:0}.filter-container .filter-button.--list-icon:hover{background:#e3e3e3}.filter-container .filter-button.--table-icon{font-size:0;width:36px;height:36px;padding:0;border:none}.filter-container .filter-button.--table-icon .filter-icon{padding:0;width:24px;height:24px}.filter-container .filter-button.--table-icon:hover{background:#e3e3e3;border-radius:50%;width:36px;height:36px}.filter-container .filter-button:hover{background:#e3e3e3}.filter-container .filter-popover-container{display:block;width:196px;border-radius:4px;box-shadow:0px 1px 5px #1111114D;position:absolute}.filter-container .filter-popover-container .filter-header{color:#757575;text-transform:uppercase;font-size:14px;font-weight:500;font-family:\"Roboto\", serif;padding-left:16px;padding-top:12px;padding-bottom:12px;margin:0}.filter-container .filter-popover-container .popover-divider{border:none;width:164px;display:flex;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:8px;height:1px;background-color:#d5d5d5}.filter-container .filter-popover-container .filter-option{display:flex;flex-direction:row;align-items:center;height:36px;padding-left:22px;padding-bottom:4px}.filter-container .filter-popover-container .filter-option .select-all-icon{padding-right:6px}.filter-container .filter-popover-container .filter-option .checkbox-icon{padding-right:8px}.filter-container .filter-popover-container .filter-option .filter-label{padding-left:8px;padding-bottom:3px;font-size:16px;font-weight:500;font-family:\"Roboto\", serif}.filter-container .filter-popover-container .filter-option:first-child{margin-top:8px}.filter-container .filter-popover-container .filter-option:last-child{margin-bottom:8px}.filter-container .filter-popover-container .filter-popover-button-container{display:flex;justify-content:flex-end;align-items:center;padding-bottom:8px}.filter-container .filter-popover-container .filter-popover-button-container .close-button{height:36px;width:74px;background-color:white;border:1px solid #d5d5d5;border-radius:4px;text-transform:uppercase;margin-right:8px;font-size:14px;font-weight:400;font-family:\"Roboto\", serif}.filter-container .filter-popover-container .filter-popover-button-container .apply-button{height:36px;width:73px;background-color:#1479c6;color:white;border-radius:4px;border:none;text-transform:uppercase;margin-right:16px;font-size:14px;font-weight:400;font-family:\"Roboto\", serif}.filter-container .filter-popover-container.--with-search-field{width:252px}.filter-container .filter-popover-container.--with-search-field .popover-divider{width:220px}.filter-container .filter-popover-container.--with-search-field .popover-divider:first-child{top:44px}.filter-container .filter-popover-container.--with-search-field .search-field-container{position:relative;color:#d5d5d5;width:220px;height:36px;padding:0 16px}.filter-container .filter-popover-container.--with-search-field .search-field-container .search-icon{position:absolute;top:50%;padding-left:8px;padding-bottom:9.2px;height:17px;width:17px;transform:translateY(-50%)}.filter-container .filter-popover-container.--with-search-field .search-field-container .search-input{padding-left:36px;border:1px solid #d5d5d5;border-radius:4px;height:36px;width:220px;font-size:16px;font-family:\"Roboto\", serif;font-weight:500;color:#9e9e9e;box-sizing:border-box}.filter-container .filter-popover-container.--with-search-field .search-field-container .search-input:focus-visible,.filter-container .filter-popover-container.--with-search-field .search-field-container .search-input:focus{outline:none;border:1px solid #1479c6}.filter-container .filter-popover-container.--with-search-field .search-field-container .search-input::placeholder{color:#9e9e9e;font-size:16px;font-family:\"Roboto\", serif;font-weight:500}.filter-container .filter-popover-container.--with-search-field .search-field-container .popover-divider{margin-top:8px}.filter-container .filter-popover-container.--with-search-field .filter-option:first-child{padding-top:8px}";
|
|
8
8
|
|
|
9
|
-
const TttxFilter = class {
|
|
10
|
-
constructor(hostRef) {
|
|
11
|
-
index.registerInstance(this, hostRef);
|
|
12
|
-
this.filterChangeEvent = index.createEvent(this, "filterChangeEvent", 7);
|
|
13
|
-
this.filterKey = undefined;
|
|
14
|
-
this.filterOptions = [
|
|
15
|
-
{ optionIcon: 'cancel', optionIconColor: 'darkred', optionText: 'Expired' },
|
|
16
|
-
{ optionIcon: 'warning', optionIconColor: 'orange', optionText: 'Expiring soon' },
|
|
17
|
-
{ optionIcon: 'check_circle', optionIconColor: 'green', optionText: 'Active' },
|
|
18
|
-
];
|
|
19
|
-
this.showSelectAll = true;
|
|
20
|
-
this.showSearchField = false;
|
|
21
|
-
this.showOptionIcons = true;
|
|
22
|
-
this.filterButtonStyle = 'list filter';
|
|
23
|
-
this.filterHeader = 'Qualification status';
|
|
24
|
-
this.showPopover = false;
|
|
25
|
-
this.selectedFilters = this.filterOptions.map((filterOption) => filterOption.optionText);
|
|
26
|
-
this.filterSearchTerm = '';
|
|
27
|
-
this.displayedFilterSettings = this.filterOptions;
|
|
28
|
-
this.allSelected = true;
|
|
29
|
-
}
|
|
30
|
-
emitFilterEvent() {
|
|
31
|
-
this.filterChangeEvent.emit({
|
|
32
|
-
selectedFilters: this.selectedFilters,
|
|
33
|
-
filterKey: this.filterKey,
|
|
34
|
-
allSelected: this.allSelected,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
onFilterButtonClick() {
|
|
38
|
-
this.togglePopover();
|
|
39
|
-
}
|
|
40
|
-
onCloseButtonClick() {
|
|
41
|
-
this.togglePopover();
|
|
42
|
-
}
|
|
43
|
-
onApplyFilterButtonClick() {
|
|
44
|
-
this.emitFilterEvent();
|
|
45
|
-
this.togglePopover();
|
|
46
|
-
}
|
|
47
|
-
onFilterOptionSelected(selectedOption) {
|
|
48
|
-
this.allSelected = false;
|
|
49
|
-
if (this.selectedFilters.includes(selectedOption)) {
|
|
50
|
-
this.selectedFilters = this.selectedFilters.filter((filter) => filter != selectedOption);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
this.selectedFilters = [...this.selectedFilters, selectedOption];
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
togglePopover() {
|
|
57
|
-
this.showPopover = !this.showPopover;
|
|
58
|
-
// if(!this.showPopover) {
|
|
59
|
-
// // this._focussedElementIndex = -1;
|
|
60
|
-
// }
|
|
61
|
-
}
|
|
62
|
-
// Commented out keyboard interaction for now
|
|
63
|
-
// @Listen('keyup')
|
|
64
|
-
// handleKeyUp(event: KeyboardEvent) {
|
|
65
|
-
// const keyboardEventValue = event.key;
|
|
66
|
-
// if (document.activeElement.id != `filter__${this.filterKey}`) return;
|
|
67
|
-
// if (event.key == " " || event.code == "Space" || event.keyCode == 32) {
|
|
68
|
-
// if (this._focussedElementIndex == 0) {
|
|
69
|
-
// this.onSelectAllClick()
|
|
70
|
-
// } else {
|
|
71
|
-
// const options = this.el.shadowRoot.querySelectorAll('.filter-option') as HTMLElement[];
|
|
72
|
-
// this.onFilterOptionSelected(options[this._focussedElementIndex].textContent)
|
|
73
|
-
// }
|
|
74
|
-
// return;
|
|
75
|
-
// }
|
|
76
|
-
// switch (keyboardEventValue) {
|
|
77
|
-
// case 'Enter':
|
|
78
|
-
// if(!this.showPopover) {
|
|
79
|
-
// this.showPopover=true
|
|
80
|
-
// } else {
|
|
81
|
-
// this.emitFilterEvent()
|
|
82
|
-
// }
|
|
83
|
-
// break;
|
|
84
|
-
// case 'Escape':
|
|
85
|
-
// this.showPopover = false;
|
|
86
|
-
// this._focussedElementIndex = -1;
|
|
87
|
-
// break;
|
|
88
|
-
// case 'ArrowDown':
|
|
89
|
-
// this.showPopover = true;
|
|
90
|
-
// if (this._focussedElementIndex == -1) {
|
|
91
|
-
// this._focussedElementIndex = 0;
|
|
92
|
-
// } else {
|
|
93
|
-
// const options = this.el.shadowRoot.querySelectorAll('.filter-option') as HTMLElement[];
|
|
94
|
-
// const currentOption = options[this._focussedElementIndex] as HTMLElement;
|
|
95
|
-
// currentOption.blur();
|
|
96
|
-
// // options[this._focussedElementIndex].focus();
|
|
97
|
-
// this._focussedElementIndex + 1 < options.length ? this._focussedElementIndex++ : (this._focussedElementIndex = 0);
|
|
98
|
-
// }
|
|
99
|
-
// break;
|
|
100
|
-
// case 'ArrowUp':
|
|
101
|
-
// if (this._focussedElementIndex == -1) {
|
|
102
|
-
// this.showPopover = true;
|
|
103
|
-
// this._focussedElementIndex = 0;
|
|
104
|
-
// } else {
|
|
105
|
-
// const options = this.el.shadowRoot.querySelectorAll('.filter-option') as HTMLElement[];
|
|
106
|
-
// const currentOption = options[this._focussedElementIndex] as HTMLElement;
|
|
107
|
-
// currentOption.blur();
|
|
108
|
-
// // options[this._focussedElementIndex].focus();
|
|
109
|
-
// this._focussedElementIndex > 0 ? this._focussedElementIndex-- : (this._focussedElementIndex = options.length - 1);
|
|
110
|
-
// }
|
|
111
|
-
// break;
|
|
112
|
-
// }
|
|
113
|
-
// }
|
|
114
|
-
handleFilterChange(event) {
|
|
115
|
-
const target = event.target;
|
|
116
|
-
this.filterSearchTerm = target.value;
|
|
117
|
-
const filteredResults = this.filterOptions.filter((filterOption) => {
|
|
118
|
-
const lowercaseOption = filterOption.optionText.toLowerCase();
|
|
119
|
-
const filterTerm = this.filterSearchTerm.toLowerCase();
|
|
120
|
-
return lowercaseOption.includes(filterTerm);
|
|
121
|
-
});
|
|
122
|
-
this.displayedFilterSettings = filteredResults;
|
|
123
|
-
}
|
|
124
|
-
onSelectAllClick() {
|
|
125
|
-
this.allSelected = !this.allSelected;
|
|
126
|
-
if (this.allSelected) {
|
|
127
|
-
this.displayedFilterSettings.forEach((filterSetting) => { this.selectedFilters = [...this.selectedFilters, filterSetting.optionText]; });
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
this.selectedFilters = [];
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
getFilterButtonClassName(buttonStyle) {
|
|
134
|
-
switch (buttonStyle) {
|
|
135
|
-
case 'table icon': {
|
|
136
|
-
return '--table-icon';
|
|
137
|
-
}
|
|
138
|
-
case 'list icon': {
|
|
139
|
-
return '--list-icon';
|
|
140
|
-
}
|
|
141
|
-
default: {
|
|
142
|
-
return '';
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
render() {
|
|
147
|
-
const filterPopoverContainerClassNameModifier = this.showSearchField ? '--with-search-field' : '';
|
|
148
|
-
const selectAllCheckboxIcon = this.allSelected ? 'check_box' : 'check_box_outline_blank';
|
|
149
|
-
const selectAllCheckboxColor = this.allSelected ? 'blue' : 'grey';
|
|
150
|
-
const buttonStyleClassNameModifier = this.getFilterButtonClassName(this.filterButtonStyle);
|
|
151
|
-
const filterKey = `filter__${this.filterKey}`;
|
|
152
|
-
return (index.h(index.Host, { id: filterKey }, index.h("div", { class: 'filter-container' }, index.h("button", { class: `filter-button ${buttonStyleClassNameModifier}`, type: 'button', onClick: this.onFilterButtonClick.bind(this) }, index.h("tttx-icon", { icon: 'filter_list', class: 'filter-icon', color: 'black' }), "Filter"), this.showPopover && (index.h("div", { class: `filter-popover-container ${filterPopoverContainerClassNameModifier}` }, index.h("h4", { class: 'filter-header' }, this.filterHeader), index.h("hr", { class: 'popover-divider' }), this.showSearchField ? (index.h("div", { class: 'search-field-container' }, index.h("tttx-icon", { icon: 'search', class: 'search-icon' }), index.h("input", { type: 'text', class: 'search-input', placeholder: 'Search', value: this.filterSearchTerm, onInput: this.handleFilterChange.bind(this) }), index.h("hr", { class: 'popover-divider' }))) : (''), index.h("div", { class: 'filter-options-container' }, this.showSelectAll ? (index.h("div", { class: 'filter-option', tabIndex: -1, onClick: this.onSelectAllClick.bind(this) }, index.h("tttx-icon", { icon: selectAllCheckboxIcon, color: selectAllCheckboxColor, class: 'select-all-icon' }), index.h("label", { class: 'filter-label' }, "Select all"))) : (''), this.displayedFilterSettings.map((option) => {
|
|
153
|
-
const checkboxIcon = this.selectedFilters.includes(option.optionText) ? 'check_box' : 'check_box_outline_blank';
|
|
154
|
-
const checkboxColor = this.selectedFilters.includes(option.optionText) ? 'blue' : 'grey';
|
|
155
|
-
return index.h("div", { class: 'filter-option', tabIndex: -1, onClick: () => this.onFilterOptionSelected(option.optionText), key: option.optionText }, index.h("tttx-icon", { icon: checkboxIcon, color: checkboxColor, class: 'checkbox-icon' }), this.showOptionIcons && index.h("tttx-icon", { icon: option.optionIcon, color: option.optionIconColor }), index.h("label", { class: 'filter-label' }, option.optionText));
|
|
156
|
-
})), index.h("hr", { class: 'popover-divider' }), index.h("div", { class: 'filter-popover-button-container' }, index.h("button", { type: 'button', class: 'close-button', onClick: this.onCloseButtonClick.bind(this) }, "Close"), index.h("button", { type: 'button', class: 'apply-button', onClick: this.onApplyFilterButtonClick.bind(this) }, "Apply")))))));
|
|
157
|
-
}
|
|
158
|
-
get el() { return index.getElement(this); }
|
|
159
|
-
};
|
|
9
|
+
const TttxFilter = class {
|
|
10
|
+
constructor(hostRef) {
|
|
11
|
+
index.registerInstance(this, hostRef);
|
|
12
|
+
this.filterChangeEvent = index.createEvent(this, "filterChangeEvent", 7);
|
|
13
|
+
this.filterKey = undefined;
|
|
14
|
+
this.filterOptions = [
|
|
15
|
+
{ optionIcon: 'cancel', optionIconColor: 'darkred', optionText: 'Expired' },
|
|
16
|
+
{ optionIcon: 'warning', optionIconColor: 'orange', optionText: 'Expiring soon' },
|
|
17
|
+
{ optionIcon: 'check_circle', optionIconColor: 'green', optionText: 'Active' },
|
|
18
|
+
];
|
|
19
|
+
this.showSelectAll = true;
|
|
20
|
+
this.showSearchField = false;
|
|
21
|
+
this.showOptionIcons = true;
|
|
22
|
+
this.filterButtonStyle = 'list filter';
|
|
23
|
+
this.filterHeader = 'Qualification status';
|
|
24
|
+
this.showPopover = false;
|
|
25
|
+
this.selectedFilters = this.filterOptions.map((filterOption) => filterOption.optionText);
|
|
26
|
+
this.filterSearchTerm = '';
|
|
27
|
+
this.displayedFilterSettings = this.filterOptions;
|
|
28
|
+
this.allSelected = true;
|
|
29
|
+
}
|
|
30
|
+
emitFilterEvent() {
|
|
31
|
+
this.filterChangeEvent.emit({
|
|
32
|
+
selectedFilters: this.selectedFilters,
|
|
33
|
+
filterKey: this.filterKey,
|
|
34
|
+
allSelected: this.allSelected,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
onFilterButtonClick() {
|
|
38
|
+
this.togglePopover();
|
|
39
|
+
}
|
|
40
|
+
onCloseButtonClick() {
|
|
41
|
+
this.togglePopover();
|
|
42
|
+
}
|
|
43
|
+
onApplyFilterButtonClick() {
|
|
44
|
+
this.emitFilterEvent();
|
|
45
|
+
this.togglePopover();
|
|
46
|
+
}
|
|
47
|
+
onFilterOptionSelected(selectedOption) {
|
|
48
|
+
this.allSelected = false;
|
|
49
|
+
if (this.selectedFilters.includes(selectedOption)) {
|
|
50
|
+
this.selectedFilters = this.selectedFilters.filter((filter) => filter != selectedOption);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.selectedFilters = [...this.selectedFilters, selectedOption];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
togglePopover() {
|
|
57
|
+
this.showPopover = !this.showPopover;
|
|
58
|
+
// if(!this.showPopover) {
|
|
59
|
+
// // this._focussedElementIndex = -1;
|
|
60
|
+
// }
|
|
61
|
+
}
|
|
62
|
+
// Commented out keyboard interaction for now
|
|
63
|
+
// @Listen('keyup')
|
|
64
|
+
// handleKeyUp(event: KeyboardEvent) {
|
|
65
|
+
// const keyboardEventValue = event.key;
|
|
66
|
+
// if (document.activeElement.id != `filter__${this.filterKey}`) return;
|
|
67
|
+
// if (event.key == " " || event.code == "Space" || event.keyCode == 32) {
|
|
68
|
+
// if (this._focussedElementIndex == 0) {
|
|
69
|
+
// this.onSelectAllClick()
|
|
70
|
+
// } else {
|
|
71
|
+
// const options = this.el.shadowRoot.querySelectorAll('.filter-option') as HTMLElement[];
|
|
72
|
+
// this.onFilterOptionSelected(options[this._focussedElementIndex].textContent)
|
|
73
|
+
// }
|
|
74
|
+
// return;
|
|
75
|
+
// }
|
|
76
|
+
// switch (keyboardEventValue) {
|
|
77
|
+
// case 'Enter':
|
|
78
|
+
// if(!this.showPopover) {
|
|
79
|
+
// this.showPopover=true
|
|
80
|
+
// } else {
|
|
81
|
+
// this.emitFilterEvent()
|
|
82
|
+
// }
|
|
83
|
+
// break;
|
|
84
|
+
// case 'Escape':
|
|
85
|
+
// this.showPopover = false;
|
|
86
|
+
// this._focussedElementIndex = -1;
|
|
87
|
+
// break;
|
|
88
|
+
// case 'ArrowDown':
|
|
89
|
+
// this.showPopover = true;
|
|
90
|
+
// if (this._focussedElementIndex == -1) {
|
|
91
|
+
// this._focussedElementIndex = 0;
|
|
92
|
+
// } else {
|
|
93
|
+
// const options = this.el.shadowRoot.querySelectorAll('.filter-option') as HTMLElement[];
|
|
94
|
+
// const currentOption = options[this._focussedElementIndex] as HTMLElement;
|
|
95
|
+
// currentOption.blur();
|
|
96
|
+
// // options[this._focussedElementIndex].focus();
|
|
97
|
+
// this._focussedElementIndex + 1 < options.length ? this._focussedElementIndex++ : (this._focussedElementIndex = 0);
|
|
98
|
+
// }
|
|
99
|
+
// break;
|
|
100
|
+
// case 'ArrowUp':
|
|
101
|
+
// if (this._focussedElementIndex == -1) {
|
|
102
|
+
// this.showPopover = true;
|
|
103
|
+
// this._focussedElementIndex = 0;
|
|
104
|
+
// } else {
|
|
105
|
+
// const options = this.el.shadowRoot.querySelectorAll('.filter-option') as HTMLElement[];
|
|
106
|
+
// const currentOption = options[this._focussedElementIndex] as HTMLElement;
|
|
107
|
+
// currentOption.blur();
|
|
108
|
+
// // options[this._focussedElementIndex].focus();
|
|
109
|
+
// this._focussedElementIndex > 0 ? this._focussedElementIndex-- : (this._focussedElementIndex = options.length - 1);
|
|
110
|
+
// }
|
|
111
|
+
// break;
|
|
112
|
+
// }
|
|
113
|
+
// }
|
|
114
|
+
handleFilterChange(event) {
|
|
115
|
+
const target = event.target;
|
|
116
|
+
this.filterSearchTerm = target.value;
|
|
117
|
+
const filteredResults = this.filterOptions.filter((filterOption) => {
|
|
118
|
+
const lowercaseOption = filterOption.optionText.toLowerCase();
|
|
119
|
+
const filterTerm = this.filterSearchTerm.toLowerCase();
|
|
120
|
+
return lowercaseOption.includes(filterTerm);
|
|
121
|
+
});
|
|
122
|
+
this.displayedFilterSettings = filteredResults;
|
|
123
|
+
}
|
|
124
|
+
onSelectAllClick() {
|
|
125
|
+
this.allSelected = !this.allSelected;
|
|
126
|
+
if (this.allSelected) {
|
|
127
|
+
this.displayedFilterSettings.forEach((filterSetting) => { this.selectedFilters = [...this.selectedFilters, filterSetting.optionText]; });
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
this.selectedFilters = [];
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
getFilterButtonClassName(buttonStyle) {
|
|
134
|
+
switch (buttonStyle) {
|
|
135
|
+
case 'table icon': {
|
|
136
|
+
return '--table-icon';
|
|
137
|
+
}
|
|
138
|
+
case 'list icon': {
|
|
139
|
+
return '--list-icon';
|
|
140
|
+
}
|
|
141
|
+
default: {
|
|
142
|
+
return '';
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
render() {
|
|
147
|
+
const filterPopoverContainerClassNameModifier = this.showSearchField ? '--with-search-field' : '';
|
|
148
|
+
const selectAllCheckboxIcon = this.allSelected ? 'check_box' : 'check_box_outline_blank';
|
|
149
|
+
const selectAllCheckboxColor = this.allSelected ? 'blue' : 'grey';
|
|
150
|
+
const buttonStyleClassNameModifier = this.getFilterButtonClassName(this.filterButtonStyle);
|
|
151
|
+
const filterKey = `filter__${this.filterKey}`;
|
|
152
|
+
return (index.h(index.Host, { id: filterKey }, index.h("div", { class: 'filter-container' }, index.h("button", { class: `filter-button ${buttonStyleClassNameModifier}`, type: 'button', onClick: this.onFilterButtonClick.bind(this) }, index.h("tttx-icon", { icon: 'filter_list', class: 'filter-icon', color: 'black' }), "Filter"), this.showPopover && (index.h("div", { class: `filter-popover-container ${filterPopoverContainerClassNameModifier}` }, index.h("h4", { class: 'filter-header' }, this.filterHeader), index.h("hr", { class: 'popover-divider' }), this.showSearchField ? (index.h("div", { class: 'search-field-container' }, index.h("tttx-icon", { icon: 'search', class: 'search-icon' }), index.h("input", { type: 'text', class: 'search-input', placeholder: 'Search', value: this.filterSearchTerm, onInput: this.handleFilterChange.bind(this) }), index.h("hr", { class: 'popover-divider' }))) : (''), index.h("div", { class: 'filter-options-container' }, this.showSelectAll ? (index.h("div", { class: 'filter-option', tabIndex: -1, onClick: this.onSelectAllClick.bind(this) }, index.h("tttx-icon", { icon: selectAllCheckboxIcon, color: selectAllCheckboxColor, class: 'select-all-icon' }), index.h("label", { class: 'filter-label' }, "Select all"))) : (''), this.displayedFilterSettings.map((option) => {
|
|
153
|
+
const checkboxIcon = this.selectedFilters.includes(option.optionText) ? 'check_box' : 'check_box_outline_blank';
|
|
154
|
+
const checkboxColor = this.selectedFilters.includes(option.optionText) ? 'blue' : 'grey';
|
|
155
|
+
return index.h("div", { class: 'filter-option', tabIndex: -1, onClick: () => this.onFilterOptionSelected(option.optionText), key: option.optionText }, index.h("tttx-icon", { icon: checkboxIcon, color: checkboxColor, class: 'checkbox-icon' }), this.showOptionIcons && index.h("tttx-icon", { icon: option.optionIcon, color: option.optionIconColor }), index.h("label", { class: 'filter-label' }, option.optionText));
|
|
156
|
+
})), index.h("hr", { class: 'popover-divider' }), index.h("div", { class: 'filter-popover-button-container' }, index.h("button", { type: 'button', class: 'close-button', onClick: this.onCloseButtonClick.bind(this) }, "Close"), index.h("button", { type: 'button', class: 'apply-button', onClick: this.onApplyFilterButtonClick.bind(this) }, "Apply")))))));
|
|
157
|
+
}
|
|
158
|
+
get el() { return index.getElement(this); }
|
|
159
|
+
};
|
|
160
160
|
TttxFilter.style = tttxFilterCss;
|
|
161
161
|
|
|
162
162
|
exports.tttx_filter = TttxFilter;
|