@3t-transform/threeteeui 0.1.36 → 0.1.41

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.
Files changed (125) hide show
  1. package/dist/cjs/domsanitiser.options-277161b9.js +1667 -0
  2. package/dist/cjs/{index-457ca775.js → index-76f14107.js} +2 -88
  3. package/dist/cjs/loader.cjs.js +2 -3
  4. package/dist/cjs/tttx-button.cjs.entry.js +25 -25
  5. package/dist/cjs/tttx-filter.cjs.entry.js +159 -159
  6. package/dist/cjs/tttx-form.cjs.entry.js +457 -373
  7. package/dist/cjs/tttx-icon.cjs.entry.js +11 -11
  8. package/dist/cjs/tttx-keyvalue-block.cjs.entry.js +59 -59
  9. package/dist/cjs/tttx-list.cjs.entry.js +32 -1694
  10. package/dist/cjs/tttx-loading-spinner.cjs.entry.js +16 -16
  11. package/dist/cjs/tttx-sorter.cjs.entry.js +102 -102
  12. package/dist/cjs/tttx-standalone-input.cjs.entry.js +79 -79
  13. package/dist/cjs/tttx-toolbar.cjs.entry.js +10 -10
  14. package/dist/cjs/tttx.cjs.js +2 -6
  15. package/dist/collection/collection-manifest.json +2 -2
  16. package/dist/collection/components/atoms/tttx-button/tttx-button.css +4 -4
  17. package/dist/collection/components/atoms/tttx-button/tttx-button.js +110 -110
  18. package/dist/collection/components/atoms/tttx-button/tttx-button.stories.js +14 -14
  19. package/dist/collection/components/atoms/tttx-icon/tttx-icon.js +62 -62
  20. package/dist/collection/components/atoms/tttx-icon/tttx-icon.stories.js +22 -22
  21. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.js +109 -109
  22. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.stories.js +38 -38
  23. package/dist/collection/components/atoms/tttx-loading-spinner/tttx-loading-spinner.js +67 -67
  24. package/dist/collection/components/atoms/tttx-loading-spinner/tttx-loading-spinner.stories.js +17 -17
  25. package/dist/collection/components/molecules/tttx-filter/tttx-filter.js +334 -334
  26. package/dist/collection/components/molecules/tttx-filter/tttx-filter.stories.js +62 -62
  27. package/dist/collection/components/molecules/tttx-form/lib/setErrorState.js +37 -37
  28. package/dist/collection/components/molecules/tttx-form/lib/validityCheck.js +61 -58
  29. package/dist/collection/components/molecules/tttx-form/tttx-form.css +98 -2
  30. package/dist/collection/components/molecules/tttx-form/tttx-form.js +477 -393
  31. package/dist/collection/components/molecules/tttx-form/tttx-form.stories.js +274 -218
  32. package/dist/collection/components/molecules/tttx-list/tttx-list.js +105 -105
  33. package/dist/collection/components/molecules/tttx-list/tttx-list.stories.js +43 -43
  34. package/dist/collection/components/molecules/tttx-sorter/tttx-sorter.js +224 -224
  35. package/dist/collection/components/molecules/tttx-sorter/tttx-sorter.stories.js +42 -42
  36. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.js +759 -759
  37. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.js +172 -172
  38. package/dist/collection/components/molecules/tttx-toolbar/tttx-toolbar.js +44 -44
  39. package/dist/collection/components/molecules/tttx-toolbar/tttx-toolbar.stories.js +14 -14
  40. package/dist/collection/components/palette.stories.js +7 -7
  41. package/dist/collection/docs/gettingstarted-developer.stories.js +5 -5
  42. package/dist/collection/icons.js +2838 -2838
  43. package/dist/collection/index.js +1 -1
  44. package/dist/collection/shared/domsanitiser.options.js +14 -14
  45. package/dist/components/domsanitiser.options.js +1664 -0
  46. package/dist/components/index.d.ts +0 -9
  47. package/dist/components/index.js +1 -1
  48. package/dist/components/tttx-button.js +49 -49
  49. package/dist/components/tttx-filter.js +191 -191
  50. package/dist/components/tttx-form.js +475 -391
  51. package/dist/components/tttx-icon2.js +28 -28
  52. package/dist/components/tttx-keyvalue-block.js +76 -76
  53. package/dist/components/tttx-list.js +54 -1716
  54. package/dist/components/tttx-loading-spinner.js +33 -33
  55. package/dist/components/tttx-sorter.js +130 -130
  56. package/dist/components/tttx-standalone-input.js +130 -130
  57. package/dist/components/tttx-toolbar.js +26 -26
  58. package/dist/esm/domsanitiser.options-cc420431.js +1664 -0
  59. package/dist/esm/{index-d784fb3e.js → index-9cde46a5.js} +3 -88
  60. package/dist/esm/loader.js +2 -3
  61. package/dist/esm/polyfills/core-js.js +0 -0
  62. package/dist/esm/polyfills/css-shim.js +1 -1
  63. package/dist/esm/polyfills/dom.js +0 -0
  64. package/dist/esm/polyfills/es5-html-element.js +0 -0
  65. package/dist/esm/polyfills/index.js +0 -0
  66. package/dist/esm/polyfills/system.js +0 -0
  67. package/dist/esm/tttx-button.entry.js +25 -25
  68. package/dist/esm/tttx-filter.entry.js +159 -159
  69. package/dist/esm/tttx-form.entry.js +457 -373
  70. package/dist/esm/tttx-icon.entry.js +11 -11
  71. package/dist/esm/tttx-keyvalue-block.entry.js +59 -59
  72. package/dist/esm/tttx-list.entry.js +32 -1694
  73. package/dist/esm/tttx-loading-spinner.entry.js +16 -16
  74. package/dist/esm/tttx-sorter.entry.js +102 -102
  75. package/dist/esm/tttx-standalone-input.entry.js +79 -79
  76. package/dist/esm/tttx-toolbar.entry.js +10 -10
  77. package/dist/esm/tttx.js +2 -3
  78. package/dist/tttx/{p-400868f1.entry.js → p-3b1be372.entry.js} +1 -1
  79. package/dist/tttx/{p-563605b2.entry.js → p-561224f5.entry.js} +1 -1
  80. package/dist/tttx/{p-b720c4ad.entry.js → p-9f1e9cc1.entry.js} +1 -1
  81. package/dist/tttx/{p-798a098a.entry.js → p-aef96333.entry.js} +1 -1
  82. package/dist/tttx/p-b4290a5b.js +3 -0
  83. package/dist/tttx/p-bd1edaed.entry.js +1 -0
  84. package/dist/tttx/p-d0ff9ad0.entry.js +1 -0
  85. package/dist/tttx/{p-cac26a1b.entry.js → p-d2f1aa8e.entry.js} +1 -1
  86. package/dist/tttx/p-db059a69.js +2 -0
  87. package/dist/tttx/p-dc2a37b0.entry.js +1 -0
  88. package/dist/tttx/{p-ab6ce9f6.entry.js → p-e53c7f9d.entry.js} +1 -1
  89. package/dist/tttx/{p-92cade7f.entry.js → p-f885f17a.entry.js} +1 -1
  90. package/dist/tttx/tttx.esm.js +1 -1
  91. package/dist/types/components/atoms/tttx-button/tttx-button.d.ts +10 -10
  92. package/dist/types/components/atoms/tttx-button/tttx-button.stories.d.ts +10 -10
  93. package/dist/types/components/atoms/tttx-icon/tttx-icon.d.ts +5 -5
  94. package/dist/types/components/atoms/tttx-icon/tttx-icon.stories.d.ts +20 -20
  95. package/dist/types/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.d.ts +7 -7
  96. package/dist/types/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.stories.d.ts +9 -9
  97. package/dist/types/components/atoms/tttx-loading-spinner/tttx-loading-spinner.d.ts +6 -6
  98. package/dist/types/components/atoms/tttx-loading-spinner/tttx-loading-spinner.stories.d.ts +17 -17
  99. package/dist/types/components/molecules/tttx-filter/tttx-filter.d.ts +39 -39
  100. package/dist/types/components/molecules/tttx-filter/tttx-filter.stories.d.ts +68 -68
  101. package/dist/types/components/molecules/tttx-form/lib/setErrorState.d.ts +13 -13
  102. package/dist/types/components/molecules/tttx-form/lib/validityCheck.d.ts +17 -17
  103. package/dist/types/components/molecules/tttx-form/tttx-form.d.ts +133 -111
  104. package/dist/types/components/molecules/tttx-form/tttx-form.stories.d.ts +278 -13
  105. package/dist/types/components/molecules/tttx-list/tttx-list.d.ts +11 -11
  106. package/dist/types/components/molecules/tttx-list/tttx-list.stories.d.ts +14 -14
  107. package/dist/types/components/molecules/tttx-sorter/tttx-sorter.d.ts +19 -19
  108. package/dist/types/components/molecules/tttx-sorter/tttx-sorter.stories.d.ts +30 -30
  109. package/dist/types/components/molecules/tttx-standalone-input/tttx-standalone-input.d.ts +69 -69
  110. package/dist/types/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.d.ts +143 -143
  111. package/dist/types/components/molecules/tttx-toolbar/tttx-toolbar.d.ts +4 -4
  112. package/dist/types/components/molecules/tttx-toolbar/tttx-toolbar.stories.d.ts +13 -13
  113. package/dist/types/components/palette.stories.d.ts +6 -6
  114. package/dist/types/components.d.ts +1 -1
  115. package/dist/types/docs/gettingstarted-developer.stories.d.ts +5 -5
  116. package/dist/types/icons.d.ts +2 -2
  117. package/dist/types/index.d.ts +1 -1
  118. package/dist/types/shared/domsanitiser.options.d.ts +10 -10
  119. package/dist/types/stencil-public-runtime.d.ts +3 -59
  120. package/loader/index.d.ts +0 -9
  121. package/package.json +1 -1
  122. package/dist/tttx/p-0ebffdfc.js +0 -2
  123. package/dist/tttx/p-72e7f7dd.entry.js +0 -3
  124. package/dist/tttx/p-c4162029.entry.js +0 -1
  125. package/dist/tttx/p-eb126fd0.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 negative and then have to do needless re-rendering
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);
@@ -1337,7 +1265,6 @@ const disconnectedCallback = (elm) => {
1337
1265
  }
1338
1266
  };
1339
1267
  const bootstrapLazy = (lazyBundles, options = {}) => {
1340
- var _a;
1341
1268
  const endBootstrap = createTime();
1342
1269
  const cmpTags = [];
1343
1270
  const exclude = options.exclude || [];
@@ -1416,11 +1343,6 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
1416
1343
  {
1417
1344
  visibilityStyle.innerHTML = cmpTags + HYDRATED_CSS;
1418
1345
  visibilityStyle.setAttribute('data-styles', '');
1419
- // Apply CSP nonce to the style tag if it exists
1420
- const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);
1421
- if (nonce != null) {
1422
- visibilityStyle.setAttribute('nonce', nonce);
1423
- }
1424
1346
  head.insertBefore(visibilityStyle, metaCharset ? metaCharset.nextSibling : head.firstChild);
1425
1347
  }
1426
1348
  // Process deferred connectedCallbacks now all components have been registered
@@ -1436,13 +1358,6 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
1436
1358
  // Fallback appLoad event
1437
1359
  endBootstrap();
1438
1360
  };
1439
- /**
1440
- * Assigns the given value to the nonce property on the runtime platform object.
1441
- * During runtime, this value is used to set the nonce attribute on all dynamically created script and style tags.
1442
- * @param nonce The value to be assigned to the platform nonce property.
1443
- * @returns void
1444
- */
1445
- const setNonce = (nonce) => (plt.$nonce$ = nonce);
1446
1361
  const hostRefs = /*@__PURE__*/ new WeakMap();
1447
1362
  const getHostRef = (ref) => hostRefs.get(ref);
1448
1363
  const registerInstance = (lazyInstance, hostRef) => hostRefs.set((hostRef.$lazyInstance$ = lazyInstance), hostRef);
@@ -1559,4 +1474,3 @@ exports.getElement = getElement;
1559
1474
  exports.h = h;
1560
1475
  exports.promiseResolve = promiseResolve;
1561
1476
  exports.registerInstance = registerInstance;
1562
- exports.setNonce = setNonce;
@@ -2,10 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-457ca775.js');
5
+ const index = require('./index-76f14107.js');
6
6
 
7
7
  /*
8
- Stencil Client Patch Esm v2.22.3 | MIT Licensed | https://stenciljs.com
8
+ Stencil Client Patch Esm v2.20.0 | MIT Licensed | https://stenciljs.com
9
9
  */
10
10
  const patchEsm = () => {
11
11
  return index.promiseResolve();
@@ -18,5 +18,4 @@ const defineCustomElements = (win, 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-457ca775.js');
5
+ const index = require('./index-76f14107.js');
6
6
 
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}";
7
+ const tttxButtonCss = ".material-symbols-rounded{font-variation-settings:\"FILL\" 1, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24}button{cursor:pointer}.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}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,168 +2,168 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-457ca775.js');
5
+ const index = require('./index-76f14107.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{background-color:white;position:relative}.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}@media (max-width: 475px){.filter-container .filter-button{padding-left:4px}}.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:flex;flex-direction:column;gap:8px;border-radius:4px;box-shadow:0px 1px 5px #1111114D;position:absolute;top:36px;left:0px;background-color:white;padding:0 16px}.filter-container .filter-popover-container .filter-header{color:#757575;text-transform:uppercase;font-size:14px;font-weight:500;font-family:\"Roboto\", serif;padding:12px 0}.filter-container .filter-popover-container .filter-options-container{display:flex;flex-direction:column;gap:4px;border-top:1px solid #d5d5d5;border-bottom:1px solid #d5d5d5}.filter-container .filter-popover-container .filter-option{display:flex;flex-direction:row;align-items:center;min-height:36px;padding-left:8px}.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{padding-top: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;color:#212121}.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;font-size:14px;font-weight:400;font-family:\"Roboto\", serif}.filter-container .filter-popover-container.--with-search-field .filter-header{border-bottom:1px solid #d5d5d5}.filter-container .filter-popover-container.--with-search-field .search-field-container{position:relative;color:#d5d5d5;height:36px}.filter-container .filter-popover-container.--with-search-field .search-field-container .search-icon{position:absolute;top:6px;left:8px}.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;font-size:16px;font-family:\"Roboto\", serif;font-weight:500;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}";
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.displayedFilterSettings = undefined;
26
- this.selectedFilters = undefined;
27
- this.filterSearchTerm = '';
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
- componentWillLoad() {
57
- this.displayedFilterSettings = this.parseFilterOptions();
58
- this.selectedFilters = this.displayedFilterSettings.map((filterOption) => filterOption.optionText);
59
- }
60
- togglePopover() {
61
- this.showPopover = !this.showPopover;
62
- // if(!this.showPopover) {
63
- // // this._focussedElementIndex = -1;
64
- // }
65
- }
66
- // Commented out keyboard interaction for now
67
- // @Listen('keyup')
68
- // handleKeyUp(event: KeyboardEvent) {
69
- // const keyboardEventValue = event.key;
70
- // if (document.activeElement.id != `filter__${this.filterKey}`) return;
71
- // if (event.key == " " || event.code == "Space" || event.keyCode == 32) {
72
- // if (this._focussedElementIndex == 0) {
73
- // this.onSelectAllClick()
74
- // } else {
75
- // const options = this.el.shadowRoot.querySelectorAll('.filter-option') as HTMLElement[];
76
- // this.onFilterOptionSelected(options[this._focussedElementIndex].textContent)
77
- // }
78
- // return;
79
- // }
80
- // switch (keyboardEventValue) {
81
- // case 'Enter':
82
- // if(!this.showPopover) {
83
- // this.showPopover=true
84
- // } else {
85
- // this.emitFilterEvent()
86
- // }
87
- // break;
88
- // case 'Escape':
89
- // this.showPopover = false;
90
- // this._focussedElementIndex = -1;
91
- // break;
92
- // case 'ArrowDown':
93
- // this.showPopover = true;
94
- // if (this._focussedElementIndex == -1) {
95
- // this._focussedElementIndex = 0;
96
- // } else {
97
- // const options = this.el.shadowRoot.querySelectorAll('.filter-option') as HTMLElement[];
98
- // const currentOption = options[this._focussedElementIndex] as HTMLElement;
99
- // currentOption.blur();
100
- // // options[this._focussedElementIndex].focus();
101
- // this._focussedElementIndex + 1 < options.length ? this._focussedElementIndex++ : (this._focussedElementIndex = 0);
102
- // }
103
- // break;
104
- // case 'ArrowUp':
105
- // if (this._focussedElementIndex == -1) {
106
- // this.showPopover = true;
107
- // this._focussedElementIndex = 0;
108
- // } else {
109
- // const options = this.el.shadowRoot.querySelectorAll('.filter-option') as HTMLElement[];
110
- // const currentOption = options[this._focussedElementIndex] as HTMLElement;
111
- // currentOption.blur();
112
- // // options[this._focussedElementIndex].focus();
113
- // this._focussedElementIndex > 0 ? this._focussedElementIndex-- : (this._focussedElementIndex = options.length - 1);
114
- // }
115
- // break;
116
- // }
117
- // }
118
- handleFilterChange(event) {
119
- const target = event.target;
120
- this.filterSearchTerm = target.value;
121
- const filteredResults = this.parseFilterOptions().filter((filterOption) => {
122
- const lowercaseOption = filterOption.optionText.toLowerCase();
123
- const filterTerm = this.filterSearchTerm.toLowerCase();
124
- return lowercaseOption.includes(filterTerm);
125
- });
126
- this.displayedFilterSettings = filteredResults;
127
- }
128
- onSelectAllClick() {
129
- this.allSelected = !this.allSelected;
130
- if (this.allSelected) {
131
- this.displayedFilterSettings.forEach((filterSetting) => { this.selectedFilters = [...this.selectedFilters, filterSetting.optionText]; });
132
- }
133
- else {
134
- this.selectedFilters = [];
135
- }
136
- }
137
- getFilterButtonClassName(buttonStyle) {
138
- switch (buttonStyle) {
139
- case 'table icon': {
140
- return '--table-icon';
141
- }
142
- case 'list icon': {
143
- return '--list-icon';
144
- }
145
- default: {
146
- return '';
147
- }
148
- }
149
- }
150
- parseFilterOptions() {
151
- return typeof this.filterOptions === 'string' ? JSON.parse(this.filterOptions) : this.filterOptions;
152
- }
153
- render() {
154
- const filterPopoverContainerClassNameModifier = this.showSearchField ? '--with-search-field' : '';
155
- const selectAllCheckboxIcon = this.allSelected ? 'check_box' : 'check_box_outline_blank';
156
- const selectAllCheckboxColor = this.allSelected ? 'blue' : 'grey';
157
- const buttonStyleClassNameModifier = this.getFilterButtonClassName(this.filterButtonStyle);
158
- const filterKey = `filter__${this.filterKey}`;
159
- 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("div", { class: 'filter-header' }, this.filterHeader), 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("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) => {
160
- const checkboxIcon = this.selectedFilters.includes(option.optionText) ? 'check_box' : 'check_box_outline_blank';
161
- const checkboxColor = this.selectedFilters.includes(option.optionText) ? 'blue' : 'grey';
162
- 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));
163
- })), 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")))))));
164
- }
165
- get el() { return index.getElement(this); }
166
- };
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.displayedFilterSettings = undefined;
26
+ this.selectedFilters = undefined;
27
+ this.filterSearchTerm = '';
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
+ componentWillLoad() {
57
+ this.displayedFilterSettings = this.parseFilterOptions();
58
+ this.selectedFilters = this.displayedFilterSettings.map((filterOption) => filterOption.optionText);
59
+ }
60
+ togglePopover() {
61
+ this.showPopover = !this.showPopover;
62
+ // if(!this.showPopover) {
63
+ // // this._focussedElementIndex = -1;
64
+ // }
65
+ }
66
+ // Commented out keyboard interaction for now
67
+ // @Listen('keyup')
68
+ // handleKeyUp(event: KeyboardEvent) {
69
+ // const keyboardEventValue = event.key;
70
+ // if (document.activeElement.id != `filter__${this.filterKey}`) return;
71
+ // if (event.key == " " || event.code == "Space" || event.keyCode == 32) {
72
+ // if (this._focussedElementIndex == 0) {
73
+ // this.onSelectAllClick()
74
+ // } else {
75
+ // const options = this.el.shadowRoot.querySelectorAll('.filter-option') as HTMLElement[];
76
+ // this.onFilterOptionSelected(options[this._focussedElementIndex].textContent)
77
+ // }
78
+ // return;
79
+ // }
80
+ // switch (keyboardEventValue) {
81
+ // case 'Enter':
82
+ // if(!this.showPopover) {
83
+ // this.showPopover=true
84
+ // } else {
85
+ // this.emitFilterEvent()
86
+ // }
87
+ // break;
88
+ // case 'Escape':
89
+ // this.showPopover = false;
90
+ // this._focussedElementIndex = -1;
91
+ // break;
92
+ // case 'ArrowDown':
93
+ // this.showPopover = true;
94
+ // if (this._focussedElementIndex == -1) {
95
+ // this._focussedElementIndex = 0;
96
+ // } else {
97
+ // const options = this.el.shadowRoot.querySelectorAll('.filter-option') as HTMLElement[];
98
+ // const currentOption = options[this._focussedElementIndex] as HTMLElement;
99
+ // currentOption.blur();
100
+ // // options[this._focussedElementIndex].focus();
101
+ // this._focussedElementIndex + 1 < options.length ? this._focussedElementIndex++ : (this._focussedElementIndex = 0);
102
+ // }
103
+ // break;
104
+ // case 'ArrowUp':
105
+ // if (this._focussedElementIndex == -1) {
106
+ // this.showPopover = true;
107
+ // this._focussedElementIndex = 0;
108
+ // } else {
109
+ // const options = this.el.shadowRoot.querySelectorAll('.filter-option') as HTMLElement[];
110
+ // const currentOption = options[this._focussedElementIndex] as HTMLElement;
111
+ // currentOption.blur();
112
+ // // options[this._focussedElementIndex].focus();
113
+ // this._focussedElementIndex > 0 ? this._focussedElementIndex-- : (this._focussedElementIndex = options.length - 1);
114
+ // }
115
+ // break;
116
+ // }
117
+ // }
118
+ handleFilterChange(event) {
119
+ const target = event.target;
120
+ this.filterSearchTerm = target.value;
121
+ const filteredResults = this.parseFilterOptions().filter((filterOption) => {
122
+ const lowercaseOption = filterOption.optionText.toLowerCase();
123
+ const filterTerm = this.filterSearchTerm.toLowerCase();
124
+ return lowercaseOption.includes(filterTerm);
125
+ });
126
+ this.displayedFilterSettings = filteredResults;
127
+ }
128
+ onSelectAllClick() {
129
+ this.allSelected = !this.allSelected;
130
+ if (this.allSelected) {
131
+ this.displayedFilterSettings.forEach((filterSetting) => { this.selectedFilters = [...this.selectedFilters, filterSetting.optionText]; });
132
+ }
133
+ else {
134
+ this.selectedFilters = [];
135
+ }
136
+ }
137
+ getFilterButtonClassName(buttonStyle) {
138
+ switch (buttonStyle) {
139
+ case 'table icon': {
140
+ return '--table-icon';
141
+ }
142
+ case 'list icon': {
143
+ return '--list-icon';
144
+ }
145
+ default: {
146
+ return '';
147
+ }
148
+ }
149
+ }
150
+ parseFilterOptions() {
151
+ return typeof this.filterOptions === 'string' ? JSON.parse(this.filterOptions) : this.filterOptions;
152
+ }
153
+ render() {
154
+ const filterPopoverContainerClassNameModifier = this.showSearchField ? '--with-search-field' : '';
155
+ const selectAllCheckboxIcon = this.allSelected ? 'check_box' : 'check_box_outline_blank';
156
+ const selectAllCheckboxColor = this.allSelected ? 'blue' : 'grey';
157
+ const buttonStyleClassNameModifier = this.getFilterButtonClassName(this.filterButtonStyle);
158
+ const filterKey = `filter__${this.filterKey}`;
159
+ 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("div", { class: 'filter-header' }, this.filterHeader), 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("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) => {
160
+ const checkboxIcon = this.selectedFilters.includes(option.optionText) ? 'check_box' : 'check_box_outline_blank';
161
+ const checkboxColor = this.selectedFilters.includes(option.optionText) ? 'blue' : 'grey';
162
+ 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));
163
+ })), 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")))))));
164
+ }
165
+ get el() { return index.getElement(this); }
166
+ };
167
167
  TttxFilter.style = tttxFilterCss;
168
168
 
169
169
  exports.tttx_filter = TttxFilter;