@haiilo/catalyst 1.2.0 → 1.2.2

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 (82) hide show
  1. package/dist/catalyst/catalyst.css +1 -1
  2. package/dist/catalyst/catalyst.esm.js +1 -1
  3. package/dist/catalyst/catalyst.esm.js.map +1 -1
  4. package/dist/catalyst/p-c1cab319.entry.js +10 -0
  5. package/dist/catalyst/p-c1cab319.entry.js.map +1 -0
  6. package/dist/catalyst/scss/_mixins.scss +0 -1
  7. package/dist/catalyst/scss/_variables.scss +2 -2
  8. package/dist/catalyst/scss/_variables.tokens.scss +6 -2
  9. package/dist/catalyst/scss/core/_typography.scss +42 -12
  10. package/dist/catalyst/scss/utils/_disabled.mixins.scss +0 -1
  11. package/dist/catalyst/scss/utils/_spacing.scss +0 -1
  12. package/dist/cjs/cat-alert_23.cjs.entry.js +39 -25
  13. package/dist/cjs/cat-alert_23.cjs.entry.js.map +1 -1
  14. package/dist/cjs/catalyst.cjs.js +1 -1
  15. package/dist/cjs/loader.cjs.js +1 -1
  16. package/dist/collection/components/cat-alert/cat-alert.css +5 -5
  17. package/dist/collection/components/cat-avatar/cat-avatar.css +1 -1
  18. package/dist/collection/components/cat-badge/cat-badge.css +17 -17
  19. package/dist/collection/components/cat-button/cat-button.css +53 -43
  20. package/dist/collection/components/cat-card/cat-card.css +1 -1
  21. package/dist/collection/components/cat-checkbox/cat-checkbox.css +7 -7
  22. package/dist/collection/components/cat-input/cat-input.css +8 -8
  23. package/dist/collection/components/cat-menu/cat-menu.css +7 -4
  24. package/dist/collection/components/cat-menu/cat-menu.js +43 -10
  25. package/dist/collection/components/cat-menu/cat-menu.js.map +1 -1
  26. package/dist/collection/components/cat-modal/cat-modal.css +2 -2
  27. package/dist/collection/components/cat-radio/cat-radio.css +6 -6
  28. package/dist/collection/components/cat-select/cat-select.css +9 -9
  29. package/dist/collection/components/cat-skeleton/cat-skeleton.css +1 -1
  30. package/dist/collection/components/cat-tabs/cat-tabs.css +1 -1
  31. package/dist/collection/components/cat-textarea/cat-textarea.css +4 -4
  32. package/dist/collection/components/cat-toggle/cat-toggle.css +5 -5
  33. package/dist/collection/components/cat-tooltip/cat-tooltip.css +3 -3
  34. package/dist/collection/scss/_mixins.scss +0 -1
  35. package/dist/collection/scss/_variables.scss +2 -2
  36. package/dist/collection/scss/_variables.tokens.scss +6 -2
  37. package/dist/collection/scss/core/_typography.scss +42 -12
  38. package/dist/collection/scss/utils/_disabled.mixins.scss +0 -1
  39. package/dist/collection/scss/utils/_spacing.scss +0 -1
  40. package/dist/components/cat-alert.js +1 -1
  41. package/dist/components/cat-alert.js.map +1 -1
  42. package/dist/components/cat-avatar2.js +1 -1
  43. package/dist/components/cat-avatar2.js.map +1 -1
  44. package/dist/components/cat-badge.js +1 -1
  45. package/dist/components/cat-badge.js.map +1 -1
  46. package/dist/components/cat-button2.js +1 -1
  47. package/dist/components/cat-button2.js.map +1 -1
  48. package/dist/components/cat-card.js +1 -1
  49. package/dist/components/cat-card.js.map +1 -1
  50. package/dist/components/cat-checkbox2.js +1 -1
  51. package/dist/components/cat-checkbox2.js.map +1 -1
  52. package/dist/components/cat-input.js +1 -1
  53. package/dist/components/cat-input.js.map +1 -1
  54. package/dist/components/cat-menu.js +27 -11
  55. package/dist/components/cat-menu.js.map +1 -1
  56. package/dist/components/cat-modal.js +1 -1
  57. package/dist/components/cat-modal.js.map +1 -1
  58. package/dist/components/cat-radio.js +1 -1
  59. package/dist/components/cat-radio.js.map +1 -1
  60. package/dist/components/cat-select2.js +1 -1
  61. package/dist/components/cat-select2.js.map +1 -1
  62. package/dist/components/cat-skeleton2.js +1 -1
  63. package/dist/components/cat-skeleton2.js.map +1 -1
  64. package/dist/components/cat-tabs.js +1 -1
  65. package/dist/components/cat-tabs.js.map +1 -1
  66. package/dist/components/cat-textarea.js +1 -1
  67. package/dist/components/cat-textarea.js.map +1 -1
  68. package/dist/components/cat-toggle.js +1 -1
  69. package/dist/components/cat-toggle.js.map +1 -1
  70. package/dist/components/cat-tooltip.js +1 -1
  71. package/dist/components/cat-tooltip.js.map +1 -1
  72. package/dist/esm/cat-alert_23.entry.js +39 -25
  73. package/dist/esm/cat-alert_23.entry.js.map +1 -1
  74. package/dist/esm/catalyst.js +1 -1
  75. package/dist/esm/loader.js +1 -1
  76. package/dist/types/components/cat-menu/cat-menu.d.ts +4 -0
  77. package/dist/types/components.d.ts +4 -0
  78. package/package.json +2 -2
  79. package/dist/catalyst/p-9044f4d7.entry.js +0 -10
  80. package/dist/catalyst/p-9044f4d7.entry.js.map +0 -1
  81. package/dist/catalyst/scss/utils/_spacing.mixins.scss +0 -5
  82. package/dist/collection/scss/utils/_spacing.mixins.scss +0 -5
@@ -15,7 +15,7 @@ const patchBrowser = () => {
15
15
  };
16
16
 
17
17
  patchBrowser().then(options => {
18
- return index.bootstrapLazy([["cat-alert_23.cjs",[[1,"cat-select-demo"],[1,"cat-input",{"autoComplete":[1,"auto-complete"],"clearable":[4],"disabled":[4],"hint":[1],"icon":[1],"iconRight":[4,"icon-right"],"label":[1],"labelHidden":[4,"label-hidden"],"max":[8],"maxLength":[2,"max-length"],"min":[8],"minLength":[2,"min-length"],"name":[1],"placeholder":[1],"textPrefix":[1,"text-prefix"],"textSuffix":[1,"text-suffix"],"readonly":[4],"required":[4],"round":[4],"type":[1],"value":[1032],"hasSlottedLabel":[32],"setFocus":[64],"clear":[64]}],[1,"cat-modal",{"size":[1],"isVisible":[32],"show":[64]}],[1,"cat-tabs",{"activeTab":[1,"active-tab"],"tabsAlign":[1,"tabs-align"],"tabs":[32],"activeTabId":[32]},[[0,"keydown","onKeydown"]]],[0,"cat-toast-demo"],[1,"cat-alert",{"color":[1],"icon":[1],"noIcon":[4,"no-icon"]}],[1,"cat-badge",{"variant":[1],"color":[1],"size":[1],"round":[4],"pulse":[4]}],[1,"cat-card"],[1,"cat-menu",{"placement":[1]},[[0,"catClick","clickHandler"]]],[1,"cat-radio",{"checked":[1028],"disabled":[4],"label":[1],"labelHidden":[4,"label-hidden"],"name":[1],"required":[4],"value":[1],"hint":[1],"labelLeft":[4,"label-left"],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-radio-group",{"name":[1],"value":[1025],"disabled":[4],"a11yLabel":[1,"a11y-label"],"labelLeft":[4,"label-left"]},[[0,"keydown","onKeydown"],[0,"input","onInput"],[2,"blur","onBlur"]]],[1,"cat-tab",{"label":[513],"icon":[513],"iconOnly":[520,"icon-only"],"iconRight":[516,"icon-right"],"url":[513],"urlTarget":[513,"url-target"],"deactivated":[516]},[[0,"click","onClick"]]],[1,"cat-textarea",{"disabled":[4],"hint":[1],"label":[1],"labelHidden":[4,"label-hidden"],"maxLength":[2,"max-length"],"minLength":[2,"min-length"],"name":[1],"placeholder":[1],"readonly":[4],"required":[4],"rows":[2],"value":[1032],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-toggle",{"checked":[1028],"disabled":[4],"label":[1],"labelHidden":[4,"label-hidden"],"name":[1],"required":[4],"value":[1032],"hint":[1],"labelLeft":[4,"label-left"],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-tooltip",{"content":[1],"disabled":[4],"placement":[1],"round":[4],"size":[1],"showDelay":[2,"show-delay"],"hideDelay":[2,"hide-delay"],"longTouchDuration":[2,"long-touch-duration"]},[[0,"keydown","handleKeyDown"]]],[1,"cat-select",{"multiple":[4],"debounce":[2],"placement":[1],"value":[1025],"disabled":[4],"placeholder":[1],"hint":[1],"label":[1],"name":[1],"labelHidden":[4,"label-hidden"],"required":[4],"clearable":[4],"tags":[4],"tagHint":[1,"tag-hint"],"connector":[32],"state":[32],"hasSlottedLabel":[32],"connect":[64]},[[0,"blur","onBlur"],[0,"keydown","onKeyDown"],[0,"keyup","onKeyUp"]]],[1,"cat-avatar",{"size":[1],"round":[4],"label":[1],"initials":[1],"src":[1],"icon":[1],"url":[1],"urlTarget":[1,"url-target"],"backgroundImage":[32]}],[1,"cat-checkbox",{"checked":[1028],"disabled":[4],"indeterminate":[4],"label":[1],"labelHidden":[4,"label-hidden"],"name":[1],"required":[4],"value":[1032],"hint":[1],"labelLeft":[4,"label-left"],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-scrollable",{"noShadowX":[4,"no-shadow-x"],"noShadowY":[4,"no-shadow-y"],"noOverflowX":[4,"no-overflow-x"],"noOverflowY":[4,"no-overflow-y"],"noOverscroll":[4,"no-overscroll"],"noScrolledInit":[4,"no-scrolled-init"],"scrolledBuffer":[2,"scrolled-buffer"]}],[1,"cat-skeleton",{"effect":[1],"variant":[1],"size":[1],"lines":[2]}],[1,"cat-button",{"variant":[1],"color":[1],"active":[4],"size":[1],"name":[1],"value":[1],"disabled":[4],"loading":[4],"submit":[4],"noEllipsis":[4,"no-ellipsis"],"round":[4],"url":[1],"urlTarget":[1,"url-target"],"icon":[1],"iconOnly":[8,"icon-only"],"iconRight":[4,"icon-right"],"buttonId":[1,"button-id"],"a11yLabel":[1,"a11y-label"],"_iconOnly":[32],"setFocus":[64]},[[0,"click","haltDisabledEvents"]]],[1,"cat-spinner",{"size":[1],"a11yLabel":[1,"a11y-label"]}],[1,"cat-icon",{"icon":[1],"size":[1],"a11yLabel":[1,"a11y-label"]}]]]], options);
18
+ return index.bootstrapLazy([["cat-alert_23.cjs",[[1,"cat-select-demo"],[1,"cat-input",{"autoComplete":[1,"auto-complete"],"clearable":[4],"disabled":[4],"hint":[1],"icon":[1],"iconRight":[4,"icon-right"],"label":[1],"labelHidden":[4,"label-hidden"],"max":[8],"maxLength":[2,"max-length"],"min":[8],"minLength":[2,"min-length"],"name":[1],"placeholder":[1],"textPrefix":[1,"text-prefix"],"textSuffix":[1,"text-suffix"],"readonly":[4],"required":[4],"round":[4],"type":[1],"value":[1032],"hasSlottedLabel":[32],"setFocus":[64],"clear":[64]}],[1,"cat-modal",{"size":[1],"isVisible":[32],"show":[64]}],[1,"cat-tabs",{"activeTab":[1,"active-tab"],"tabsAlign":[1,"tabs-align"],"tabs":[32],"activeTabId":[32]},[[0,"keydown","onKeydown"]]],[0,"cat-toast-demo"],[1,"cat-alert",{"color":[1],"icon":[1],"noIcon":[4,"no-icon"]}],[1,"cat-badge",{"variant":[1],"color":[1],"size":[1],"round":[4],"pulse":[4]}],[1,"cat-card"],[1,"cat-menu",{"placement":[1],"close":[64]},[[0,"catClick","clickHandler"]]],[1,"cat-radio",{"checked":[1028],"disabled":[4],"label":[1],"labelHidden":[4,"label-hidden"],"name":[1],"required":[4],"value":[1],"hint":[1],"labelLeft":[4,"label-left"],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-radio-group",{"name":[1],"value":[1025],"disabled":[4],"a11yLabel":[1,"a11y-label"],"labelLeft":[4,"label-left"]},[[0,"keydown","onKeydown"],[0,"input","onInput"],[2,"blur","onBlur"]]],[1,"cat-tab",{"label":[513],"icon":[513],"iconOnly":[520,"icon-only"],"iconRight":[516,"icon-right"],"url":[513],"urlTarget":[513,"url-target"],"deactivated":[516]},[[0,"click","onClick"]]],[1,"cat-textarea",{"disabled":[4],"hint":[1],"label":[1],"labelHidden":[4,"label-hidden"],"maxLength":[2,"max-length"],"minLength":[2,"min-length"],"name":[1],"placeholder":[1],"readonly":[4],"required":[4],"rows":[2],"value":[1032],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-toggle",{"checked":[1028],"disabled":[4],"label":[1],"labelHidden":[4,"label-hidden"],"name":[1],"required":[4],"value":[1032],"hint":[1],"labelLeft":[4,"label-left"],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-tooltip",{"content":[1],"disabled":[4],"placement":[1],"round":[4],"size":[1],"showDelay":[2,"show-delay"],"hideDelay":[2,"hide-delay"],"longTouchDuration":[2,"long-touch-duration"]},[[0,"keydown","handleKeyDown"]]],[1,"cat-select",{"multiple":[4],"debounce":[2],"placement":[1],"value":[1025],"disabled":[4],"placeholder":[1],"hint":[1],"label":[1],"name":[1],"labelHidden":[4,"label-hidden"],"required":[4],"clearable":[4],"tags":[4],"tagHint":[1,"tag-hint"],"connector":[32],"state":[32],"hasSlottedLabel":[32],"connect":[64]},[[0,"blur","onBlur"],[0,"keydown","onKeyDown"],[0,"keyup","onKeyUp"]]],[1,"cat-avatar",{"size":[1],"round":[4],"label":[1],"initials":[1],"src":[1],"icon":[1],"url":[1],"urlTarget":[1,"url-target"],"backgroundImage":[32]}],[1,"cat-checkbox",{"checked":[1028],"disabled":[4],"indeterminate":[4],"label":[1],"labelHidden":[4,"label-hidden"],"name":[1],"required":[4],"value":[1032],"hint":[1],"labelLeft":[4,"label-left"],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-scrollable",{"noShadowX":[4,"no-shadow-x"],"noShadowY":[4,"no-shadow-y"],"noOverflowX":[4,"no-overflow-x"],"noOverflowY":[4,"no-overflow-y"],"noOverscroll":[4,"no-overscroll"],"noScrolledInit":[4,"no-scrolled-init"],"scrolledBuffer":[2,"scrolled-buffer"]}],[1,"cat-skeleton",{"effect":[1],"variant":[1],"size":[1],"lines":[2]}],[1,"cat-button",{"variant":[1],"color":[1],"active":[4],"size":[1],"name":[1],"value":[1],"disabled":[4],"loading":[4],"submit":[4],"noEllipsis":[4,"no-ellipsis"],"round":[4],"url":[1],"urlTarget":[1,"url-target"],"icon":[1],"iconOnly":[8,"icon-only"],"iconRight":[4,"icon-right"],"buttonId":[1,"button-id"],"a11yLabel":[1,"a11y-label"],"_iconOnly":[32],"setFocus":[64]},[[0,"click","haltDisabledEvents"]]],[1,"cat-spinner",{"size":[1],"a11yLabel":[1,"a11y-label"]}],[1,"cat-icon",{"icon":[1],"size":[1],"a11yLabel":[1,"a11y-label"]}]]]], options);
19
19
  });
20
20
 
21
21
  //# sourceMappingURL=catalyst.cjs.js.map
@@ -14,7 +14,7 @@ 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([["cat-alert_23.cjs",[[1,"cat-select-demo"],[1,"cat-input",{"autoComplete":[1,"auto-complete"],"clearable":[4],"disabled":[4],"hint":[1],"icon":[1],"iconRight":[4,"icon-right"],"label":[1],"labelHidden":[4,"label-hidden"],"max":[8],"maxLength":[2,"max-length"],"min":[8],"minLength":[2,"min-length"],"name":[1],"placeholder":[1],"textPrefix":[1,"text-prefix"],"textSuffix":[1,"text-suffix"],"readonly":[4],"required":[4],"round":[4],"type":[1],"value":[1032],"hasSlottedLabel":[32],"setFocus":[64],"clear":[64]}],[1,"cat-modal",{"size":[1],"isVisible":[32],"show":[64]}],[1,"cat-tabs",{"activeTab":[1,"active-tab"],"tabsAlign":[1,"tabs-align"],"tabs":[32],"activeTabId":[32]},[[0,"keydown","onKeydown"]]],[0,"cat-toast-demo"],[1,"cat-alert",{"color":[1],"icon":[1],"noIcon":[4,"no-icon"]}],[1,"cat-badge",{"variant":[1],"color":[1],"size":[1],"round":[4],"pulse":[4]}],[1,"cat-card"],[1,"cat-menu",{"placement":[1]},[[0,"catClick","clickHandler"]]],[1,"cat-radio",{"checked":[1028],"disabled":[4],"label":[1],"labelHidden":[4,"label-hidden"],"name":[1],"required":[4],"value":[1],"hint":[1],"labelLeft":[4,"label-left"],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-radio-group",{"name":[1],"value":[1025],"disabled":[4],"a11yLabel":[1,"a11y-label"],"labelLeft":[4,"label-left"]},[[0,"keydown","onKeydown"],[0,"input","onInput"],[2,"blur","onBlur"]]],[1,"cat-tab",{"label":[513],"icon":[513],"iconOnly":[520,"icon-only"],"iconRight":[516,"icon-right"],"url":[513],"urlTarget":[513,"url-target"],"deactivated":[516]},[[0,"click","onClick"]]],[1,"cat-textarea",{"disabled":[4],"hint":[1],"label":[1],"labelHidden":[4,"label-hidden"],"maxLength":[2,"max-length"],"minLength":[2,"min-length"],"name":[1],"placeholder":[1],"readonly":[4],"required":[4],"rows":[2],"value":[1032],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-toggle",{"checked":[1028],"disabled":[4],"label":[1],"labelHidden":[4,"label-hidden"],"name":[1],"required":[4],"value":[1032],"hint":[1],"labelLeft":[4,"label-left"],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-tooltip",{"content":[1],"disabled":[4],"placement":[1],"round":[4],"size":[1],"showDelay":[2,"show-delay"],"hideDelay":[2,"hide-delay"],"longTouchDuration":[2,"long-touch-duration"]},[[0,"keydown","handleKeyDown"]]],[1,"cat-select",{"multiple":[4],"debounce":[2],"placement":[1],"value":[1025],"disabled":[4],"placeholder":[1],"hint":[1],"label":[1],"name":[1],"labelHidden":[4,"label-hidden"],"required":[4],"clearable":[4],"tags":[4],"tagHint":[1,"tag-hint"],"connector":[32],"state":[32],"hasSlottedLabel":[32],"connect":[64]},[[0,"blur","onBlur"],[0,"keydown","onKeyDown"],[0,"keyup","onKeyUp"]]],[1,"cat-avatar",{"size":[1],"round":[4],"label":[1],"initials":[1],"src":[1],"icon":[1],"url":[1],"urlTarget":[1,"url-target"],"backgroundImage":[32]}],[1,"cat-checkbox",{"checked":[1028],"disabled":[4],"indeterminate":[4],"label":[1],"labelHidden":[4,"label-hidden"],"name":[1],"required":[4],"value":[1032],"hint":[1],"labelLeft":[4,"label-left"],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-scrollable",{"noShadowX":[4,"no-shadow-x"],"noShadowY":[4,"no-shadow-y"],"noOverflowX":[4,"no-overflow-x"],"noOverflowY":[4,"no-overflow-y"],"noOverscroll":[4,"no-overscroll"],"noScrolledInit":[4,"no-scrolled-init"],"scrolledBuffer":[2,"scrolled-buffer"]}],[1,"cat-skeleton",{"effect":[1],"variant":[1],"size":[1],"lines":[2]}],[1,"cat-button",{"variant":[1],"color":[1],"active":[4],"size":[1],"name":[1],"value":[1],"disabled":[4],"loading":[4],"submit":[4],"noEllipsis":[4,"no-ellipsis"],"round":[4],"url":[1],"urlTarget":[1,"url-target"],"icon":[1],"iconOnly":[8,"icon-only"],"iconRight":[4,"icon-right"],"buttonId":[1,"button-id"],"a11yLabel":[1,"a11y-label"],"_iconOnly":[32],"setFocus":[64]},[[0,"click","haltDisabledEvents"]]],[1,"cat-spinner",{"size":[1],"a11yLabel":[1,"a11y-label"]}],[1,"cat-icon",{"icon":[1],"size":[1],"a11yLabel":[1,"a11y-label"]}]]]], options);
17
+ return index.bootstrapLazy([["cat-alert_23.cjs",[[1,"cat-select-demo"],[1,"cat-input",{"autoComplete":[1,"auto-complete"],"clearable":[4],"disabled":[4],"hint":[1],"icon":[1],"iconRight":[4,"icon-right"],"label":[1],"labelHidden":[4,"label-hidden"],"max":[8],"maxLength":[2,"max-length"],"min":[8],"minLength":[2,"min-length"],"name":[1],"placeholder":[1],"textPrefix":[1,"text-prefix"],"textSuffix":[1,"text-suffix"],"readonly":[4],"required":[4],"round":[4],"type":[1],"value":[1032],"hasSlottedLabel":[32],"setFocus":[64],"clear":[64]}],[1,"cat-modal",{"size":[1],"isVisible":[32],"show":[64]}],[1,"cat-tabs",{"activeTab":[1,"active-tab"],"tabsAlign":[1,"tabs-align"],"tabs":[32],"activeTabId":[32]},[[0,"keydown","onKeydown"]]],[0,"cat-toast-demo"],[1,"cat-alert",{"color":[1],"icon":[1],"noIcon":[4,"no-icon"]}],[1,"cat-badge",{"variant":[1],"color":[1],"size":[1],"round":[4],"pulse":[4]}],[1,"cat-card"],[1,"cat-menu",{"placement":[1],"close":[64]},[[0,"catClick","clickHandler"]]],[1,"cat-radio",{"checked":[1028],"disabled":[4],"label":[1],"labelHidden":[4,"label-hidden"],"name":[1],"required":[4],"value":[1],"hint":[1],"labelLeft":[4,"label-left"],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-radio-group",{"name":[1],"value":[1025],"disabled":[4],"a11yLabel":[1,"a11y-label"],"labelLeft":[4,"label-left"]},[[0,"keydown","onKeydown"],[0,"input","onInput"],[2,"blur","onBlur"]]],[1,"cat-tab",{"label":[513],"icon":[513],"iconOnly":[520,"icon-only"],"iconRight":[516,"icon-right"],"url":[513],"urlTarget":[513,"url-target"],"deactivated":[516]},[[0,"click","onClick"]]],[1,"cat-textarea",{"disabled":[4],"hint":[1],"label":[1],"labelHidden":[4,"label-hidden"],"maxLength":[2,"max-length"],"minLength":[2,"min-length"],"name":[1],"placeholder":[1],"readonly":[4],"required":[4],"rows":[2],"value":[1032],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-toggle",{"checked":[1028],"disabled":[4],"label":[1],"labelHidden":[4,"label-hidden"],"name":[1],"required":[4],"value":[1032],"hint":[1],"labelLeft":[4,"label-left"],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-tooltip",{"content":[1],"disabled":[4],"placement":[1],"round":[4],"size":[1],"showDelay":[2,"show-delay"],"hideDelay":[2,"hide-delay"],"longTouchDuration":[2,"long-touch-duration"]},[[0,"keydown","handleKeyDown"]]],[1,"cat-select",{"multiple":[4],"debounce":[2],"placement":[1],"value":[1025],"disabled":[4],"placeholder":[1],"hint":[1],"label":[1],"name":[1],"labelHidden":[4,"label-hidden"],"required":[4],"clearable":[4],"tags":[4],"tagHint":[1,"tag-hint"],"connector":[32],"state":[32],"hasSlottedLabel":[32],"connect":[64]},[[0,"blur","onBlur"],[0,"keydown","onKeyDown"],[0,"keyup","onKeyUp"]]],[1,"cat-avatar",{"size":[1],"round":[4],"label":[1],"initials":[1],"src":[1],"icon":[1],"url":[1],"urlTarget":[1,"url-target"],"backgroundImage":[32]}],[1,"cat-checkbox",{"checked":[1028],"disabled":[4],"indeterminate":[4],"label":[1],"labelHidden":[4,"label-hidden"],"name":[1],"required":[4],"value":[1032],"hint":[1],"labelLeft":[4,"label-left"],"hasSlottedLabel":[32],"setFocus":[64]}],[1,"cat-scrollable",{"noShadowX":[4,"no-shadow-x"],"noShadowY":[4,"no-shadow-y"],"noOverflowX":[4,"no-overflow-x"],"noOverflowY":[4,"no-overflow-y"],"noOverscroll":[4,"no-overscroll"],"noScrolledInit":[4,"no-scrolled-init"],"scrolledBuffer":[2,"scrolled-buffer"]}],[1,"cat-skeleton",{"effect":[1],"variant":[1],"size":[1],"lines":[2]}],[1,"cat-button",{"variant":[1],"color":[1],"active":[4],"size":[1],"name":[1],"value":[1],"disabled":[4],"loading":[4],"submit":[4],"noEllipsis":[4,"no-ellipsis"],"round":[4],"url":[1],"urlTarget":[1,"url-target"],"icon":[1],"iconOnly":[8,"icon-only"],"iconRight":[4,"icon-right"],"buttonId":[1,"button-id"],"a11yLabel":[1,"a11y-label"],"_iconOnly":[32],"setFocus":[64]},[[0,"click","haltDisabledEvents"]]],[1,"cat-spinner",{"size":[1],"a11yLabel":[1,"a11y-label"]}],[1,"cat-icon",{"icon":[1],"size":[1],"a11yLabel":[1,"a11y-label"]}]]]], options);
18
18
  });
19
19
  };
20
20
 
@@ -7,7 +7,7 @@
7
7
  display: flex;
8
8
  gap: 0.5rem;
9
9
  padding: 1.25rem;
10
- border-radius: 0.5rem;
10
+ border-radius: var(--cat-border-radius-l, 0.5rem);
11
11
  margin-bottom: 1rem;
12
12
  }
13
13
 
@@ -36,28 +36,28 @@
36
36
  }
37
37
 
38
38
  :host([color=secondary]) {
39
- background-color: rgba(105, 118, 135, 0.1);
39
+ background-color: rgba(var(--cat-secondary-bg, 105, 118, 135), 0.1);
40
40
  }
41
41
  :host([color=secondary]) cat-icon {
42
42
  color: #697687;
43
43
  }
44
44
 
45
45
  :host([color=success]) {
46
- background-color: rgba(0, 132, 88, 0.1);
46
+ background-color: rgba(var(--cat-success-bg-, 0, 132, 88), 0.1);
47
47
  }
48
48
  :host([color=success]) cat-icon {
49
49
  color: #008458;
50
50
  }
51
51
 
52
52
  :host([color=warning]) {
53
- background-color: rgba(255, 206, 128, 0.1);
53
+ background-color: rgba(var(--cat-warning-bg, 255, 206, 128), 0.1);
54
54
  }
55
55
  :host([color=warning]) cat-icon {
56
56
  color: #ebb663;
57
57
  }
58
58
 
59
59
  :host([color=danger]) {
60
- background-color: rgba(217, 52, 13, 0.1);
60
+ background-color: rgba(var(--cat-danger-bg, 217, 52, 13), 0.1);
61
61
  }
62
62
  :host([color=danger]) cat-icon {
63
63
  color: #d9340d;
@@ -21,7 +21,7 @@
21
21
  display: inline-flex;
22
22
  align-items: center;
23
23
  justify-content: center;
24
- border-radius: 0.25rem;
24
+ border-radius: var(--cat-border-radius-m, 0.25rem);
25
25
  text-decoration: inherit;
26
26
  color: var(--cat-avatar-fill, white);
27
27
  background-color: var(--cat-avatar-bg, #697687);
@@ -13,7 +13,7 @@
13
13
  vertical-align: baseline;
14
14
  align-items: center;
15
15
  justify-content: center;
16
- border-radius: 0.25rem;
16
+ border-radius: var(--cat-border-radius-m, 0.25rem);
17
17
  text-decoration: none;
18
18
  line-height: 1.5;
19
19
  }
@@ -52,31 +52,31 @@
52
52
  }
53
53
 
54
54
  :host([color=secondary]) {
55
- --bg: 105, 118, 135;
56
- --fill: 255, 255, 255;
57
- --text: 0, 0, 0;
58
- --border: 105, 118, 135;
55
+ --bg: var(--cat-secondary-bg, 105, 118, 135);
56
+ --fill: var(--cat-secondary-fill, 255, 255, 255);
57
+ --text: var(--cat-secondary-text, 0, 0, 0);
58
+ --border: var(--cat-secondary-bg, 105, 118, 135);
59
59
  }
60
60
 
61
61
  :host([color=success]) {
62
- --bg: 0, 132, 88;
63
- --fill: 255, 255, 255;
64
- --text: 0, 132, 88;
65
- --border: 0, 132, 88;
62
+ --bg: var(--cat-success-bg-, 0, 132, 88);
63
+ --fill: var(--cat-success-fill, 255, 255, 255);
64
+ --text: var(--cat-success-text, 0, 132, 88);
65
+ --border: var(--cat-success-text, 0, 132, 88);
66
66
  }
67
67
 
68
68
  :host([color=warning]) {
69
- --bg: 255, 206, 128;
70
- --fill: 0, 0, 0;
71
- --text: 159, 97, 0;
72
- --border: 159, 97, 0;
69
+ --bg: var(--cat-warning-bg, 255, 206, 128);
70
+ --fill: var(--cat-warning-fill, 0, 0, 0);
71
+ --text: var(--cat-warning-text, 159, 97, 0);
72
+ --border: var(--cat-warning-text, 159, 97, 0);
73
73
  }
74
74
 
75
75
  :host([color=danger]) {
76
- --bg: 217, 52, 13;
77
- --fill: 255, 255, 255;
78
- --text: 217, 52, 13;
79
- --border: 217, 52, 13;
76
+ --bg: var(--cat-danger-bg, 217, 52, 13);
77
+ --fill: var(--cat-danger-fill, 255, 255, 255);
78
+ --text: var(--cat-danger-text, 217, 52, 13);
79
+ --border: var(--cat-danger-text, 217, 52, 13);
80
80
  }
81
81
 
82
82
  :host([size=xs]) {
@@ -25,7 +25,7 @@
25
25
  align-items: center;
26
26
  justify-content: center;
27
27
  border: none;
28
- border-radius: 0.25rem;
28
+ border-radius: var(--cat-border-radius-m, 0.25rem);
29
29
  text-decoration: none;
30
30
  width: 100%;
31
31
  box-sizing: border-box;
@@ -51,8 +51,7 @@
51
51
 
52
52
  .cat-button-disabled {
53
53
  cursor: not-allowed;
54
- opacity: 0.65;
55
- filter: grayscale(100%);
54
+ opacity: var(--cat-opacity-disabled, 0.65);
56
55
  }
57
56
 
58
57
  .cat-button-round {
@@ -76,12 +75,20 @@
76
75
  -webkit-font-smoothing: antialiased;
77
76
  -moz-osx-font-smoothing: greyscale;
78
77
  }
78
+ .cat-button-filled.cat-button-disabled {
79
+ --bg: 235, 236, 240;
80
+ --fill: var(--cat-font-color-muted, 105, 118, 135);
81
+ }
79
82
 
80
83
  .cat-button-outlined {
81
84
  background-color: white;
82
85
  box-shadow: inset 0 0 0 1px rgba(var(--base), 0.2);
83
86
  color: rgb(var(--text));
84
87
  }
88
+ .cat-button-outlined.cat-button-disabled {
89
+ --base: var(--cat-font-color-muted, 105, 118, 135);
90
+ --text: var(--cat-font-color-muted, 105, 118, 135);
91
+ }
85
92
  .cat-button-outlined:hover:not(.cat-button-disabled):not(.cat-button-loading), .cat-button-outlined.cat-button-active:not(.cat-button-disabled):not(.cat-button-loading) {
86
93
  background-color: rgba(var(--base), 0.05);
87
94
  }
@@ -94,6 +101,9 @@
94
101
  color: rgb(var(--text));
95
102
  text-decoration: none;
96
103
  }
104
+ .cat-button-text.cat-button-disabled {
105
+ --text: var(--cat-font-color-muted, 105, 118, 135);
106
+ }
97
107
  .cat-button-text:hover:not(.cat-button-disabled):not(.cat-button-loading), .cat-button-text.cat-button-active:not(.cat-button-disabled):not(.cat-button-loading) {
98
108
  text-decoration: none;
99
109
  background-color: rgba(var(--base), 0.05);
@@ -117,71 +127,71 @@
117
127
  }
118
128
 
119
129
  .cat-button-secondary {
120
- --bg: 105, 118, 135;
121
- --fill: 255, 255, 255;
122
- --text: 0, 0, 0;
123
- --base: 105, 118, 135;
130
+ --bg: var(--cat-secondary-bg, 105, 118, 135);
131
+ --fill: var(--cat-secondary-fill, 255, 255, 255);
132
+ --text: var(--cat-secondary-text, 0, 0, 0);
133
+ --base: var(--cat-secondary-bg, 105, 118, 135);
124
134
  }
125
135
  .cat-button-secondary:hover:not(.cat-button-disabled):not(.cat-button-loading) {
126
- --bg: 105, 118, 135;
127
- --fill: 255, 255, 255;
128
- --text: 0, 0, 0;
136
+ --bg: var(--cat-secondary-bg-hover, 105, 118, 135);
137
+ --fill: var(--cat-secondary-fill-hover, 255, 255, 255);
138
+ --text: var(--cat-secondary-text-hover, 0, 0, 0);
129
139
  }
130
140
  .cat-button-secondary.cat-button-active:not(.cat-button-disabled):not(.cat-button-loading), .cat-button-secondary:active:not(.cat-button-disabled):not(.cat-button-loading) {
131
- --bg: 105, 118, 135;
132
- --fill: 255, 255, 255;
133
- --text: 0, 0, 0;
141
+ --bg: var(--cat-secondary-bg-active, 105, 118, 135);
142
+ --fill: var(--cat-secondary-fill-active, 255, 255, 255);
143
+ --text: var(--cat-catsecondary-text-active, 0, 0, 0);
134
144
  }
135
145
 
136
146
  .cat-button-success {
137
- --bg: 0, 132, 88;
138
- --fill: 255, 255, 255;
139
- --text: 0, 132, 88;
140
- --base: 0, 132, 88;
147
+ --bg: var(--cat-success-bg-, 0, 132, 88);
148
+ --fill: var(--cat-success-fill, 255, 255, 255);
149
+ --text: var(--cat-success-text, 0, 132, 88);
150
+ --base: var(--cat-success-text, 0, 132, 88);
141
151
  }
142
152
  .cat-button-success:hover:not(.cat-button-disabled):not(.cat-button-loading) {
143
- --bg: 0, 117, 78;
144
- --fill: 255, 255, 255;
145
- --text: 0, 117, 78;
153
+ --bg: var(--cat-success-bg-hover, 0, 117, 78);
154
+ --fill: var(--cat-success-fill-hover, 255, 255, 255);
155
+ --text: var(--cat-success-text-hover, 0, 117, 78);
146
156
  }
147
157
  .cat-button-success.cat-button-active:not(.cat-button-disabled):not(.cat-button-loading), .cat-button-success:active:not(.cat-button-disabled):not(.cat-button-loading) {
148
- --bg: 0, 105, 70;
149
- --fill: 255, 255, 255;
150
- --text: 0, 105, 70;
158
+ --bg: var(--cat-success-bg-active, 0, 105, 70);
159
+ --fill: var(--cat-success-fill-active, 255, 255, 255);
160
+ --text: var(--cat-success-text-active, 0, 105, 70);
151
161
  }
152
162
 
153
163
  .cat-button-warning {
154
- --bg: 255, 206, 128;
155
- --fill: 0, 0, 0;
156
- --text: 159, 97, 0;
157
- --base: 159, 97, 0;
164
+ --bg: var(--cat-warning-bg, 255, 206, 128);
165
+ --fill: var(--cat-warning-fill, 0, 0, 0);
166
+ --text: var(--cat-warning-text, 159, 97, 0);
167
+ --base: var(--cat-warning-text, 159, 97, 0);
158
168
  }
159
169
  .cat-button-warning:hover:not(.cat-button-disabled):not(.cat-button-loading) {
160
- --bg: 255, 214, 148;
161
- --fill: 0, 0, 0;
162
- --text: 159, 97, 0;
170
+ --bg: var(--cat-warning-bg-hover, 255, 214, 148);
171
+ --fill: var(--cat-warning-fill-hover, 0, 0, 0);
172
+ --text: var(--cat-warning-text-hover, 159, 97, 0);
163
173
  }
164
174
  .cat-button-warning.cat-button-active:not(.cat-button-disabled):not(.cat-button-loading), .cat-button-warning:active:not(.cat-button-disabled):not(.cat-button-loading) {
165
- --bg: 255, 222, 168;
166
- --fill: 0, 0, 0;
167
- --text: 159, 97, 0;
175
+ --bg: var(--cat-warning-bg-active, 255, 222, 168);
176
+ --fill: var(--cat-warning-fill-active, 0, 0, 0);
177
+ --text: var(--cat-warning-text-active, 159, 97, 0);
168
178
  }
169
179
 
170
180
  .cat-button-danger {
171
- --bg: 217, 52, 13;
172
- --fill: 255, 255, 255;
173
- --text: 217, 52, 13;
174
- --base: 217, 52, 13;
181
+ --bg: var(--cat-danger-bg, 217, 52, 13);
182
+ --fill: var(--cat-danger-fill, 255, 255, 255);
183
+ --text: var(--cat-danger-text, 217, 52, 13);
184
+ --base: var(--cat-danger-text, 217, 52, 13);
175
185
  }
176
186
  .cat-button-danger:hover:not(.cat-button-disabled):not(.cat-button-loading) {
177
- --bg: 194, 46, 11;
178
- --fill: 255, 255, 255;
179
- --text: 194, 46, 11;
187
+ --bg: var(--cat-danger-bg-hover, 194, 46, 11);
188
+ --fill: var(--cat-danger-fill-hover, 255, 255, 255);
189
+ --text: var(--cat-danger-text-hover, 194, 46, 11);
180
190
  }
181
191
  .cat-button-danger.cat-button-active:not(.cat-button-disabled):not(.cat-button-loading), .cat-button-danger:active:not(.cat-button-disabled):not(.cat-button-loading) {
182
- --bg: 174, 42, 10;
183
- --fill: 255, 255, 255;
184
- --text: 174, 42, 10;
192
+ --bg: var(--cat-danger-bg-active, 174, 42, 10);
193
+ --fill: var(--cat-danger-fill-active, 255, 255, 255);
194
+ --text: var(--cat-catdanger-text-active, 174, 42, 10);
185
195
  }
186
196
 
187
197
  :host(.cat-button-pull:not([size])) {
@@ -6,7 +6,7 @@
6
6
  :host {
7
7
  display: block;
8
8
  margin-bottom: 1rem;
9
- border-radius: 0.5rem;
9
+ border-radius: var(--cat-border-radius-l, 0.5rem);
10
10
  background-color: white;
11
11
  padding: 1.25rem;
12
12
  }
@@ -17,7 +17,7 @@
17
17
  }
18
18
 
19
19
  :host-context(.cat-error) .hint-section {
20
- color: #d9340d;
20
+ color: rgb(var(--cat-danger-text, 217, 52, 13));
21
21
  }
22
22
 
23
23
  :host {
@@ -73,8 +73,8 @@ input {
73
73
  height: 1.25rem;
74
74
  width: 1.25rem;
75
75
  background-color: white;
76
- border: 1px solid #d7dbe0;
77
- border-radius: 0.125rem;
76
+ border: 1px solid rgb(var(--cat-border-color-focus, 215, 219, 224));
77
+ border-radius: var(--cat-border-radius-s, 0.125rem);
78
78
  transition: background-color 0.13s ease, border-color 0.13s ease;
79
79
  pointer-events: none;
80
80
  }
@@ -114,13 +114,13 @@ input {
114
114
  }
115
115
 
116
116
  :host(.cat-error) .box {
117
- border: 1px solid #d9340d;
117
+ border: 1px solid rgb(var(--cat-danger-bg, 217, 52, 13));
118
118
  }
119
119
  :host(.cat-error) :checked + .box,
120
120
  :host(.cat-error) :indeterminate + .box {
121
- background-color: #d9340d;
122
- border-color: #d9340d;
123
- stroke: white;
121
+ background-color: rgb(var(--cat-danger-bg, 217, 52, 13));
122
+ border-color: rgb(var(--cat-danger-bg, 217, 52, 13));
123
+ stroke: rgb(var(--cat-danger-fill, 255, 255, 255));
124
124
  }
125
125
 
126
126
  .label {
@@ -17,7 +17,7 @@
17
17
  }
18
18
 
19
19
  :host-context(.cat-error) .hint-section {
20
- color: #d9340d;
20
+ color: rgb(var(--cat-danger-text, 217, 52, 13));
21
21
  }
22
22
 
23
23
  :host {
@@ -42,8 +42,8 @@
42
42
  height: 2.5rem;
43
43
  overflow: hidden;
44
44
  background: white;
45
- border-radius: 0.25rem;
46
- box-shadow: 0 0 0 1px #d7dbe0;
45
+ border-radius: var(--cat-border-radius-m, 0.25rem);
46
+ box-shadow: 0 0 0 1px rgb(var(--cat-border-color-focus, 215, 219, 224));
47
47
  transition: box-shadow 0.13s linear;
48
48
  }
49
49
  .input-wrapper.input-round {
@@ -55,17 +55,17 @@
55
55
  color: rgb(var(--cat-font-color-muted, 105, 118, 135));
56
56
  }
57
57
  .input-wrapper:not(.input-disabled):hover {
58
- box-shadow: 0 0 0 2px #d7dbe0;
58
+ box-shadow: 0 0 0 2px rgb(var(--cat-border-color-focus, 215, 219, 224));
59
59
  }
60
60
  .input-wrapper:not(.input-disabled):focus-within {
61
61
  outline: 2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));
62
62
  }
63
63
 
64
64
  :host(.cat-error) .input-wrapper {
65
- box-shadow: 0 0 0 1px #d9340d;
65
+ box-shadow: 0 0 0 1px rgb(var(--cat-danger-bg, 217, 52, 13));
66
66
  }
67
67
  :host(.cat-error) .input-wrapper:not(.input-disabled):hover {
68
- box-shadow: 0 0 0 2px #d9340d;
68
+ box-shadow: 0 0 0 2px rgb(var(--cat-danger-bg, 217, 52, 13));
69
69
  }
70
70
 
71
71
  label {
@@ -103,12 +103,12 @@ label.hidden {
103
103
  }
104
104
 
105
105
  .text-prefix {
106
- border-right: 1px solid #d7dbe0;
106
+ border-right: 1px solid rgb(var(--cat-border-color-focus, 215, 219, 224));
107
107
  padding-right: 0.75rem;
108
108
  }
109
109
 
110
110
  .text-suffix {
111
- border-left: 1px solid #d7dbe0;
111
+ border-left: 1px solid rgb(var(--cat-border-color-focus, 215, 219, 224));
112
112
  padding-left: 0.75rem;
113
113
  }
114
114
 
@@ -16,19 +16,22 @@
16
16
  display: none;
17
17
  }
18
18
 
19
- .content {
19
+ ::slotted(nav) {
20
20
  padding-top: 0.5rem;
21
21
  padding-bottom: 0.5rem;
22
+ min-width: 8rem;
23
+ max-width: 16rem;
24
+ }
25
+
26
+ .content {
22
27
  position: absolute;
23
28
  background: white;
24
29
  display: none;
25
30
  overflow: auto;
26
31
  -webkit-overflow-scrolling: touch;
27
- min-width: 8rem;
28
- max-width: 16rem;
29
32
  min-height: 2rem;
30
33
  max-height: calc(100vh - 48px);
31
34
  box-shadow: 0 1px 4px 0 rgba(16, 29, 48, 0.2);
32
- border-radius: 0.25rem;
35
+ border-radius: var(--cat-border-radius-m, 0.25rem);
33
36
  z-index: 100;
34
37
  }
@@ -1,6 +1,7 @@
1
1
  import { autoUpdate, computePosition, flip, offset } from '@floating-ui/dom';
2
- import { Component, Event, h, Host, Listen, Prop } from '@stencil/core';
2
+ import { Component, Event, h, Host, Listen, Method, Prop } from '@stencil/core';
3
3
  import * as focusTrap from 'focus-trap';
4
+ import log from 'loglevel';
4
5
  import { tabbable } from 'tabbable';
5
6
  import firstTabbable from '../../utils/first-tabbable';
6
7
  let nextUniqueId = 0;
@@ -13,22 +14,36 @@ export class CatMenu {
13
14
  this.placement = 'bottom-start';
14
15
  }
15
16
  clickHandler(event) {
16
- var _a;
17
17
  // hide menu on button click
18
18
  if (this.content && event.composedPath().includes(this.content)) {
19
- (_a = this.trap) === null || _a === void 0 ? void 0 : _a.deactivate();
20
- this.hide();
19
+ this.close();
21
20
  }
22
21
  }
22
+ /**
23
+ * Closes the menu.
24
+ */
25
+ async close() {
26
+ var _a;
27
+ (_a = this.trap) === null || _a === void 0 ? void 0 : _a.deactivate();
28
+ this.hide();
29
+ }
23
30
  componentDidLoad() {
24
- var _a, _b, _c, _d, _e;
31
+ var _a, _b, _c, _d, _e, _f, _g;
32
+ let trigger = (_b = (_a = this.triggerSlot) === null || _a === void 0 ? void 0 : _a.querySelector('[data-trigger]')) !== null && _b !== void 0 ? _b : undefined;
33
+ if (!trigger) {
34
+ trigger = firstTabbable(this.triggerSlot);
35
+ }
36
+ if (!trigger) {
37
+ log.error('Cannot find tabbable element. Use [data-trigger] to set the trigger.');
38
+ return;
39
+ }
25
40
  this.trigger = firstTabbable(this.triggerSlot);
26
- (_a = this.trigger) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-haspopup', 'true');
27
- (_b = this.trigger) === null || _b === void 0 ? void 0 : _b.setAttribute('aria-expanded', 'false');
28
- (_c = this.trigger) === null || _c === void 0 ? void 0 : _c.setAttribute('aria-controls', this.contentId);
29
- (_d = this.content) === null || _d === void 0 ? void 0 : _d.setAttribute('id', this.contentId);
41
+ (_c = this.trigger) === null || _c === void 0 ? void 0 : _c.setAttribute('aria-haspopup', 'true');
42
+ (_d = this.trigger) === null || _d === void 0 ? void 0 : _d.setAttribute('aria-expanded', 'false');
43
+ (_e = this.trigger) === null || _e === void 0 ? void 0 : _e.setAttribute('aria-controls', this.contentId);
44
+ (_f = this.content) === null || _f === void 0 ? void 0 : _f.setAttribute('id', this.contentId);
30
45
  if (this.trigger && this.content) {
31
- (_e = this.trigger) === null || _e === void 0 ? void 0 : _e.addEventListener('click', () => this.show());
46
+ (_g = this.trigger) === null || _g === void 0 ? void 0 : _g.addEventListener('click', () => this.show());
32
47
  autoUpdate(this.trigger, this.content, () => this.update());
33
48
  }
34
49
  this.keyListener = event => {
@@ -172,6 +187,24 @@ export class CatMenu {
172
187
  }
173
188
  }
174
189
  }]; }
190
+ static get methods() { return {
191
+ "close": {
192
+ "complexType": {
193
+ "signature": "() => Promise<void>",
194
+ "parameters": [],
195
+ "references": {
196
+ "Promise": {
197
+ "location": "global"
198
+ }
199
+ },
200
+ "return": "Promise<void>"
201
+ },
202
+ "docs": {
203
+ "text": "Closes the menu.",
204
+ "tags": []
205
+ }
206
+ }
207
+ }; }
175
208
  static get listeners() { return [{
176
209
  "name": "catClick",
177
210
  "method": "clickHandler",
@@ -1 +1 @@
1
- {"version":3,"file":"cat-menu.js","sourceRoot":"","sources":["../../../src/components/cat-menu/cat-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { autoUpdate, computePosition, flip, offset, Placement } from '@floating-ui/dom';\nimport { Component, Event, EventEmitter, h, Host, Listen, Prop } from '@stencil/core';\nimport * as focusTrap from 'focus-trap';\nimport { FocusableElement, tabbable } from 'tabbable';\nimport firstTabbable from '../../utils/first-tabbable';\n\nlet nextUniqueId = 0;\n\n@Component({\n tag: 'cat-menu',\n styleUrl: 'cat-menu.scss',\n shadow: true\n})\nexport class CatMenu {\n private static readonly OFFSET = 4;\n private readonly id = nextUniqueId++;\n private triggerSlot?: Element;\n private trigger?: FocusableElement;\n private content?: HTMLElement;\n private trap?: focusTrap.FocusTrap;\n private keyListener?: (event: KeyboardEvent) => void;\n\n /**\n * The placement of the menu.\n */\n @Prop() placement: Placement = 'bottom-start';\n\n /**\n * Emitted when the menu is opened.\n */\n @Event() catOpen!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the menu is closed.\n */\n @Event() catClose!: EventEmitter<FocusEvent>;\n\n @Listen('catClick')\n clickHandler(event: CustomEvent<MouseEvent>) {\n // hide menu on button click\n if (this.content && event.composedPath().includes(this.content)) {\n this.trap?.deactivate();\n this.hide();\n }\n }\n\n componentDidLoad(): void {\n this.trigger = firstTabbable(this.triggerSlot);\n this.trigger?.setAttribute('aria-haspopup', 'true');\n this.trigger?.setAttribute('aria-expanded', 'false');\n this.trigger?.setAttribute('aria-controls', this.contentId);\n this.content?.setAttribute('id', this.contentId);\n if (this.trigger && this.content) {\n this.trigger?.addEventListener('click', () => this.show());\n autoUpdate(this.trigger, this.content, () => this.update());\n }\n\n this.keyListener = event => {\n if (this.content && ['ArrowDown', 'ArrowUp'].includes(event.key)) {\n const targetElements = tabbable(this.content, { includeContainer: false, getShadowRoot: true });\n const activeElement = firstTabbable(document.activeElement);\n const activeIdx = activeElement ? targetElements.indexOf(activeElement) : -1;\n const activeOff = event.key === 'ArrowDown' ? 1 : -1;\n const targetIdx = activeIdx < 0 ? 0 : (activeIdx + activeOff + targetElements.length) % targetElements.length;\n targetElements[targetIdx].focus();\n event.preventDefault();\n }\n };\n document.addEventListener('keydown', this.keyListener);\n }\n\n disconnectedCallback(): void {\n if (this.keyListener) {\n document.removeEventListener('keydown', this.keyListener);\n }\n }\n\n render() {\n return (\n <Host>\n <slot name=\"trigger\" ref={el => (this.triggerSlot = el)}></slot>\n <div class=\"content\" ref={el => (this.content = el)}>\n <slot name=\"content\"></slot>\n </div>\n </Host>\n );\n }\n\n private get contentId() {\n return `cat-menu-${this.id}`;\n }\n\n private show() {\n if (this.content) {\n this.content.style.display = 'block';\n this.trigger?.setAttribute('aria-expanded', 'true');\n this.catOpen.emit();\n this.trap = this.trap\n ? this.trap.updateContainerElements(this.content)\n : focusTrap.createFocusTrap(this.content, {\n tabbableOptions: {\n getShadowRoot: true\n },\n allowOutsideClick: true,\n clickOutsideDeactivates: event => !this.content || !event.composedPath().includes(this.content),\n onPostDeactivate: () => this.hide()\n });\n this.trap.activate();\n }\n }\n\n private hide() {\n if (this.content) {\n this.content.style.display = '';\n this.trigger?.setAttribute('aria-expanded', 'false');\n this.catClose.emit();\n }\n }\n\n private update() {\n if (this.trigger && this.content) {\n computePosition(this.trigger, this.content, {\n placement: this.placement,\n middleware: [offset(CatMenu.OFFSET), flip()]\n }).then(({ x, y }) => {\n if (this.content) {\n Object.assign(this.content.style, {\n left: `${x}px`,\n top: `${y}px`\n });\n }\n });\n }\n }\n}\n"]}
1
+ {"version":3,"file":"cat-menu.js","sourceRoot":"","sources":["../../../src/components/cat-menu/cat-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { autoUpdate, computePosition, flip, offset, Placement } from '@floating-ui/dom';\nimport { Component, Event, EventEmitter, h, Host, Listen, Method, Prop } from '@stencil/core';\nimport * as focusTrap from 'focus-trap';\nimport log from 'loglevel';\nimport { FocusableElement, tabbable } from 'tabbable';\nimport firstTabbable from '../../utils/first-tabbable';\n\nlet nextUniqueId = 0;\n\n@Component({\n tag: 'cat-menu',\n styleUrl: 'cat-menu.scss',\n shadow: true\n})\nexport class CatMenu {\n private static readonly OFFSET = 4;\n private readonly id = nextUniqueId++;\n private triggerSlot?: Element;\n private trigger?: FocusableElement;\n private content?: HTMLElement;\n private trap?: focusTrap.FocusTrap;\n private keyListener?: (event: KeyboardEvent) => void;\n\n /**\n * The placement of the menu.\n */\n @Prop() placement: Placement = 'bottom-start';\n\n /**\n * Emitted when the menu is opened.\n */\n @Event() catOpen!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the menu is closed.\n */\n @Event() catClose!: EventEmitter<FocusEvent>;\n\n @Listen('catClick')\n clickHandler(event: CustomEvent<MouseEvent>) {\n // hide menu on button click\n if (this.content && event.composedPath().includes(this.content)) {\n this.close();\n }\n }\n\n /**\n * Closes the menu.\n */\n @Method()\n async close(): Promise<void> {\n this.trap?.deactivate();\n this.hide();\n }\n\n componentDidLoad(): void {\n let trigger: FocusableElement | undefined =\n this.triggerSlot?.querySelector<HTMLElement>('[data-trigger]') ?? undefined;\n if (!trigger) {\n trigger = firstTabbable(this.triggerSlot);\n }\n if (!trigger) {\n log.error('Cannot find tabbable element. Use [data-trigger] to set the trigger.');\n return;\n }\n this.trigger = firstTabbable(this.triggerSlot);\n this.trigger?.setAttribute('aria-haspopup', 'true');\n this.trigger?.setAttribute('aria-expanded', 'false');\n this.trigger?.setAttribute('aria-controls', this.contentId);\n this.content?.setAttribute('id', this.contentId);\n if (this.trigger && this.content) {\n this.trigger?.addEventListener('click', () => this.show());\n autoUpdate(this.trigger, this.content, () => this.update());\n }\n\n this.keyListener = event => {\n if (this.content && ['ArrowDown', 'ArrowUp'].includes(event.key)) {\n const targetElements = tabbable(this.content, { includeContainer: false, getShadowRoot: true });\n const activeElement = firstTabbable(document.activeElement);\n const activeIdx = activeElement ? targetElements.indexOf(activeElement) : -1;\n const activeOff = event.key === 'ArrowDown' ? 1 : -1;\n const targetIdx = activeIdx < 0 ? 0 : (activeIdx + activeOff + targetElements.length) % targetElements.length;\n targetElements[targetIdx].focus();\n event.preventDefault();\n }\n };\n document.addEventListener('keydown', this.keyListener);\n }\n\n disconnectedCallback(): void {\n if (this.keyListener) {\n document.removeEventListener('keydown', this.keyListener);\n }\n }\n\n render() {\n return (\n <Host>\n <slot name=\"trigger\" ref={el => (this.triggerSlot = el)}></slot>\n <div class=\"content\" ref={el => (this.content = el)}>\n <slot name=\"content\"></slot>\n </div>\n </Host>\n );\n }\n\n private get contentId() {\n return `cat-menu-${this.id}`;\n }\n\n private show() {\n if (this.content) {\n this.content.style.display = 'block';\n this.trigger?.setAttribute('aria-expanded', 'true');\n this.catOpen.emit();\n this.trap = this.trap\n ? this.trap.updateContainerElements(this.content)\n : focusTrap.createFocusTrap(this.content, {\n tabbableOptions: {\n getShadowRoot: true\n },\n allowOutsideClick: true,\n clickOutsideDeactivates: event => !this.content || !event.composedPath().includes(this.content),\n onPostDeactivate: () => this.hide()\n });\n this.trap.activate();\n }\n }\n\n private hide() {\n if (this.content) {\n this.content.style.display = '';\n this.trigger?.setAttribute('aria-expanded', 'false');\n this.catClose.emit();\n }\n }\n\n private update() {\n if (this.trigger && this.content) {\n computePosition(this.trigger, this.content, {\n placement: this.placement,\n middleware: [offset(CatMenu.OFFSET), flip()]\n }).then(({ x, y }) => {\n if (this.content) {\n Object.assign(this.content.style, {\n left: `${x}px`,\n top: `${y}px`\n });\n }\n });\n }\n }\n}\n"]}
@@ -17,7 +17,7 @@
17
17
  right: 0;
18
18
  bottom: 0;
19
19
  left: 0;
20
- background-color: rgba(0, 0, 0, 0.6);
20
+ background-color: rgb(rgb(var(--cat-bg-backdrop, 0, 0, 0)), var(--cat-opacity-backdrop, 0.6));
21
21
  z-index: 2;
22
22
  display: flex;
23
23
  }
@@ -30,7 +30,7 @@
30
30
  z-index: 2;
31
31
  position: relative;
32
32
  background-color: white;
33
- border-radius: 0.5rem;
33
+ border-radius: var(--cat-border-radius-l, 0.5rem);
34
34
  max-width: 100%;
35
35
  padding: 32px;
36
36
  }