@limetech/lime-elements 37.32.7 → 37.33.1

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 (45) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/cjs/lime-elements.cjs.js +1 -1
  3. package/dist/cjs/limel-breadcrumbs_4.cjs.entry.js +9 -17
  4. package/dist/cjs/limel-breadcrumbs_4.cjs.entry.js.map +1 -1
  5. package/dist/cjs/limel-chip_2.cjs.entry.js +1 -1
  6. package/dist/cjs/limel-chip_2.cjs.entry.js.map +1 -1
  7. package/dist/cjs/limel-dialog.cjs.entry.js.map +1 -1
  8. package/dist/cjs/limel-text-editor.cjs.entry.js +2 -1
  9. package/dist/cjs/limel-text-editor.cjs.entry.js.map +1 -1
  10. package/dist/cjs/loader.cjs.js +1 -1
  11. package/dist/collection/components/chip-set/chip-set.css +0 -3
  12. package/dist/collection/components/dialog/dialog.js +1 -1
  13. package/dist/collection/components/dialog/dialog.js.map +1 -1
  14. package/dist/collection/components/input-field/input-field.css +5 -19
  15. package/dist/collection/components/input-field/input-field.js +8 -16
  16. package/dist/collection/components/input-field/input-field.js.map +1 -1
  17. package/dist/collection/components/text-editor/text-editor.css +5 -1
  18. package/dist/collection/components/text-editor/text-editor.js +22 -2
  19. package/dist/collection/components/text-editor/text-editor.js.map +1 -1
  20. package/dist/collection/style/internal/shared_input-select-picker.scss +2 -24
  21. package/dist/esm/lime-elements.js +1 -1
  22. package/dist/esm/limel-breadcrumbs_4.entry.js +9 -17
  23. package/dist/esm/limel-breadcrumbs_4.entry.js.map +1 -1
  24. package/dist/esm/limel-chip_2.entry.js +1 -1
  25. package/dist/esm/limel-chip_2.entry.js.map +1 -1
  26. package/dist/esm/limel-dialog.entry.js.map +1 -1
  27. package/dist/esm/limel-text-editor.entry.js +2 -1
  28. package/dist/esm/limel-text-editor.entry.js.map +1 -1
  29. package/dist/esm/loader.js +1 -1
  30. package/dist/lime-elements/lime-elements.esm.js +1 -1
  31. package/dist/lime-elements/lime-elements.esm.js.map +1 -1
  32. package/dist/lime-elements/{p-f649e5ef.entry.js → p-4d59ddb2.entry.js} +2 -2
  33. package/dist/lime-elements/p-4d59ddb2.entry.js.map +1 -0
  34. package/dist/lime-elements/{p-54d85dd0.entry.js → p-8bda6cb8.entry.js} +2 -2
  35. package/dist/lime-elements/{p-54d85dd0.entry.js.map → p-8bda6cb8.entry.js.map} +1 -1
  36. package/dist/lime-elements/{p-82a91723.entry.js → p-c602c27a.entry.js} +4 -4
  37. package/dist/lime-elements/p-c602c27a.entry.js.map +1 -0
  38. package/dist/lime-elements/p-e724004c.entry.js.map +1 -1
  39. package/dist/lime-elements/style/internal/shared_input-select-picker.scss +2 -24
  40. package/dist/types/components/dialog/dialog.d.ts +1 -1
  41. package/dist/types/components/text-editor/text-editor.d.ts +8 -2
  42. package/dist/types/components.d.ts +24 -12
  43. package/package.json +1 -1
  44. package/dist/lime-elements/p-82a91723.entry.js.map +0 -1
  45. package/dist/lime-elements/p-f649e5ef.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["createFocusTrapInstance","surfaceEl","focusTrapFactory","initialFocusEl","isScrollable","el","scrollHeight","offsetHeight","isScrollAtTop","scrollTop","isScrollAtBottom","Math","ceil","clientHeight","areTopsMisaligned","els","tops","Set","forEach","call","add","offsetTop","size","FOCUS_SENTINEL_CLASS","FocusTrap","root","options","this","elFocusedBeforeTrapFocus","prototype","trapFocus","focusableEls","getFocusableElements","length","Error","document","activeElement","HTMLElement","wrapTabFocus","skipInitialFocus","focusInitialElement","releaseFocus","slice","querySelectorAll","sentinelEl","parentElement","removeChild","skipRestoreFocus","focus","_this","sentinelStart","createSentinel","sentinelEnd","addEventListener","insertBefore","children","appendChild","focusIndex","max","indexOf","filter","isDisabledOrHidden","getAttribute","isTabbableAndVisible","tabIndex","getBoundingClientRect","width","classList","contains","isProgrammaticallyHidden","style","getComputedStyle","display","visibility","sentinel","createElement","setAttribute","cssClasses","CLOSING","OPEN","OPENING","SCROLLABLE","SCROLL_LOCK","STACKED","FULLSCREEN","SCROLL_DIVIDER_HEADER","SCROLL_DIVIDER_FOOTER","SURFACE_SCRIM_SHOWN","SURFACE_SCRIM_SHOWING","SURFACE_SCRIM_HIDING","SCRIM_HIDDEN","strings","ACTION_ATTRIBUTE","BUTTON_DEFAULT_ATTRIBUTE","BUTTON_SELECTOR","CLOSED_EVENT","CLOSE_ACTION","CLOSING_EVENT","CONTAINER_SELECTOR","CONTENT_SELECTOR","DESTROY_ACTION","INITIAL_FOCUS_ATTRIBUTE","OPENED_EVENT","OPENING_EVENT","SCRIM_SELECTOR","SUPPRESS_DEFAULT_PRESS_SELECTOR","join","SURFACE_SELECTOR","numbers","DIALOG_ANIMATION_CLOSE_TIME_MS","DIALOG_ANIMATION_OPEN_TIME_MS","AnimationKeys","MDCDialogFoundation","_super","__extends","adapter","__assign","defaultAdapter","dialogOpen","isFullscreen","animationFrame","animationTimer","escapeKeyAction","scrimClickAction","autoStackButtons","areButtonsStacked","suppressDefaultPressSelector","animFrame","AnimationFrame","contentScrollHandler","handleScrollEvent","windowResizeHandler","layout","windowOrientationChangeHandler","Object","defineProperty","get","enumerable","configurable","addBodyClass","undefined","addClass","clickDefaultButton","eventTargetMatches","getActionFromEvent","getInitialFocusEl","hasClass","isContentScrollable","notifyClosed","notifyClosing","notifyOpened","notifyOpening","removeBodyClass","removeClass","reverseButtons","registerContentEventHandler","deregisterContentEventHandler","isScrollableContentAtTop","isScrollableContentAtBottom","registerWindowEventHandler","deregisterWindowEventHandler","init","setAutoStackButtons","destroy","clearTimeout","handleAnimationTimerEnd","cancelAll","open","dialogOptions","isAboveFullscreenDialog","runNextAnimationFrame","setTimeout","close","action","cancelAnimationFrame","showSurfaceScrim","hideSurfaceScrim","handleSurfaceScrimTransitionEnd","isOpen","getEscapeKeyAction","setEscapeKeyAction","getScrimClickAction","setScrimClickAction","getAutoStackButtons","autoStack","getSuppressDefaultPressSelector","setSuppressDefaultPressSelector","selector","request","POLL_LAYOUT_CHANGE","layoutInternal","handleClick","evt","isScrim","target","handleKeydown","isEnter","key","keyCode","composedPath","isDefault","handleDocumentKeydown","isEscape","POLL_SCROLL_POS","toggleScrollDividerHeader","toggleScrollDividerFooter","detectStackedButtons","toggleScrollableClasses","callback","requestAnimationFrame","MDCFoundation","MDCDialog","apply","arguments","foundation","set","attachTo","initialize","e_1","_a","focusOptions","container","querySelector","content","buttons","defaultButton","buttonRipples","_b","__values","_c","next","done","buttonEl","value","push","MDCRipple","e_1_1","error","return","initialSyncWithDOM","focusTrap","util.createFocusTrapInstance","bind","handleOpening","handleClosing","removeEventListener","listen","unlisten","ripple","getDefaultFoundation","className","body","util.areTopsMisaligned","disabled","click","matches","element","closest","util.isScrollable","emit","remove","reverse","button","handler","util.isScrollAtTop","util.isScrollAtBottom","window","MDCComponent","dialogCss","Dialog","constructor","hostRef","showFooter","escapeKey","scrimClick","handleMdcOpened","handleMdcClosed","handleMdcClosing","connectedCallback","componentWillLoad","id","createRandomString","host","componentDidLoad","shadowRoot","mdcDialog","setClosingActions","disconnectedCallback","render","h","class","fullscreen","role","hidden","type","renderHeading","renderFooter","watchHandler","newValue","oldValue","closingActionsChanged","isEqual","waitForUiToRender","dispatchResizeEvent","closing","isBadgeHeading","heading","title","icon","subtitle","supportingText","subheading","name","slot","closingActions"],"sources":["./node_modules/@material/dialog/util.js","./node_modules/@material/dom/focus-trap.js","./node_modules/@material/dialog/constants.js","./node_modules/@material/dialog/foundation.js","./node_modules/@material/dialog/component.js","./src/components/dialog/dialog.scss?tag=limel-dialog&encapsulation=shadow","./src/components/dialog/dialog.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nexport function createFocusTrapInstance(surfaceEl, focusTrapFactory, initialFocusEl) {\n return focusTrapFactory(surfaceEl, { initialFocusEl: initialFocusEl });\n}\nexport function isScrollable(el) {\n return el ? el.scrollHeight > el.offsetHeight : false;\n}\n/**\n * For scrollable content, returns true if the content has not been scrolled\n * (that is, the scroll content is as the \"top\"). This is used in full-screen\n * dialogs, where the scroll divider is expected only to appear once the\n * content has been scrolled \"underneath\" the header bar.\n */\nexport function isScrollAtTop(el) {\n return el ? el.scrollTop === 0 : false;\n}\n/**\n * For scrollable content, returns true if the content has been scrolled all the\n * way to the bottom. This is used in full-screen dialogs, where the footer\n * scroll divider is expected only to appear when the content is \"cut-off\" by\n * the footer bar.\n */\nexport function isScrollAtBottom(el) {\n return el ? Math.ceil(el.scrollHeight - el.scrollTop) === el.clientHeight :\n false;\n}\nexport function areTopsMisaligned(els) {\n var tops = new Set();\n [].forEach.call(els, function (el) { return tops.add(el.offsetTop); });\n return tops.size > 1;\n}\n//# sourceMappingURL=util.js.map","/**\n * @license\n * Copyright 2020 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar FOCUS_SENTINEL_CLASS = 'mdc-dom-focus-sentinel';\n/**\n * Utility to trap focus in a given root element, e.g. for modal components such\n * as dialogs. The root should have at least one focusable child element,\n * for setting initial focus when trapping focus.\n * Also tracks the previously focused element, and restores focus to that\n * element when releasing focus.\n */\nvar FocusTrap = /** @class */ (function () {\n function FocusTrap(root, options) {\n if (options === void 0) { options = {}; }\n this.root = root;\n this.options = options;\n // Previously focused element before trapping focus.\n this.elFocusedBeforeTrapFocus = null;\n }\n /**\n * Traps focus in `root`. Also focuses on either `initialFocusEl` if set;\n * otherwises sets initial focus to the first focusable child element.\n */\n FocusTrap.prototype.trapFocus = function () {\n var focusableEls = this.getFocusableElements(this.root);\n if (focusableEls.length === 0) {\n throw new Error('FocusTrap: Element must have at least one focusable child.');\n }\n this.elFocusedBeforeTrapFocus =\n document.activeElement instanceof HTMLElement ? document.activeElement :\n null;\n this.wrapTabFocus(this.root);\n if (!this.options.skipInitialFocus) {\n this.focusInitialElement(focusableEls, this.options.initialFocusEl);\n }\n };\n /**\n * Releases focus from `root`. Also restores focus to the previously focused\n * element.\n */\n FocusTrap.prototype.releaseFocus = function () {\n [].slice.call(this.root.querySelectorAll(\".\" + FOCUS_SENTINEL_CLASS))\n .forEach(function (sentinelEl) {\n sentinelEl.parentElement.removeChild(sentinelEl);\n });\n if (!this.options.skipRestoreFocus && this.elFocusedBeforeTrapFocus) {\n this.elFocusedBeforeTrapFocus.focus();\n }\n };\n /**\n * Wraps tab focus within `el` by adding two hidden sentinel divs which are\n * used to mark the beginning and the end of the tabbable region. When\n * focused, these sentinel elements redirect focus to the first/last\n * children elements of the tabbable region, ensuring that focus is trapped\n * within that region.\n */\n FocusTrap.prototype.wrapTabFocus = function (el) {\n var _this = this;\n var sentinelStart = this.createSentinel();\n var sentinelEnd = this.createSentinel();\n sentinelStart.addEventListener('focus', function () {\n var focusableEls = _this.getFocusableElements(el);\n if (focusableEls.length > 0) {\n focusableEls[focusableEls.length - 1].focus();\n }\n });\n sentinelEnd.addEventListener('focus', function () {\n var focusableEls = _this.getFocusableElements(el);\n if (focusableEls.length > 0) {\n focusableEls[0].focus();\n }\n });\n el.insertBefore(sentinelStart, el.children[0]);\n el.appendChild(sentinelEnd);\n };\n /**\n * Focuses on `initialFocusEl` if defined and a child of the root element.\n * Otherwise, focuses on the first focusable child element of the root.\n */\n FocusTrap.prototype.focusInitialElement = function (focusableEls, initialFocusEl) {\n var focusIndex = 0;\n if (initialFocusEl) {\n focusIndex = Math.max(focusableEls.indexOf(initialFocusEl), 0);\n }\n focusableEls[focusIndex].focus();\n };\n FocusTrap.prototype.getFocusableElements = function (root) {\n var focusableEls = [].slice.call(root.querySelectorAll('[autofocus], [tabindex], a, input, textarea, select, button'));\n return focusableEls.filter(function (el) {\n var isDisabledOrHidden = el.getAttribute('aria-disabled') === 'true' ||\n el.getAttribute('disabled') != null ||\n el.getAttribute('hidden') != null ||\n el.getAttribute('aria-hidden') === 'true';\n var isTabbableAndVisible = el.tabIndex >= 0 &&\n el.getBoundingClientRect().width > 0 &&\n !el.classList.contains(FOCUS_SENTINEL_CLASS) && !isDisabledOrHidden;\n var isProgrammaticallyHidden = false;\n if (isTabbableAndVisible) {\n var style = getComputedStyle(el);\n isProgrammaticallyHidden =\n style.display === 'none' || style.visibility === 'hidden';\n }\n return isTabbableAndVisible && !isProgrammaticallyHidden;\n });\n };\n FocusTrap.prototype.createSentinel = function () {\n var sentinel = document.createElement('div');\n sentinel.setAttribute('tabindex', '0');\n // Don't announce in screen readers.\n sentinel.setAttribute('aria-hidden', 'true');\n sentinel.classList.add(FOCUS_SENTINEL_CLASS);\n return sentinel;\n };\n return FocusTrap;\n}());\nexport { FocusTrap };\n//# sourceMappingURL=focus-trap.js.map","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nexport var cssClasses = {\n CLOSING: 'mdc-dialog--closing',\n OPEN: 'mdc-dialog--open',\n OPENING: 'mdc-dialog--opening',\n SCROLLABLE: 'mdc-dialog--scrollable',\n SCROLL_LOCK: 'mdc-dialog-scroll-lock',\n STACKED: 'mdc-dialog--stacked',\n FULLSCREEN: 'mdc-dialog--fullscreen',\n // Class for showing a scroll divider on full-screen dialog header element.\n // Should only be displayed on scrollable content, when the dialog content is\n // scrolled \"underneath\" the header.\n SCROLL_DIVIDER_HEADER: 'mdc-dialog-scroll-divider-header',\n // Class for showing a scroll divider on a full-screen dialog footer element.\n // Should only be displayed on scrolalble content, when the dialog content is\n // obscured \"underneath\" the footer.\n SCROLL_DIVIDER_FOOTER: 'mdc-dialog-scroll-divider-footer',\n // The \"surface scrim\" is a scrim covering only the surface of a dialog. This\n // is used in situations where a confirmation dialog is shown over an already\n // opened full-screen dialog. On larger screen-sizes, the full-screen dialog\n // is sized as a modal and so in these situations we display a \"surface scrim\"\n // to prevent a \"double scrim\" (where the scrim from the secondary\n // confirmation dialog would overlap with the scrim from the full-screen\n // dialog).\n SURFACE_SCRIM_SHOWN: 'mdc-dialog__surface-scrim--shown',\n // \"Showing\" animating class for the surface-scrim.\n SURFACE_SCRIM_SHOWING: 'mdc-dialog__surface-scrim--showing',\n // \"Hiding\" animating class for the surface-scrim.\n SURFACE_SCRIM_HIDING: 'mdc-dialog__surface-scrim--hiding',\n // Class to hide a dialog's scrim (used in conjunction with a surface-scrim).\n // Note that we only hide the original scrim rather than removing it entirely\n // to prevent interactions with the content behind this scrim, and to capture\n // scrim clicks.\n SCRIM_HIDDEN: 'mdc-dialog__scrim--hidden',\n};\nexport var strings = {\n ACTION_ATTRIBUTE: 'data-mdc-dialog-action',\n BUTTON_DEFAULT_ATTRIBUTE: 'data-mdc-dialog-button-default',\n BUTTON_SELECTOR: '.mdc-dialog__button',\n CLOSED_EVENT: 'MDCDialog:closed',\n CLOSE_ACTION: 'close',\n CLOSING_EVENT: 'MDCDialog:closing',\n CONTAINER_SELECTOR: '.mdc-dialog__container',\n CONTENT_SELECTOR: '.mdc-dialog__content',\n DESTROY_ACTION: 'destroy',\n INITIAL_FOCUS_ATTRIBUTE: 'data-mdc-dialog-initial-focus',\n OPENED_EVENT: 'MDCDialog:opened',\n OPENING_EVENT: 'MDCDialog:opening',\n SCRIM_SELECTOR: '.mdc-dialog__scrim',\n SUPPRESS_DEFAULT_PRESS_SELECTOR: [\n 'textarea',\n '.mdc-menu .mdc-list-item',\n '.mdc-menu .mdc-deprecated-list-item',\n ].join(', '),\n SURFACE_SELECTOR: '.mdc-dialog__surface',\n};\nexport var numbers = {\n DIALOG_ANIMATION_CLOSE_TIME_MS: 75,\n DIALOG_ANIMATION_OPEN_TIME_MS: 150,\n};\n//# sourceMappingURL=constants.js.map","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends } from \"tslib\";\nimport { AnimationFrame } from '@material/animation/animationframe';\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses, numbers, strings } from './constants';\nvar AnimationKeys;\n(function (AnimationKeys) {\n AnimationKeys[\"POLL_SCROLL_POS\"] = \"poll_scroll_position\";\n AnimationKeys[\"POLL_LAYOUT_CHANGE\"] = \"poll_layout_change\";\n})(AnimationKeys || (AnimationKeys = {}));\nvar MDCDialogFoundation = /** @class */ (function (_super) {\n __extends(MDCDialogFoundation, _super);\n function MDCDialogFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCDialogFoundation.defaultAdapter), adapter)) || this;\n _this.dialogOpen = false;\n _this.isFullscreen = false;\n _this.animationFrame = 0;\n _this.animationTimer = 0;\n _this.escapeKeyAction = strings.CLOSE_ACTION;\n _this.scrimClickAction = strings.CLOSE_ACTION;\n _this.autoStackButtons = true;\n _this.areButtonsStacked = false;\n _this.suppressDefaultPressSelector = strings.SUPPRESS_DEFAULT_PRESS_SELECTOR;\n _this.animFrame = new AnimationFrame();\n _this.contentScrollHandler = function () {\n _this.handleScrollEvent();\n };\n _this.windowResizeHandler = function () {\n _this.layout();\n };\n _this.windowOrientationChangeHandler = function () {\n _this.layout();\n };\n return _this;\n }\n Object.defineProperty(MDCDialogFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCDialogFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCDialogFoundation, \"numbers\", {\n get: function () {\n return numbers;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCDialogFoundation, \"defaultAdapter\", {\n get: function () {\n return {\n addBodyClass: function () { return undefined; },\n addClass: function () { return undefined; },\n areButtonsStacked: function () { return false; },\n clickDefaultButton: function () { return undefined; },\n eventTargetMatches: function () { return false; },\n getActionFromEvent: function () { return ''; },\n getInitialFocusEl: function () { return null; },\n hasClass: function () { return false; },\n isContentScrollable: function () { return false; },\n notifyClosed: function () { return undefined; },\n notifyClosing: function () { return undefined; },\n notifyOpened: function () { return undefined; },\n notifyOpening: function () { return undefined; },\n releaseFocus: function () { return undefined; },\n removeBodyClass: function () { return undefined; },\n removeClass: function () { return undefined; },\n reverseButtons: function () { return undefined; },\n trapFocus: function () { return undefined; },\n registerContentEventHandler: function () { return undefined; },\n deregisterContentEventHandler: function () { return undefined; },\n isScrollableContentAtTop: function () { return false; },\n isScrollableContentAtBottom: function () { return false; },\n registerWindowEventHandler: function () { return undefined; },\n deregisterWindowEventHandler: function () { return undefined; },\n };\n },\n enumerable: false,\n configurable: true\n });\n MDCDialogFoundation.prototype.init = function () {\n if (this.adapter.hasClass(cssClasses.STACKED)) {\n this.setAutoStackButtons(false);\n }\n this.isFullscreen = this.adapter.hasClass(cssClasses.FULLSCREEN);\n };\n MDCDialogFoundation.prototype.destroy = function () {\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.handleAnimationTimerEnd();\n }\n if (this.isFullscreen) {\n this.adapter.deregisterContentEventHandler('scroll', this.contentScrollHandler);\n }\n this.animFrame.cancelAll();\n this.adapter.deregisterWindowEventHandler('resize', this.windowResizeHandler);\n this.adapter.deregisterWindowEventHandler('orientationchange', this.windowOrientationChangeHandler);\n };\n MDCDialogFoundation.prototype.open = function (dialogOptions) {\n var _this = this;\n this.dialogOpen = true;\n this.adapter.notifyOpening();\n this.adapter.addClass(cssClasses.OPENING);\n if (this.isFullscreen) {\n // A scroll event listener is registered even if the dialog is not\n // scrollable on open, since the window resize event, or orientation\n // change may make the dialog scrollable after it is opened.\n this.adapter.registerContentEventHandler('scroll', this.contentScrollHandler);\n }\n if (dialogOptions && dialogOptions.isAboveFullscreenDialog) {\n this.adapter.addClass(cssClasses.SCRIM_HIDDEN);\n }\n this.adapter.registerWindowEventHandler('resize', this.windowResizeHandler);\n this.adapter.registerWindowEventHandler('orientationchange', this.windowOrientationChangeHandler);\n // Wait a frame once display is no longer \"none\", to establish basis for\n // animation\n this.runNextAnimationFrame(function () {\n _this.adapter.addClass(cssClasses.OPEN);\n _this.adapter.addBodyClass(cssClasses.SCROLL_LOCK);\n _this.layout();\n _this.animationTimer = setTimeout(function () {\n _this.handleAnimationTimerEnd();\n _this.adapter.trapFocus(_this.adapter.getInitialFocusEl());\n _this.adapter.notifyOpened();\n }, numbers.DIALOG_ANIMATION_OPEN_TIME_MS);\n });\n };\n MDCDialogFoundation.prototype.close = function (action) {\n var _this = this;\n if (action === void 0) { action = ''; }\n if (!this.dialogOpen) {\n // Avoid redundant close calls (and events), e.g. from keydown on elements\n // that inherently emit click\n return;\n }\n this.dialogOpen = false;\n this.adapter.notifyClosing(action);\n this.adapter.addClass(cssClasses.CLOSING);\n this.adapter.removeClass(cssClasses.OPEN);\n this.adapter.removeBodyClass(cssClasses.SCROLL_LOCK);\n if (this.isFullscreen) {\n this.adapter.deregisterContentEventHandler('scroll', this.contentScrollHandler);\n }\n this.adapter.deregisterWindowEventHandler('resize', this.windowResizeHandler);\n this.adapter.deregisterWindowEventHandler('orientationchange', this.windowOrientationChangeHandler);\n cancelAnimationFrame(this.animationFrame);\n this.animationFrame = 0;\n clearTimeout(this.animationTimer);\n this.animationTimer = setTimeout(function () {\n _this.adapter.releaseFocus();\n _this.handleAnimationTimerEnd();\n _this.adapter.notifyClosed(action);\n }, numbers.DIALOG_ANIMATION_CLOSE_TIME_MS);\n };\n /**\n * Used only in instances of showing a secondary dialog over a full-screen\n * dialog. Shows the \"surface scrim\" displayed over the full-screen dialog.\n */\n MDCDialogFoundation.prototype.showSurfaceScrim = function () {\n var _this = this;\n this.adapter.addClass(cssClasses.SURFACE_SCRIM_SHOWING);\n this.runNextAnimationFrame(function () {\n _this.adapter.addClass(cssClasses.SURFACE_SCRIM_SHOWN);\n });\n };\n /**\n * Used only in instances of showing a secondary dialog over a full-screen\n * dialog. Hides the \"surface scrim\" displayed over the full-screen dialog.\n */\n MDCDialogFoundation.prototype.hideSurfaceScrim = function () {\n this.adapter.removeClass(cssClasses.SURFACE_SCRIM_SHOWN);\n this.adapter.addClass(cssClasses.SURFACE_SCRIM_HIDING);\n };\n /**\n * Handles `transitionend` event triggered when surface scrim animation is\n * finished.\n */\n MDCDialogFoundation.prototype.handleSurfaceScrimTransitionEnd = function () {\n this.adapter.removeClass(cssClasses.SURFACE_SCRIM_HIDING);\n this.adapter.removeClass(cssClasses.SURFACE_SCRIM_SHOWING);\n };\n MDCDialogFoundation.prototype.isOpen = function () {\n return this.dialogOpen;\n };\n MDCDialogFoundation.prototype.getEscapeKeyAction = function () {\n return this.escapeKeyAction;\n };\n MDCDialogFoundation.prototype.setEscapeKeyAction = function (action) {\n this.escapeKeyAction = action;\n };\n MDCDialogFoundation.prototype.getScrimClickAction = function () {\n return this.scrimClickAction;\n };\n MDCDialogFoundation.prototype.setScrimClickAction = function (action) {\n this.scrimClickAction = action;\n };\n MDCDialogFoundation.prototype.getAutoStackButtons = function () {\n return this.autoStackButtons;\n };\n MDCDialogFoundation.prototype.setAutoStackButtons = function (autoStack) {\n this.autoStackButtons = autoStack;\n };\n MDCDialogFoundation.prototype.getSuppressDefaultPressSelector = function () {\n return this.suppressDefaultPressSelector;\n };\n MDCDialogFoundation.prototype.setSuppressDefaultPressSelector = function (selector) {\n this.suppressDefaultPressSelector = selector;\n };\n MDCDialogFoundation.prototype.layout = function () {\n var _this = this;\n this.animFrame.request(AnimationKeys.POLL_LAYOUT_CHANGE, function () {\n _this.layoutInternal();\n });\n };\n /** Handles click on the dialog root element. */\n MDCDialogFoundation.prototype.handleClick = function (evt) {\n var isScrim = this.adapter.eventTargetMatches(evt.target, strings.SCRIM_SELECTOR);\n // Check for scrim click first since it doesn't require querying ancestors.\n if (isScrim && this.scrimClickAction !== '') {\n this.close(this.scrimClickAction);\n }\n else {\n var action = this.adapter.getActionFromEvent(evt);\n if (action) {\n this.close(action);\n }\n }\n };\n /** Handles keydown on the dialog root element. */\n MDCDialogFoundation.prototype.handleKeydown = function (evt) {\n var isEnter = evt.key === 'Enter' || evt.keyCode === 13;\n if (!isEnter) {\n return;\n }\n var action = this.adapter.getActionFromEvent(evt);\n if (action) {\n // Action button callback is handled in `handleClick`,\n // since space/enter keydowns on buttons trigger click events.\n return;\n }\n // `composedPath` is used here, when available, to account for use cases\n // where a target meant to suppress the default press behaviour\n // may exist in a shadow root.\n // For example, a textarea inside a web component:\n // <mwc-dialog>\n // <horizontal-layout>\n // #shadow-root (open)\n // <mwc-textarea>\n // #shadow-root (open)\n // <textarea></textarea>\n // </mwc-textarea>\n // </horizontal-layout>\n // </mwc-dialog>\n var target = evt.composedPath ? evt.composedPath()[0] : evt.target;\n var isDefault = this.suppressDefaultPressSelector ?\n !this.adapter.eventTargetMatches(target, this.suppressDefaultPressSelector) :\n true;\n if (isEnter && isDefault) {\n this.adapter.clickDefaultButton();\n }\n };\n /** Handles keydown on the document. */\n MDCDialogFoundation.prototype.handleDocumentKeydown = function (evt) {\n var isEscape = evt.key === 'Escape' || evt.keyCode === 27;\n if (isEscape && this.escapeKeyAction !== '') {\n this.close(this.escapeKeyAction);\n }\n };\n /**\n * Handles scroll event on the dialog's content element -- showing a scroll\n * divider on the header or footer based on the scroll position. This handler\n * should only be registered on full-screen dialogs with scrollable content.\n */\n MDCDialogFoundation.prototype.handleScrollEvent = function () {\n var _this = this;\n // Since scroll events can fire at a high rate, we throttle these events by\n // using requestAnimationFrame.\n this.animFrame.request(AnimationKeys.POLL_SCROLL_POS, function () {\n _this.toggleScrollDividerHeader();\n _this.toggleScrollDividerFooter();\n });\n };\n MDCDialogFoundation.prototype.layoutInternal = function () {\n if (this.autoStackButtons) {\n this.detectStackedButtons();\n }\n this.toggleScrollableClasses();\n };\n MDCDialogFoundation.prototype.handleAnimationTimerEnd = function () {\n this.animationTimer = 0;\n this.adapter.removeClass(cssClasses.OPENING);\n this.adapter.removeClass(cssClasses.CLOSING);\n };\n /**\n * Runs the given logic on the next animation frame, using setTimeout to\n * factor in Firefox reflow behavior.\n */\n MDCDialogFoundation.prototype.runNextAnimationFrame = function (callback) {\n var _this = this;\n cancelAnimationFrame(this.animationFrame);\n this.animationFrame = requestAnimationFrame(function () {\n _this.animationFrame = 0;\n clearTimeout(_this.animationTimer);\n _this.animationTimer = setTimeout(callback, 0);\n });\n };\n MDCDialogFoundation.prototype.detectStackedButtons = function () {\n // Remove the class first to let us measure the buttons' natural positions.\n this.adapter.removeClass(cssClasses.STACKED);\n var areButtonsStacked = this.adapter.areButtonsStacked();\n if (areButtonsStacked) {\n this.adapter.addClass(cssClasses.STACKED);\n }\n if (areButtonsStacked !== this.areButtonsStacked) {\n this.adapter.reverseButtons();\n this.areButtonsStacked = areButtonsStacked;\n }\n };\n MDCDialogFoundation.prototype.toggleScrollableClasses = function () {\n // Remove the class first to let us measure the natural height of the\n // content.\n this.adapter.removeClass(cssClasses.SCROLLABLE);\n if (this.adapter.isContentScrollable()) {\n this.adapter.addClass(cssClasses.SCROLLABLE);\n if (this.isFullscreen) {\n // If dialog is full-screen and scrollable, check if a scroll divider\n // should be shown.\n this.toggleScrollDividerHeader();\n this.toggleScrollDividerFooter();\n }\n }\n };\n MDCDialogFoundation.prototype.toggleScrollDividerHeader = function () {\n if (!this.adapter.isScrollableContentAtTop()) {\n this.adapter.addClass(cssClasses.SCROLL_DIVIDER_HEADER);\n }\n else if (this.adapter.hasClass(cssClasses.SCROLL_DIVIDER_HEADER)) {\n this.adapter.removeClass(cssClasses.SCROLL_DIVIDER_HEADER);\n }\n };\n MDCDialogFoundation.prototype.toggleScrollDividerFooter = function () {\n if (!this.adapter.isScrollableContentAtBottom()) {\n this.adapter.addClass(cssClasses.SCROLL_DIVIDER_FOOTER);\n }\n else if (this.adapter.hasClass(cssClasses.SCROLL_DIVIDER_FOOTER)) {\n this.adapter.removeClass(cssClasses.SCROLL_DIVIDER_FOOTER);\n }\n };\n return MDCDialogFoundation;\n}(MDCFoundation));\nexport { MDCDialogFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCDialogFoundation;\n//# sourceMappingURL=foundation.js.map","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __extends, __values } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { FocusTrap } from '@material/dom/focus-trap';\nimport { closest, matches } from '@material/dom/ponyfill';\nimport { MDCRipple } from '@material/ripple/component';\nimport { MDCDialogFoundation } from './foundation';\nimport * as util from './util';\nvar strings = MDCDialogFoundation.strings;\nvar MDCDialog = /** @class */ (function (_super) {\n __extends(MDCDialog, _super);\n function MDCDialog() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(MDCDialog.prototype, \"isOpen\", {\n get: function () {\n return this.foundation.isOpen();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCDialog.prototype, \"escapeKeyAction\", {\n get: function () {\n return this.foundation.getEscapeKeyAction();\n },\n set: function (action) {\n this.foundation.setEscapeKeyAction(action);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCDialog.prototype, \"scrimClickAction\", {\n get: function () {\n return this.foundation.getScrimClickAction();\n },\n set: function (action) {\n this.foundation.setScrimClickAction(action);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCDialog.prototype, \"autoStackButtons\", {\n get: function () {\n return this.foundation.getAutoStackButtons();\n },\n set: function (autoStack) {\n this.foundation.setAutoStackButtons(autoStack);\n },\n enumerable: false,\n configurable: true\n });\n MDCDialog.attachTo = function (root) {\n return new MDCDialog(root);\n };\n MDCDialog.prototype.initialize = function (focusTrapFactory) {\n var e_1, _a;\n if (focusTrapFactory === void 0) { focusTrapFactory = function (el, focusOptions) {\n return new FocusTrap(el, focusOptions);\n }; }\n var container = this.root.querySelector(strings.CONTAINER_SELECTOR);\n if (!container) {\n throw new Error(\"Dialog component requires a \" + strings.CONTAINER_SELECTOR + \" container element\");\n }\n this.container = container;\n this.content =\n this.root.querySelector(strings.CONTENT_SELECTOR);\n this.buttons = [].slice.call(this.root.querySelectorAll(strings.BUTTON_SELECTOR));\n this.defaultButton = this.root.querySelector(\"[\" + strings.BUTTON_DEFAULT_ATTRIBUTE + \"]\");\n this.focusTrapFactory = focusTrapFactory;\n this.buttonRipples = [];\n try {\n for (var _b = __values(this.buttons), _c = _b.next(); !_c.done; _c = _b.next()) {\n var buttonEl = _c.value;\n this.buttonRipples.push(new MDCRipple(buttonEl));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n MDCDialog.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.focusTrap = util.createFocusTrapInstance(this.container, this.focusTrapFactory, this.getInitialFocusEl() || undefined);\n this.handleClick = this.foundation.handleClick.bind(this.foundation);\n this.handleKeydown = this.foundation.handleKeydown.bind(this.foundation);\n this.handleDocumentKeydown =\n this.foundation.handleDocumentKeydown.bind(this.foundation);\n // this.handleLayout = this.layout.bind(this);\n this.handleOpening = function () {\n document.addEventListener('keydown', _this.handleDocumentKeydown);\n };\n this.handleClosing = function () {\n document.removeEventListener('keydown', _this.handleDocumentKeydown);\n };\n this.listen('click', this.handleClick);\n this.listen('keydown', this.handleKeydown);\n this.listen(strings.OPENING_EVENT, this.handleOpening);\n this.listen(strings.CLOSING_EVENT, this.handleClosing);\n };\n MDCDialog.prototype.destroy = function () {\n this.unlisten('click', this.handleClick);\n this.unlisten('keydown', this.handleKeydown);\n this.unlisten(strings.OPENING_EVENT, this.handleOpening);\n this.unlisten(strings.CLOSING_EVENT, this.handleClosing);\n this.handleClosing();\n this.buttonRipples.forEach(function (ripple) {\n ripple.destroy();\n });\n _super.prototype.destroy.call(this);\n };\n MDCDialog.prototype.layout = function () {\n this.foundation.layout();\n };\n MDCDialog.prototype.open = function () {\n this.foundation.open();\n };\n MDCDialog.prototype.close = function (action) {\n if (action === void 0) { action = ''; }\n this.foundation.close(action);\n };\n MDCDialog.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n addBodyClass: function (className) { return document.body.classList.add(className); },\n addClass: function (className) { return _this.root.classList.add(className); },\n areButtonsStacked: function () { return util.areTopsMisaligned(_this.buttons); },\n clickDefaultButton: function () {\n if (_this.defaultButton && !_this.defaultButton.disabled) {\n _this.defaultButton.click();\n }\n },\n eventTargetMatches: function (target, selector) {\n return target ? matches(target, selector) : false;\n },\n getActionFromEvent: function (evt) {\n if (!evt.target) {\n return '';\n }\n var element = closest(evt.target, \"[\" + strings.ACTION_ATTRIBUTE + \"]\");\n return element && element.getAttribute(strings.ACTION_ATTRIBUTE);\n },\n getInitialFocusEl: function () { return _this.getInitialFocusEl(); },\n hasClass: function (className) { return _this.root.classList.contains(className); },\n isContentScrollable: function () { return util.isScrollable(_this.content); },\n notifyClosed: function (action) { return _this.emit(strings.CLOSED_EVENT, action ? { action: action } : {}); },\n notifyClosing: function (action) { return _this.emit(strings.CLOSING_EVENT, action ? { action: action } : {}); },\n notifyOpened: function () { return _this.emit(strings.OPENED_EVENT, {}); },\n notifyOpening: function () { return _this.emit(strings.OPENING_EVENT, {}); },\n releaseFocus: function () {\n _this.focusTrap.releaseFocus();\n },\n removeBodyClass: function (className) { return document.body.classList.remove(className); },\n removeClass: function (className) { return _this.root.classList.remove(className); },\n reverseButtons: function () {\n _this.buttons.reverse();\n _this.buttons.forEach(function (button) {\n button.parentElement.appendChild(button);\n });\n },\n trapFocus: function () {\n _this.focusTrap.trapFocus();\n },\n registerContentEventHandler: function (evt, handler) {\n if (_this.content instanceof HTMLElement) {\n _this.content.addEventListener(evt, handler);\n }\n },\n deregisterContentEventHandler: function (evt, handler) {\n if (_this.content instanceof HTMLElement) {\n _this.content.removeEventListener(evt, handler);\n }\n },\n isScrollableContentAtTop: function () {\n return util.isScrollAtTop(_this.content);\n },\n isScrollableContentAtBottom: function () {\n return util.isScrollAtBottom(_this.content);\n },\n registerWindowEventHandler: function (evt, handler) {\n window.addEventListener(evt, handler);\n },\n deregisterWindowEventHandler: function (evt, handler) {\n window.removeEventListener(evt, handler);\n },\n };\n return new MDCDialogFoundation(adapter);\n };\n MDCDialog.prototype.getInitialFocusEl = function () {\n return this.root.querySelector(\"[\" + strings.INITIAL_FOCUS_ATTRIBUTE + \"]\");\n };\n return MDCDialog;\n}(MDCComponent));\nexport { MDCDialog };\n//# sourceMappingURL=component.js.map","@use '../../style/functions';\n@use '../../style/mixins';\n\n@use '../../style/internal/lime-theme';\n\n@use '@material/dialog';\n\n/**\n * @prop --dialog-width: Width of the dialog.\n * @prop --dialog-height: Height of the dialog.\n * @prop --dialog-z-index: z-index of the dialog container, including the scrim.\n * @prop --dialog-heading-title-color: Color of the title.\n * @prop --dialog-heading-subtitle-color: Color of the subtitle.\n * @prop --dialog-heading-supporting-text-color: Color of the supporting text.\n * @prop --dialog-heading-icon-color: Color of the icon.\n * @prop --dialog-heading-icon-background-color: Background color of the icon when displayed as a badge.\n * @prop --dialog-max-width: Max width of the dialog.\n * @prop --dialog-max-height: Max height of the dialog.\n * @prop --dialog-border-radius: Border radius of the dialog corners\n * @prop --dialog-padding-top-bottom: Padding on top and bottom of dialog content. Affects the height of fade-out effects on top and bottom edges when the content is scrollable and has overflowed out of the content area. Defaults to `1.5rem`. Note that if you use this variable and set it to numbers smaller than 1rem, you will loose the fade-out effects on the edges. If you have set these paddings to `0`, losing the fade out effects should be however fine for your use case! Because in such a case your intention is to handle the `overflow` internally in the component that is displayed in the dialog's content.\n * @prop --dialog-padding-left-right: Padding on the sides of dialog content. Defaults to `1.25rem`.\n */\n\n:host {\n --dialog-background-color: var(--lime-elevated-surface-background-color);\n --header-heading-color: var(--dialog-heading-title-color);\n --header-subheading-color: var(--dialog-heading-subtitle-color);\n --header-supporting-text-color: var(--dialog-heading-supporting-text-color);\n --header-icon-color: var(--dialog-heading-icon-color);\n --header-icon-background-color: var(--dialog-heading-icon-background-color);\n}\n\n$responsive-body-padding: 3vw; // 3% of viewport's width\n\n@include dialog.core-styles;\n\n.mdc-dialog__content {\n // As long as this component is depended on MDC,\n // we need to force it to be font-agnostic.\n // When MDC-dependency is removed, this block can also be removed.\n // However, on removal of MDC-dependency, we should also make sure to check\n // other font-related styles that might be set by MDC,\n // such as `letter-spacing` or `font-size`.\n font-family: inherit;\n}\n\n.mdc-dialog {\n @include dialog.max-width(16000px, dialog.$margin);\n\n z-index: var(--dialog-z-index, dialog.$z-index);\n padding: env(safe-area-inset-top) env(safe-area-inset-right)\n env(safe-area-inset-bottom) env(safe-area-inset-left);\n\n &.full-screen {\n @include dialog.max-height(16000px, dialog.$margin);\n .mdc-dialog__container {\n height: 100%;\n width: 100%;\n\n .mdc-dialog__surface {\n height: 100%;\n width: 100%;\n }\n }\n }\n\n .mdc-dialog__scrim {\n background-color: rgba(var(--color-black), 0.4);\n }\n\n .mdc-dialog__container {\n height: 100%;\n width: var(--dialog-width, auto);\n }\n\n .mdc-dialog__surface {\n width: var(--dialog-width, auto);\n height: var(--dialog-height, auto);\n background-color: var(--dialog-background-color);\n box-shadow: var(--shadow-depth-64);\n\n max-width: var(--dialog-max-width, calc(100vw - 2rem));\n max-height: var(--dialog-max-height, calc(100% - 2rem));\n border-radius: var(--dialog-border-radius, 0.25rem);\n }\n\n .mdc-dialog__content {\n --limel-top-edge-fade-height: var(--dialog-padding-top-bottom, 1.5rem);\n --limel-bottom-edge-fade-height: var(\n --dialog-padding-top-bottom,\n 1.5rem\n );\n @include mixins.fade-out-overflowed-content-on-edges(vertically);\n\n color: var(--mdc-theme-on-surface);\n padding-left: var(\n --dialog-padding-left-right,\n min(1.25rem, $responsive-body-padding)\n );\n padding-right: var(\n --dialog-padding-left-right,\n min(1.25rem, $responsive-body-padding)\n );\n }\n}\n\n#initialFocusElement {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n z-index: -1;\n}\n\nslot[name='header'] {\n display: none;\n}\n\nslot[name='button'] {\n display: flex;\n gap: 0.5rem; // Makes sure buttons get some default distance\n width: 100%;\n justify-content: flex-end;\n}\n\n@media screen and (max-width: 760px) {\n slot[name='button'] {\n flex-direction: column-reverse;\n }\n .mdc-dialog__actions {\n padding: min(1.5rem, $responsive-body-padding);\n padding-top: 1rem;\n }\n}\n","import { DialogHeading, ClosingActions } from './dialog.types';\nimport { MDCDialog } from '@material/dialog';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { isEqual } from 'lodash-es';\nimport { dispatchResizeEvent } from '../../util/dispatch-resize-event';\nimport { createRandomString } from '../../util/random-string';\n\n/**\n * :::note\n * Regarding the `close` event: When putting other elements that emit `close`\n * events inside a dialog, those events must be caught and stopped inside the\n * dialog. If not, they will bubble to the event handler listening for `close`\n * events on the dialog, which will close the dialog too.\n *\n * See the example _Nested `close` events_.\n * :::\n *\n * :::important\n * Are you developing for\n * [Lime CRM](https://www.lime-technologies.com/en/lime-crm/)? Please note that\n * you should use the [DialogService](https://lundalogik.github.io/lime-web-components/versions/latest/#/api/dialog-service)\n * from Lime Web Components to open dialogs in Lime CRM.\n * :::\n *\n * @exampleComponent limel-example-dialog\n * @exampleComponent limel-example-dialog-nested-close-events\n * @exampleComponent limel-example-dialog-heading\n * @exampleComponent limel-example-dialog-heading-actions\n * @exampleComponent limel-example-dialog-form\n * @exampleComponent limel-example-dialog-size\n * @exampleComponent limel-example-dialog-fullscreen\n * @exampleComponent limel-example-dialog-closing-actions\n * @exampleComponent limel-example-dialog-action-buttons\n * @slot - Content to put inside the dialog\n * @slot header-actions - The dialog header buttons\n * @slot button - The dialog buttons\n */\n@Component({\n tag: 'limel-dialog',\n shadow: true,\n styleUrl: 'dialog.scss',\n})\nexport class Dialog {\n /**\n * The heading for the dialog, if any.\n */\n @Prop()\n public heading: string | DialogHeading;\n\n /**\n * Set to `true` to make the dialog \"fullscreen\".\n */\n @Prop({ reflect: true })\n public fullscreen = false;\n\n /**\n * `true` if the dialog is open, `false` otherwise.\n */\n @Prop({ mutable: true, reflect: true })\n public open = false;\n\n /**\n * Defines which action triggers a close-event.\n */\n @Prop({ reflect: true })\n public closingActions: ClosingActions = {\n escapeKey: true,\n scrimClick: true,\n };\n /**\n * Emitted when the dialog is closed from inside the component.\n * (*Not* emitted when the consumer sets the `open`-property to `false`.)\n */\n @Event()\n private close: EventEmitter<void>;\n\n /**\n * Emitted when the dialog is in the process of being closed.\n */\n @Event()\n private closing: EventEmitter<void>;\n\n @Element()\n private host: HTMLLimelDialogElement;\n\n private mdcDialog: MDCDialog;\n\n private id: string;\n\n private showFooter = true;\n\n constructor() {\n this.handleMdcOpened = this.handleMdcOpened.bind(this);\n this.handleMdcClosed = this.handleMdcClosed.bind(this);\n this.handleMdcClosing = this.handleMdcClosing.bind(this);\n }\n\n public connectedCallback() {\n this.initialize();\n }\n\n public componentWillLoad() {\n this.id = createRandomString();\n this.showFooter = !!this.host.querySelector('[slot=\"button\"]');\n }\n\n public componentDidLoad() {\n this.initialize();\n }\n\n private initialize() {\n const element = this.host.shadowRoot.querySelector('.mdc-dialog');\n if (!element) {\n return;\n }\n\n this.mdcDialog = new MDCDialog(element);\n if (this.open) {\n this.mdcDialog.open();\n }\n\n this.mdcDialog.listen('MDCDialog:opened', this.handleMdcOpened);\n this.mdcDialog.listen('MDCDialog:closed', this.handleMdcClosed);\n this.mdcDialog.listen('MDCDialog:closing', this.handleMdcClosing);\n\n this.setClosingActions();\n }\n\n public disconnectedCallback() {\n this.mdcDialog.unlisten('MDCDialog:opened', this.handleMdcOpened);\n this.mdcDialog.unlisten('MDCDialog:closed', this.handleMdcClosed);\n this.mdcDialog.unlisten('MDCDialog:closing', this.handleMdcClosing);\n this.mdcDialog.destroy();\n }\n\n public render() {\n return (\n <div\n class={{\n 'mdc-dialog': true,\n 'full-screen': !!this.fullscreen,\n }}\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-labelledby={'limel-dialog-title-' + this.id}\n aria-describedby={'limel-dialog-content-' + this.id}\n >\n <input hidden={true} id=\"initialFocusEl\" />\n <div class=\"mdc-dialog__container\">\n <div class=\"mdc-dialog__surface\">\n {/*\n The `initialFocusElement` below is needed to make\n focus trapping work. At the time of writing, the\n focusable elements inside the slots are not\n detected, so we supply our own hidden element for\n the focus trap to use. Read more here:\n https://github.com/material-components/material-components-web/tree/v11.0.0/packages/mdc-dialog#handling-focus-trapping\n */}\n <input type=\"button\" id=\"initialFocusElement\" />\n {this.renderHeading()}\n <div\n class=\"mdc-dialog__content\"\n id={'limel-dialog-content-' + this.id}\n >\n <slot />\n </div>\n {this.renderFooter()}\n </div>\n </div>\n <div class=\"mdc-dialog__scrim\" />\n </div>\n );\n }\n\n @Watch('open')\n protected watchHandler(newValue: boolean, oldValue: boolean) {\n if (oldValue === newValue) {\n return;\n }\n\n if (!this.mdcDialog) {\n return;\n }\n\n if (newValue) {\n this.mdcDialog.open();\n } else {\n this.mdcDialog.close();\n }\n }\n\n @Watch('closingActions')\n protected closingActionsChanged(\n newValue: ClosingActions,\n oldValue: ClosingActions,\n ) {\n if (isEqual(newValue, oldValue)) {\n return;\n }\n\n this.setClosingActions();\n }\n\n private handleMdcOpened() {\n // When the opening-animation has completed, dispatch a\n // resize-event so that any content that depends on\n // javascript for layout has a chance to update to the\n // final layout of the dialog. /Ads\n const waitForUiToRender = 100;\n setTimeout(dispatchResizeEvent, waitForUiToRender);\n }\n\n private handleMdcClosed() {\n if (this.open) {\n this.close.emit();\n }\n\n this.open = false;\n }\n\n private handleMdcClosing() {\n this.closing.emit();\n }\n\n private isBadgeHeading(\n heading: string | DialogHeading,\n ): heading is DialogHeading {\n return typeof heading === 'object' && !!heading.title && !!heading.icon;\n }\n\n private renderHeading() {\n if (this.isBadgeHeading(this.heading)) {\n const { title, subtitle, supportingText, icon } = this.heading;\n\n return (\n <limel-header\n icon={icon}\n heading={title}\n subheading={subtitle}\n supportingText={supportingText}\n >\n <slot name=\"header-actions\" slot=\"actions\" />\n </limel-header>\n );\n } else if (typeof this.heading === 'string') {\n return <limel-header heading={this.heading}></limel-header>;\n }\n\n return null;\n }\n\n private renderFooter() {\n if (this.showFooter) {\n return (\n <footer class=\"mdc-dialog__actions\">\n <slot name=\"button\" />\n </footer>\n );\n }\n }\n\n private setClosingActions() {\n this.mdcDialog.scrimClickAction = '';\n if (this.closingActions.scrimClick) {\n this.mdcDialog.scrimClickAction = 'close';\n }\n\n this.mdcDialog.escapeKeyAction = '';\n if (this.closingActions.escapeKey) {\n this.mdcDialog.escapeKeyAction = 'close';\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["createFocusTrapInstance","surfaceEl","focusTrapFactory","initialFocusEl","isScrollable","el","scrollHeight","offsetHeight","isScrollAtTop","scrollTop","isScrollAtBottom","Math","ceil","clientHeight","areTopsMisaligned","els","tops","Set","forEach","call","add","offsetTop","size","FOCUS_SENTINEL_CLASS","FocusTrap","root","options","this","elFocusedBeforeTrapFocus","prototype","trapFocus","focusableEls","getFocusableElements","length","Error","document","activeElement","HTMLElement","wrapTabFocus","skipInitialFocus","focusInitialElement","releaseFocus","slice","querySelectorAll","sentinelEl","parentElement","removeChild","skipRestoreFocus","focus","_this","sentinelStart","createSentinel","sentinelEnd","addEventListener","insertBefore","children","appendChild","focusIndex","max","indexOf","filter","isDisabledOrHidden","getAttribute","isTabbableAndVisible","tabIndex","getBoundingClientRect","width","classList","contains","isProgrammaticallyHidden","style","getComputedStyle","display","visibility","sentinel","createElement","setAttribute","cssClasses","CLOSING","OPEN","OPENING","SCROLLABLE","SCROLL_LOCK","STACKED","FULLSCREEN","SCROLL_DIVIDER_HEADER","SCROLL_DIVIDER_FOOTER","SURFACE_SCRIM_SHOWN","SURFACE_SCRIM_SHOWING","SURFACE_SCRIM_HIDING","SCRIM_HIDDEN","strings","ACTION_ATTRIBUTE","BUTTON_DEFAULT_ATTRIBUTE","BUTTON_SELECTOR","CLOSED_EVENT","CLOSE_ACTION","CLOSING_EVENT","CONTAINER_SELECTOR","CONTENT_SELECTOR","DESTROY_ACTION","INITIAL_FOCUS_ATTRIBUTE","OPENED_EVENT","OPENING_EVENT","SCRIM_SELECTOR","SUPPRESS_DEFAULT_PRESS_SELECTOR","join","SURFACE_SELECTOR","numbers","DIALOG_ANIMATION_CLOSE_TIME_MS","DIALOG_ANIMATION_OPEN_TIME_MS","AnimationKeys","MDCDialogFoundation","_super","__extends","adapter","__assign","defaultAdapter","dialogOpen","isFullscreen","animationFrame","animationTimer","escapeKeyAction","scrimClickAction","autoStackButtons","areButtonsStacked","suppressDefaultPressSelector","animFrame","AnimationFrame","contentScrollHandler","handleScrollEvent","windowResizeHandler","layout","windowOrientationChangeHandler","Object","defineProperty","get","enumerable","configurable","addBodyClass","undefined","addClass","clickDefaultButton","eventTargetMatches","getActionFromEvent","getInitialFocusEl","hasClass","isContentScrollable","notifyClosed","notifyClosing","notifyOpened","notifyOpening","removeBodyClass","removeClass","reverseButtons","registerContentEventHandler","deregisterContentEventHandler","isScrollableContentAtTop","isScrollableContentAtBottom","registerWindowEventHandler","deregisterWindowEventHandler","init","setAutoStackButtons","destroy","clearTimeout","handleAnimationTimerEnd","cancelAll","open","dialogOptions","isAboveFullscreenDialog","runNextAnimationFrame","setTimeout","close","action","cancelAnimationFrame","showSurfaceScrim","hideSurfaceScrim","handleSurfaceScrimTransitionEnd","isOpen","getEscapeKeyAction","setEscapeKeyAction","getScrimClickAction","setScrimClickAction","getAutoStackButtons","autoStack","getSuppressDefaultPressSelector","setSuppressDefaultPressSelector","selector","request","POLL_LAYOUT_CHANGE","layoutInternal","handleClick","evt","isScrim","target","handleKeydown","isEnter","key","keyCode","composedPath","isDefault","handleDocumentKeydown","isEscape","POLL_SCROLL_POS","toggleScrollDividerHeader","toggleScrollDividerFooter","detectStackedButtons","toggleScrollableClasses","callback","requestAnimationFrame","MDCFoundation","MDCDialog","apply","arguments","foundation","set","attachTo","initialize","e_1","_a","focusOptions","container","querySelector","content","buttons","defaultButton","buttonRipples","_b","__values","_c","next","done","buttonEl","value","push","MDCRipple","e_1_1","error","return","initialSyncWithDOM","focusTrap","util.createFocusTrapInstance","bind","handleOpening","handleClosing","removeEventListener","listen","unlisten","ripple","getDefaultFoundation","className","body","util.areTopsMisaligned","disabled","click","matches","element","closest","util.isScrollable","emit","remove","reverse","button","handler","util.isScrollAtTop","util.isScrollAtBottom","window","MDCComponent","dialogCss","Dialog","constructor","hostRef","showFooter","escapeKey","scrimClick","handleMdcOpened","handleMdcClosed","handleMdcClosing","connectedCallback","componentWillLoad","id","createRandomString","host","componentDidLoad","shadowRoot","mdcDialog","setClosingActions","disconnectedCallback","render","h","class","fullscreen","role","hidden","type","renderHeading","renderFooter","watchHandler","newValue","oldValue","closingActionsChanged","isEqual","waitForUiToRender","dispatchResizeEvent","closing","isBadgeHeading","heading","title","icon","subtitle","supportingText","subheading","name","slot","closingActions"],"sources":["./node_modules/@material/dialog/util.js","./node_modules/@material/dom/focus-trap.js","./node_modules/@material/dialog/constants.js","./node_modules/@material/dialog/foundation.js","./node_modules/@material/dialog/component.js","./src/components/dialog/dialog.scss?tag=limel-dialog&encapsulation=shadow","./src/components/dialog/dialog.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nexport function createFocusTrapInstance(surfaceEl, focusTrapFactory, initialFocusEl) {\n return focusTrapFactory(surfaceEl, { initialFocusEl: initialFocusEl });\n}\nexport function isScrollable(el) {\n return el ? el.scrollHeight > el.offsetHeight : false;\n}\n/**\n * For scrollable content, returns true if the content has not been scrolled\n * (that is, the scroll content is as the \"top\"). This is used in full-screen\n * dialogs, where the scroll divider is expected only to appear once the\n * content has been scrolled \"underneath\" the header bar.\n */\nexport function isScrollAtTop(el) {\n return el ? el.scrollTop === 0 : false;\n}\n/**\n * For scrollable content, returns true if the content has been scrolled all the\n * way to the bottom. This is used in full-screen dialogs, where the footer\n * scroll divider is expected only to appear when the content is \"cut-off\" by\n * the footer bar.\n */\nexport function isScrollAtBottom(el) {\n return el ? Math.ceil(el.scrollHeight - el.scrollTop) === el.clientHeight :\n false;\n}\nexport function areTopsMisaligned(els) {\n var tops = new Set();\n [].forEach.call(els, function (el) { return tops.add(el.offsetTop); });\n return tops.size > 1;\n}\n//# sourceMappingURL=util.js.map","/**\n * @license\n * Copyright 2020 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar FOCUS_SENTINEL_CLASS = 'mdc-dom-focus-sentinel';\n/**\n * Utility to trap focus in a given root element, e.g. for modal components such\n * as dialogs. The root should have at least one focusable child element,\n * for setting initial focus when trapping focus.\n * Also tracks the previously focused element, and restores focus to that\n * element when releasing focus.\n */\nvar FocusTrap = /** @class */ (function () {\n function FocusTrap(root, options) {\n if (options === void 0) { options = {}; }\n this.root = root;\n this.options = options;\n // Previously focused element before trapping focus.\n this.elFocusedBeforeTrapFocus = null;\n }\n /**\n * Traps focus in `root`. Also focuses on either `initialFocusEl` if set;\n * otherwises sets initial focus to the first focusable child element.\n */\n FocusTrap.prototype.trapFocus = function () {\n var focusableEls = this.getFocusableElements(this.root);\n if (focusableEls.length === 0) {\n throw new Error('FocusTrap: Element must have at least one focusable child.');\n }\n this.elFocusedBeforeTrapFocus =\n document.activeElement instanceof HTMLElement ? document.activeElement :\n null;\n this.wrapTabFocus(this.root);\n if (!this.options.skipInitialFocus) {\n this.focusInitialElement(focusableEls, this.options.initialFocusEl);\n }\n };\n /**\n * Releases focus from `root`. Also restores focus to the previously focused\n * element.\n */\n FocusTrap.prototype.releaseFocus = function () {\n [].slice.call(this.root.querySelectorAll(\".\" + FOCUS_SENTINEL_CLASS))\n .forEach(function (sentinelEl) {\n sentinelEl.parentElement.removeChild(sentinelEl);\n });\n if (!this.options.skipRestoreFocus && this.elFocusedBeforeTrapFocus) {\n this.elFocusedBeforeTrapFocus.focus();\n }\n };\n /**\n * Wraps tab focus within `el` by adding two hidden sentinel divs which are\n * used to mark the beginning and the end of the tabbable region. When\n * focused, these sentinel elements redirect focus to the first/last\n * children elements of the tabbable region, ensuring that focus is trapped\n * within that region.\n */\n FocusTrap.prototype.wrapTabFocus = function (el) {\n var _this = this;\n var sentinelStart = this.createSentinel();\n var sentinelEnd = this.createSentinel();\n sentinelStart.addEventListener('focus', function () {\n var focusableEls = _this.getFocusableElements(el);\n if (focusableEls.length > 0) {\n focusableEls[focusableEls.length - 1].focus();\n }\n });\n sentinelEnd.addEventListener('focus', function () {\n var focusableEls = _this.getFocusableElements(el);\n if (focusableEls.length > 0) {\n focusableEls[0].focus();\n }\n });\n el.insertBefore(sentinelStart, el.children[0]);\n el.appendChild(sentinelEnd);\n };\n /**\n * Focuses on `initialFocusEl` if defined and a child of the root element.\n * Otherwise, focuses on the first focusable child element of the root.\n */\n FocusTrap.prototype.focusInitialElement = function (focusableEls, initialFocusEl) {\n var focusIndex = 0;\n if (initialFocusEl) {\n focusIndex = Math.max(focusableEls.indexOf(initialFocusEl), 0);\n }\n focusableEls[focusIndex].focus();\n };\n FocusTrap.prototype.getFocusableElements = function (root) {\n var focusableEls = [].slice.call(root.querySelectorAll('[autofocus], [tabindex], a, input, textarea, select, button'));\n return focusableEls.filter(function (el) {\n var isDisabledOrHidden = el.getAttribute('aria-disabled') === 'true' ||\n el.getAttribute('disabled') != null ||\n el.getAttribute('hidden') != null ||\n el.getAttribute('aria-hidden') === 'true';\n var isTabbableAndVisible = el.tabIndex >= 0 &&\n el.getBoundingClientRect().width > 0 &&\n !el.classList.contains(FOCUS_SENTINEL_CLASS) && !isDisabledOrHidden;\n var isProgrammaticallyHidden = false;\n if (isTabbableAndVisible) {\n var style = getComputedStyle(el);\n isProgrammaticallyHidden =\n style.display === 'none' || style.visibility === 'hidden';\n }\n return isTabbableAndVisible && !isProgrammaticallyHidden;\n });\n };\n FocusTrap.prototype.createSentinel = function () {\n var sentinel = document.createElement('div');\n sentinel.setAttribute('tabindex', '0');\n // Don't announce in screen readers.\n sentinel.setAttribute('aria-hidden', 'true');\n sentinel.classList.add(FOCUS_SENTINEL_CLASS);\n return sentinel;\n };\n return FocusTrap;\n}());\nexport { FocusTrap };\n//# sourceMappingURL=focus-trap.js.map","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nexport var cssClasses = {\n CLOSING: 'mdc-dialog--closing',\n OPEN: 'mdc-dialog--open',\n OPENING: 'mdc-dialog--opening',\n SCROLLABLE: 'mdc-dialog--scrollable',\n SCROLL_LOCK: 'mdc-dialog-scroll-lock',\n STACKED: 'mdc-dialog--stacked',\n FULLSCREEN: 'mdc-dialog--fullscreen',\n // Class for showing a scroll divider on full-screen dialog header element.\n // Should only be displayed on scrollable content, when the dialog content is\n // scrolled \"underneath\" the header.\n SCROLL_DIVIDER_HEADER: 'mdc-dialog-scroll-divider-header',\n // Class for showing a scroll divider on a full-screen dialog footer element.\n // Should only be displayed on scrolalble content, when the dialog content is\n // obscured \"underneath\" the footer.\n SCROLL_DIVIDER_FOOTER: 'mdc-dialog-scroll-divider-footer',\n // The \"surface scrim\" is a scrim covering only the surface of a dialog. This\n // is used in situations where a confirmation dialog is shown over an already\n // opened full-screen dialog. On larger screen-sizes, the full-screen dialog\n // is sized as a modal and so in these situations we display a \"surface scrim\"\n // to prevent a \"double scrim\" (where the scrim from the secondary\n // confirmation dialog would overlap with the scrim from the full-screen\n // dialog).\n SURFACE_SCRIM_SHOWN: 'mdc-dialog__surface-scrim--shown',\n // \"Showing\" animating class for the surface-scrim.\n SURFACE_SCRIM_SHOWING: 'mdc-dialog__surface-scrim--showing',\n // \"Hiding\" animating class for the surface-scrim.\n SURFACE_SCRIM_HIDING: 'mdc-dialog__surface-scrim--hiding',\n // Class to hide a dialog's scrim (used in conjunction with a surface-scrim).\n // Note that we only hide the original scrim rather than removing it entirely\n // to prevent interactions with the content behind this scrim, and to capture\n // scrim clicks.\n SCRIM_HIDDEN: 'mdc-dialog__scrim--hidden',\n};\nexport var strings = {\n ACTION_ATTRIBUTE: 'data-mdc-dialog-action',\n BUTTON_DEFAULT_ATTRIBUTE: 'data-mdc-dialog-button-default',\n BUTTON_SELECTOR: '.mdc-dialog__button',\n CLOSED_EVENT: 'MDCDialog:closed',\n CLOSE_ACTION: 'close',\n CLOSING_EVENT: 'MDCDialog:closing',\n CONTAINER_SELECTOR: '.mdc-dialog__container',\n CONTENT_SELECTOR: '.mdc-dialog__content',\n DESTROY_ACTION: 'destroy',\n INITIAL_FOCUS_ATTRIBUTE: 'data-mdc-dialog-initial-focus',\n OPENED_EVENT: 'MDCDialog:opened',\n OPENING_EVENT: 'MDCDialog:opening',\n SCRIM_SELECTOR: '.mdc-dialog__scrim',\n SUPPRESS_DEFAULT_PRESS_SELECTOR: [\n 'textarea',\n '.mdc-menu .mdc-list-item',\n '.mdc-menu .mdc-deprecated-list-item',\n ].join(', '),\n SURFACE_SELECTOR: '.mdc-dialog__surface',\n};\nexport var numbers = {\n DIALOG_ANIMATION_CLOSE_TIME_MS: 75,\n DIALOG_ANIMATION_OPEN_TIME_MS: 150,\n};\n//# sourceMappingURL=constants.js.map","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends } from \"tslib\";\nimport { AnimationFrame } from '@material/animation/animationframe';\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses, numbers, strings } from './constants';\nvar AnimationKeys;\n(function (AnimationKeys) {\n AnimationKeys[\"POLL_SCROLL_POS\"] = \"poll_scroll_position\";\n AnimationKeys[\"POLL_LAYOUT_CHANGE\"] = \"poll_layout_change\";\n})(AnimationKeys || (AnimationKeys = {}));\nvar MDCDialogFoundation = /** @class */ (function (_super) {\n __extends(MDCDialogFoundation, _super);\n function MDCDialogFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCDialogFoundation.defaultAdapter), adapter)) || this;\n _this.dialogOpen = false;\n _this.isFullscreen = false;\n _this.animationFrame = 0;\n _this.animationTimer = 0;\n _this.escapeKeyAction = strings.CLOSE_ACTION;\n _this.scrimClickAction = strings.CLOSE_ACTION;\n _this.autoStackButtons = true;\n _this.areButtonsStacked = false;\n _this.suppressDefaultPressSelector = strings.SUPPRESS_DEFAULT_PRESS_SELECTOR;\n _this.animFrame = new AnimationFrame();\n _this.contentScrollHandler = function () {\n _this.handleScrollEvent();\n };\n _this.windowResizeHandler = function () {\n _this.layout();\n };\n _this.windowOrientationChangeHandler = function () {\n _this.layout();\n };\n return _this;\n }\n Object.defineProperty(MDCDialogFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCDialogFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCDialogFoundation, \"numbers\", {\n get: function () {\n return numbers;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCDialogFoundation, \"defaultAdapter\", {\n get: function () {\n return {\n addBodyClass: function () { return undefined; },\n addClass: function () { return undefined; },\n areButtonsStacked: function () { return false; },\n clickDefaultButton: function () { return undefined; },\n eventTargetMatches: function () { return false; },\n getActionFromEvent: function () { return ''; },\n getInitialFocusEl: function () { return null; },\n hasClass: function () { return false; },\n isContentScrollable: function () { return false; },\n notifyClosed: function () { return undefined; },\n notifyClosing: function () { return undefined; },\n notifyOpened: function () { return undefined; },\n notifyOpening: function () { return undefined; },\n releaseFocus: function () { return undefined; },\n removeBodyClass: function () { return undefined; },\n removeClass: function () { return undefined; },\n reverseButtons: function () { return undefined; },\n trapFocus: function () { return undefined; },\n registerContentEventHandler: function () { return undefined; },\n deregisterContentEventHandler: function () { return undefined; },\n isScrollableContentAtTop: function () { return false; },\n isScrollableContentAtBottom: function () { return false; },\n registerWindowEventHandler: function () { return undefined; },\n deregisterWindowEventHandler: function () { return undefined; },\n };\n },\n enumerable: false,\n configurable: true\n });\n MDCDialogFoundation.prototype.init = function () {\n if (this.adapter.hasClass(cssClasses.STACKED)) {\n this.setAutoStackButtons(false);\n }\n this.isFullscreen = this.adapter.hasClass(cssClasses.FULLSCREEN);\n };\n MDCDialogFoundation.prototype.destroy = function () {\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.handleAnimationTimerEnd();\n }\n if (this.isFullscreen) {\n this.adapter.deregisterContentEventHandler('scroll', this.contentScrollHandler);\n }\n this.animFrame.cancelAll();\n this.adapter.deregisterWindowEventHandler('resize', this.windowResizeHandler);\n this.adapter.deregisterWindowEventHandler('orientationchange', this.windowOrientationChangeHandler);\n };\n MDCDialogFoundation.prototype.open = function (dialogOptions) {\n var _this = this;\n this.dialogOpen = true;\n this.adapter.notifyOpening();\n this.adapter.addClass(cssClasses.OPENING);\n if (this.isFullscreen) {\n // A scroll event listener is registered even if the dialog is not\n // scrollable on open, since the window resize event, or orientation\n // change may make the dialog scrollable after it is opened.\n this.adapter.registerContentEventHandler('scroll', this.contentScrollHandler);\n }\n if (dialogOptions && dialogOptions.isAboveFullscreenDialog) {\n this.adapter.addClass(cssClasses.SCRIM_HIDDEN);\n }\n this.adapter.registerWindowEventHandler('resize', this.windowResizeHandler);\n this.adapter.registerWindowEventHandler('orientationchange', this.windowOrientationChangeHandler);\n // Wait a frame once display is no longer \"none\", to establish basis for\n // animation\n this.runNextAnimationFrame(function () {\n _this.adapter.addClass(cssClasses.OPEN);\n _this.adapter.addBodyClass(cssClasses.SCROLL_LOCK);\n _this.layout();\n _this.animationTimer = setTimeout(function () {\n _this.handleAnimationTimerEnd();\n _this.adapter.trapFocus(_this.adapter.getInitialFocusEl());\n _this.adapter.notifyOpened();\n }, numbers.DIALOG_ANIMATION_OPEN_TIME_MS);\n });\n };\n MDCDialogFoundation.prototype.close = function (action) {\n var _this = this;\n if (action === void 0) { action = ''; }\n if (!this.dialogOpen) {\n // Avoid redundant close calls (and events), e.g. from keydown on elements\n // that inherently emit click\n return;\n }\n this.dialogOpen = false;\n this.adapter.notifyClosing(action);\n this.adapter.addClass(cssClasses.CLOSING);\n this.adapter.removeClass(cssClasses.OPEN);\n this.adapter.removeBodyClass(cssClasses.SCROLL_LOCK);\n if (this.isFullscreen) {\n this.adapter.deregisterContentEventHandler('scroll', this.contentScrollHandler);\n }\n this.adapter.deregisterWindowEventHandler('resize', this.windowResizeHandler);\n this.adapter.deregisterWindowEventHandler('orientationchange', this.windowOrientationChangeHandler);\n cancelAnimationFrame(this.animationFrame);\n this.animationFrame = 0;\n clearTimeout(this.animationTimer);\n this.animationTimer = setTimeout(function () {\n _this.adapter.releaseFocus();\n _this.handleAnimationTimerEnd();\n _this.adapter.notifyClosed(action);\n }, numbers.DIALOG_ANIMATION_CLOSE_TIME_MS);\n };\n /**\n * Used only in instances of showing a secondary dialog over a full-screen\n * dialog. Shows the \"surface scrim\" displayed over the full-screen dialog.\n */\n MDCDialogFoundation.prototype.showSurfaceScrim = function () {\n var _this = this;\n this.adapter.addClass(cssClasses.SURFACE_SCRIM_SHOWING);\n this.runNextAnimationFrame(function () {\n _this.adapter.addClass(cssClasses.SURFACE_SCRIM_SHOWN);\n });\n };\n /**\n * Used only in instances of showing a secondary dialog over a full-screen\n * dialog. Hides the \"surface scrim\" displayed over the full-screen dialog.\n */\n MDCDialogFoundation.prototype.hideSurfaceScrim = function () {\n this.adapter.removeClass(cssClasses.SURFACE_SCRIM_SHOWN);\n this.adapter.addClass(cssClasses.SURFACE_SCRIM_HIDING);\n };\n /**\n * Handles `transitionend` event triggered when surface scrim animation is\n * finished.\n */\n MDCDialogFoundation.prototype.handleSurfaceScrimTransitionEnd = function () {\n this.adapter.removeClass(cssClasses.SURFACE_SCRIM_HIDING);\n this.adapter.removeClass(cssClasses.SURFACE_SCRIM_SHOWING);\n };\n MDCDialogFoundation.prototype.isOpen = function () {\n return this.dialogOpen;\n };\n MDCDialogFoundation.prototype.getEscapeKeyAction = function () {\n return this.escapeKeyAction;\n };\n MDCDialogFoundation.prototype.setEscapeKeyAction = function (action) {\n this.escapeKeyAction = action;\n };\n MDCDialogFoundation.prototype.getScrimClickAction = function () {\n return this.scrimClickAction;\n };\n MDCDialogFoundation.prototype.setScrimClickAction = function (action) {\n this.scrimClickAction = action;\n };\n MDCDialogFoundation.prototype.getAutoStackButtons = function () {\n return this.autoStackButtons;\n };\n MDCDialogFoundation.prototype.setAutoStackButtons = function (autoStack) {\n this.autoStackButtons = autoStack;\n };\n MDCDialogFoundation.prototype.getSuppressDefaultPressSelector = function () {\n return this.suppressDefaultPressSelector;\n };\n MDCDialogFoundation.prototype.setSuppressDefaultPressSelector = function (selector) {\n this.suppressDefaultPressSelector = selector;\n };\n MDCDialogFoundation.prototype.layout = function () {\n var _this = this;\n this.animFrame.request(AnimationKeys.POLL_LAYOUT_CHANGE, function () {\n _this.layoutInternal();\n });\n };\n /** Handles click on the dialog root element. */\n MDCDialogFoundation.prototype.handleClick = function (evt) {\n var isScrim = this.adapter.eventTargetMatches(evt.target, strings.SCRIM_SELECTOR);\n // Check for scrim click first since it doesn't require querying ancestors.\n if (isScrim && this.scrimClickAction !== '') {\n this.close(this.scrimClickAction);\n }\n else {\n var action = this.adapter.getActionFromEvent(evt);\n if (action) {\n this.close(action);\n }\n }\n };\n /** Handles keydown on the dialog root element. */\n MDCDialogFoundation.prototype.handleKeydown = function (evt) {\n var isEnter = evt.key === 'Enter' || evt.keyCode === 13;\n if (!isEnter) {\n return;\n }\n var action = this.adapter.getActionFromEvent(evt);\n if (action) {\n // Action button callback is handled in `handleClick`,\n // since space/enter keydowns on buttons trigger click events.\n return;\n }\n // `composedPath` is used here, when available, to account for use cases\n // where a target meant to suppress the default press behaviour\n // may exist in a shadow root.\n // For example, a textarea inside a web component:\n // <mwc-dialog>\n // <horizontal-layout>\n // #shadow-root (open)\n // <mwc-textarea>\n // #shadow-root (open)\n // <textarea></textarea>\n // </mwc-textarea>\n // </horizontal-layout>\n // </mwc-dialog>\n var target = evt.composedPath ? evt.composedPath()[0] : evt.target;\n var isDefault = this.suppressDefaultPressSelector ?\n !this.adapter.eventTargetMatches(target, this.suppressDefaultPressSelector) :\n true;\n if (isEnter && isDefault) {\n this.adapter.clickDefaultButton();\n }\n };\n /** Handles keydown on the document. */\n MDCDialogFoundation.prototype.handleDocumentKeydown = function (evt) {\n var isEscape = evt.key === 'Escape' || evt.keyCode === 27;\n if (isEscape && this.escapeKeyAction !== '') {\n this.close(this.escapeKeyAction);\n }\n };\n /**\n * Handles scroll event on the dialog's content element -- showing a scroll\n * divider on the header or footer based on the scroll position. This handler\n * should only be registered on full-screen dialogs with scrollable content.\n */\n MDCDialogFoundation.prototype.handleScrollEvent = function () {\n var _this = this;\n // Since scroll events can fire at a high rate, we throttle these events by\n // using requestAnimationFrame.\n this.animFrame.request(AnimationKeys.POLL_SCROLL_POS, function () {\n _this.toggleScrollDividerHeader();\n _this.toggleScrollDividerFooter();\n });\n };\n MDCDialogFoundation.prototype.layoutInternal = function () {\n if (this.autoStackButtons) {\n this.detectStackedButtons();\n }\n this.toggleScrollableClasses();\n };\n MDCDialogFoundation.prototype.handleAnimationTimerEnd = function () {\n this.animationTimer = 0;\n this.adapter.removeClass(cssClasses.OPENING);\n this.adapter.removeClass(cssClasses.CLOSING);\n };\n /**\n * Runs the given logic on the next animation frame, using setTimeout to\n * factor in Firefox reflow behavior.\n */\n MDCDialogFoundation.prototype.runNextAnimationFrame = function (callback) {\n var _this = this;\n cancelAnimationFrame(this.animationFrame);\n this.animationFrame = requestAnimationFrame(function () {\n _this.animationFrame = 0;\n clearTimeout(_this.animationTimer);\n _this.animationTimer = setTimeout(callback, 0);\n });\n };\n MDCDialogFoundation.prototype.detectStackedButtons = function () {\n // Remove the class first to let us measure the buttons' natural positions.\n this.adapter.removeClass(cssClasses.STACKED);\n var areButtonsStacked = this.adapter.areButtonsStacked();\n if (areButtonsStacked) {\n this.adapter.addClass(cssClasses.STACKED);\n }\n if (areButtonsStacked !== this.areButtonsStacked) {\n this.adapter.reverseButtons();\n this.areButtonsStacked = areButtonsStacked;\n }\n };\n MDCDialogFoundation.prototype.toggleScrollableClasses = function () {\n // Remove the class first to let us measure the natural height of the\n // content.\n this.adapter.removeClass(cssClasses.SCROLLABLE);\n if (this.adapter.isContentScrollable()) {\n this.adapter.addClass(cssClasses.SCROLLABLE);\n if (this.isFullscreen) {\n // If dialog is full-screen and scrollable, check if a scroll divider\n // should be shown.\n this.toggleScrollDividerHeader();\n this.toggleScrollDividerFooter();\n }\n }\n };\n MDCDialogFoundation.prototype.toggleScrollDividerHeader = function () {\n if (!this.adapter.isScrollableContentAtTop()) {\n this.adapter.addClass(cssClasses.SCROLL_DIVIDER_HEADER);\n }\n else if (this.adapter.hasClass(cssClasses.SCROLL_DIVIDER_HEADER)) {\n this.adapter.removeClass(cssClasses.SCROLL_DIVIDER_HEADER);\n }\n };\n MDCDialogFoundation.prototype.toggleScrollDividerFooter = function () {\n if (!this.adapter.isScrollableContentAtBottom()) {\n this.adapter.addClass(cssClasses.SCROLL_DIVIDER_FOOTER);\n }\n else if (this.adapter.hasClass(cssClasses.SCROLL_DIVIDER_FOOTER)) {\n this.adapter.removeClass(cssClasses.SCROLL_DIVIDER_FOOTER);\n }\n };\n return MDCDialogFoundation;\n}(MDCFoundation));\nexport { MDCDialogFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCDialogFoundation;\n//# sourceMappingURL=foundation.js.map","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __extends, __values } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { FocusTrap } from '@material/dom/focus-trap';\nimport { closest, matches } from '@material/dom/ponyfill';\nimport { MDCRipple } from '@material/ripple/component';\nimport { MDCDialogFoundation } from './foundation';\nimport * as util from './util';\nvar strings = MDCDialogFoundation.strings;\nvar MDCDialog = /** @class */ (function (_super) {\n __extends(MDCDialog, _super);\n function MDCDialog() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(MDCDialog.prototype, \"isOpen\", {\n get: function () {\n return this.foundation.isOpen();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCDialog.prototype, \"escapeKeyAction\", {\n get: function () {\n return this.foundation.getEscapeKeyAction();\n },\n set: function (action) {\n this.foundation.setEscapeKeyAction(action);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCDialog.prototype, \"scrimClickAction\", {\n get: function () {\n return this.foundation.getScrimClickAction();\n },\n set: function (action) {\n this.foundation.setScrimClickAction(action);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCDialog.prototype, \"autoStackButtons\", {\n get: function () {\n return this.foundation.getAutoStackButtons();\n },\n set: function (autoStack) {\n this.foundation.setAutoStackButtons(autoStack);\n },\n enumerable: false,\n configurable: true\n });\n MDCDialog.attachTo = function (root) {\n return new MDCDialog(root);\n };\n MDCDialog.prototype.initialize = function (focusTrapFactory) {\n var e_1, _a;\n if (focusTrapFactory === void 0) { focusTrapFactory = function (el, focusOptions) {\n return new FocusTrap(el, focusOptions);\n }; }\n var container = this.root.querySelector(strings.CONTAINER_SELECTOR);\n if (!container) {\n throw new Error(\"Dialog component requires a \" + strings.CONTAINER_SELECTOR + \" container element\");\n }\n this.container = container;\n this.content =\n this.root.querySelector(strings.CONTENT_SELECTOR);\n this.buttons = [].slice.call(this.root.querySelectorAll(strings.BUTTON_SELECTOR));\n this.defaultButton = this.root.querySelector(\"[\" + strings.BUTTON_DEFAULT_ATTRIBUTE + \"]\");\n this.focusTrapFactory = focusTrapFactory;\n this.buttonRipples = [];\n try {\n for (var _b = __values(this.buttons), _c = _b.next(); !_c.done; _c = _b.next()) {\n var buttonEl = _c.value;\n this.buttonRipples.push(new MDCRipple(buttonEl));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n MDCDialog.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.focusTrap = util.createFocusTrapInstance(this.container, this.focusTrapFactory, this.getInitialFocusEl() || undefined);\n this.handleClick = this.foundation.handleClick.bind(this.foundation);\n this.handleKeydown = this.foundation.handleKeydown.bind(this.foundation);\n this.handleDocumentKeydown =\n this.foundation.handleDocumentKeydown.bind(this.foundation);\n // this.handleLayout = this.layout.bind(this);\n this.handleOpening = function () {\n document.addEventListener('keydown', _this.handleDocumentKeydown);\n };\n this.handleClosing = function () {\n document.removeEventListener('keydown', _this.handleDocumentKeydown);\n };\n this.listen('click', this.handleClick);\n this.listen('keydown', this.handleKeydown);\n this.listen(strings.OPENING_EVENT, this.handleOpening);\n this.listen(strings.CLOSING_EVENT, this.handleClosing);\n };\n MDCDialog.prototype.destroy = function () {\n this.unlisten('click', this.handleClick);\n this.unlisten('keydown', this.handleKeydown);\n this.unlisten(strings.OPENING_EVENT, this.handleOpening);\n this.unlisten(strings.CLOSING_EVENT, this.handleClosing);\n this.handleClosing();\n this.buttonRipples.forEach(function (ripple) {\n ripple.destroy();\n });\n _super.prototype.destroy.call(this);\n };\n MDCDialog.prototype.layout = function () {\n this.foundation.layout();\n };\n MDCDialog.prototype.open = function () {\n this.foundation.open();\n };\n MDCDialog.prototype.close = function (action) {\n if (action === void 0) { action = ''; }\n this.foundation.close(action);\n };\n MDCDialog.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n addBodyClass: function (className) { return document.body.classList.add(className); },\n addClass: function (className) { return _this.root.classList.add(className); },\n areButtonsStacked: function () { return util.areTopsMisaligned(_this.buttons); },\n clickDefaultButton: function () {\n if (_this.defaultButton && !_this.defaultButton.disabled) {\n _this.defaultButton.click();\n }\n },\n eventTargetMatches: function (target, selector) {\n return target ? matches(target, selector) : false;\n },\n getActionFromEvent: function (evt) {\n if (!evt.target) {\n return '';\n }\n var element = closest(evt.target, \"[\" + strings.ACTION_ATTRIBUTE + \"]\");\n return element && element.getAttribute(strings.ACTION_ATTRIBUTE);\n },\n getInitialFocusEl: function () { return _this.getInitialFocusEl(); },\n hasClass: function (className) { return _this.root.classList.contains(className); },\n isContentScrollable: function () { return util.isScrollable(_this.content); },\n notifyClosed: function (action) { return _this.emit(strings.CLOSED_EVENT, action ? { action: action } : {}); },\n notifyClosing: function (action) { return _this.emit(strings.CLOSING_EVENT, action ? { action: action } : {}); },\n notifyOpened: function () { return _this.emit(strings.OPENED_EVENT, {}); },\n notifyOpening: function () { return _this.emit(strings.OPENING_EVENT, {}); },\n releaseFocus: function () {\n _this.focusTrap.releaseFocus();\n },\n removeBodyClass: function (className) { return document.body.classList.remove(className); },\n removeClass: function (className) { return _this.root.classList.remove(className); },\n reverseButtons: function () {\n _this.buttons.reverse();\n _this.buttons.forEach(function (button) {\n button.parentElement.appendChild(button);\n });\n },\n trapFocus: function () {\n _this.focusTrap.trapFocus();\n },\n registerContentEventHandler: function (evt, handler) {\n if (_this.content instanceof HTMLElement) {\n _this.content.addEventListener(evt, handler);\n }\n },\n deregisterContentEventHandler: function (evt, handler) {\n if (_this.content instanceof HTMLElement) {\n _this.content.removeEventListener(evt, handler);\n }\n },\n isScrollableContentAtTop: function () {\n return util.isScrollAtTop(_this.content);\n },\n isScrollableContentAtBottom: function () {\n return util.isScrollAtBottom(_this.content);\n },\n registerWindowEventHandler: function (evt, handler) {\n window.addEventListener(evt, handler);\n },\n deregisterWindowEventHandler: function (evt, handler) {\n window.removeEventListener(evt, handler);\n },\n };\n return new MDCDialogFoundation(adapter);\n };\n MDCDialog.prototype.getInitialFocusEl = function () {\n return this.root.querySelector(\"[\" + strings.INITIAL_FOCUS_ATTRIBUTE + \"]\");\n };\n return MDCDialog;\n}(MDCComponent));\nexport { MDCDialog };\n//# sourceMappingURL=component.js.map","@use '../../style/functions';\n@use '../../style/mixins';\n\n@use '../../style/internal/lime-theme';\n\n@use '@material/dialog';\n\n/**\n * @prop --dialog-width: Width of the dialog.\n * @prop --dialog-height: Height of the dialog.\n * @prop --dialog-z-index: z-index of the dialog container, including the scrim.\n * @prop --dialog-heading-title-color: Color of the title.\n * @prop --dialog-heading-subtitle-color: Color of the subtitle.\n * @prop --dialog-heading-supporting-text-color: Color of the supporting text.\n * @prop --dialog-heading-icon-color: Color of the icon.\n * @prop --dialog-heading-icon-background-color: Background color of the icon when displayed as a badge.\n * @prop --dialog-max-width: Max width of the dialog.\n * @prop --dialog-max-height: Max height of the dialog.\n * @prop --dialog-border-radius: Border radius of the dialog corners\n * @prop --dialog-padding-top-bottom: Padding on top and bottom of dialog content. Affects the height of fade-out effects on top and bottom edges when the content is scrollable and has overflowed out of the content area. Defaults to `1.5rem`. Note that if you use this variable and set it to numbers smaller than 1rem, you will loose the fade-out effects on the edges. If you have set these paddings to `0`, losing the fade out effects should be however fine for your use case! Because in such a case your intention is to handle the `overflow` internally in the component that is displayed in the dialog's content.\n * @prop --dialog-padding-left-right: Padding on the sides of dialog content. Defaults to `1.25rem`.\n */\n\n:host {\n --dialog-background-color: var(--lime-elevated-surface-background-color);\n --header-heading-color: var(--dialog-heading-title-color);\n --header-subheading-color: var(--dialog-heading-subtitle-color);\n --header-supporting-text-color: var(--dialog-heading-supporting-text-color);\n --header-icon-color: var(--dialog-heading-icon-color);\n --header-icon-background-color: var(--dialog-heading-icon-background-color);\n}\n\n$responsive-body-padding: 3vw; // 3% of viewport's width\n\n@include dialog.core-styles;\n\n.mdc-dialog__content {\n // As long as this component is depended on MDC,\n // we need to force it to be font-agnostic.\n // When MDC-dependency is removed, this block can also be removed.\n // However, on removal of MDC-dependency, we should also make sure to check\n // other font-related styles that might be set by MDC,\n // such as `letter-spacing` or `font-size`.\n font-family: inherit;\n}\n\n.mdc-dialog {\n @include dialog.max-width(16000px, dialog.$margin);\n\n z-index: var(--dialog-z-index, dialog.$z-index);\n padding: env(safe-area-inset-top) env(safe-area-inset-right)\n env(safe-area-inset-bottom) env(safe-area-inset-left);\n\n &.full-screen {\n @include dialog.max-height(16000px, dialog.$margin);\n .mdc-dialog__container {\n height: 100%;\n width: 100%;\n\n .mdc-dialog__surface {\n height: 100%;\n width: 100%;\n }\n }\n }\n\n .mdc-dialog__scrim {\n background-color: rgba(var(--color-black), 0.4);\n }\n\n .mdc-dialog__container {\n height: 100%;\n width: var(--dialog-width, auto);\n }\n\n .mdc-dialog__surface {\n width: var(--dialog-width, auto);\n height: var(--dialog-height, auto);\n background-color: var(--dialog-background-color);\n box-shadow: var(--shadow-depth-64);\n\n max-width: var(--dialog-max-width, calc(100vw - 2rem));\n max-height: var(--dialog-max-height, calc(100% - 2rem));\n border-radius: var(--dialog-border-radius, 0.25rem);\n }\n\n .mdc-dialog__content {\n --limel-top-edge-fade-height: var(--dialog-padding-top-bottom, 1.5rem);\n --limel-bottom-edge-fade-height: var(\n --dialog-padding-top-bottom,\n 1.5rem\n );\n @include mixins.fade-out-overflowed-content-on-edges(vertically);\n\n color: var(--mdc-theme-on-surface);\n padding-left: var(\n --dialog-padding-left-right,\n min(1.25rem, $responsive-body-padding)\n );\n padding-right: var(\n --dialog-padding-left-right,\n min(1.25rem, $responsive-body-padding)\n );\n }\n}\n\n#initialFocusElement {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n z-index: -1;\n}\n\nslot[name='header'] {\n display: none;\n}\n\nslot[name='button'] {\n display: flex;\n gap: 0.5rem; // Makes sure buttons get some default distance\n width: 100%;\n justify-content: flex-end;\n}\n\n@media screen and (max-width: 760px) {\n slot[name='button'] {\n flex-direction: column-reverse;\n }\n .mdc-dialog__actions {\n padding: min(1.5rem, $responsive-body-padding);\n padding-top: 1rem;\n }\n}\n","import { DialogHeading, ClosingActions } from './dialog.types';\nimport { MDCDialog } from '@material/dialog';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { isEqual } from 'lodash-es';\nimport { dispatchResizeEvent } from '../../util/dispatch-resize-event';\nimport { createRandomString } from '../../util/random-string';\n\n/**\n * :::note\n * Regarding the `close` event: When putting other elements that emit `close`\n * events inside a dialog, those events must be caught and stopped inside the\n * dialog. If not, they will bubble to the event handler listening for `close`\n * events on the dialog, which will close the dialog too.\n *\n * See the example _Nested `close` events_.\n * :::\n *\n * :::important\n * Are you developing for\n * [Lime CRM](https://www.lime-technologies.com/en/lime-crm/)? Please note that\n * you should use the [DialogRenderer](https://lundalogik.github.io/lime-web-components/versions/latest/interfaces/DialogRenderer.html)\n * from Lime Web Components to open dialogs in Lime CRM.\n * :::\n *\n * @exampleComponent limel-example-dialog\n * @exampleComponent limel-example-dialog-nested-close-events\n * @exampleComponent limel-example-dialog-heading\n * @exampleComponent limel-example-dialog-heading-actions\n * @exampleComponent limel-example-dialog-form\n * @exampleComponent limel-example-dialog-size\n * @exampleComponent limel-example-dialog-fullscreen\n * @exampleComponent limel-example-dialog-closing-actions\n * @exampleComponent limel-example-dialog-action-buttons\n * @slot - Content to put inside the dialog\n * @slot header-actions - The dialog header buttons\n * @slot button - The dialog buttons\n */\n@Component({\n tag: 'limel-dialog',\n shadow: true,\n styleUrl: 'dialog.scss',\n})\nexport class Dialog {\n /**\n * The heading for the dialog, if any.\n */\n @Prop()\n public heading: string | DialogHeading;\n\n /**\n * Set to `true` to make the dialog \"fullscreen\".\n */\n @Prop({ reflect: true })\n public fullscreen = false;\n\n /**\n * `true` if the dialog is open, `false` otherwise.\n */\n @Prop({ mutable: true, reflect: true })\n public open = false;\n\n /**\n * Defines which action triggers a close-event.\n */\n @Prop({ reflect: true })\n public closingActions: ClosingActions = {\n escapeKey: true,\n scrimClick: true,\n };\n /**\n * Emitted when the dialog is closed from inside the component.\n * (*Not* emitted when the consumer sets the `open`-property to `false`.)\n */\n @Event()\n private close: EventEmitter<void>;\n\n /**\n * Emitted when the dialog is in the process of being closed.\n */\n @Event()\n private closing: EventEmitter<void>;\n\n @Element()\n private host: HTMLLimelDialogElement;\n\n private mdcDialog: MDCDialog;\n\n private id: string;\n\n private showFooter = true;\n\n constructor() {\n this.handleMdcOpened = this.handleMdcOpened.bind(this);\n this.handleMdcClosed = this.handleMdcClosed.bind(this);\n this.handleMdcClosing = this.handleMdcClosing.bind(this);\n }\n\n public connectedCallback() {\n this.initialize();\n }\n\n public componentWillLoad() {\n this.id = createRandomString();\n this.showFooter = !!this.host.querySelector('[slot=\"button\"]');\n }\n\n public componentDidLoad() {\n this.initialize();\n }\n\n private initialize() {\n const element = this.host.shadowRoot.querySelector('.mdc-dialog');\n if (!element) {\n return;\n }\n\n this.mdcDialog = new MDCDialog(element);\n if (this.open) {\n this.mdcDialog.open();\n }\n\n this.mdcDialog.listen('MDCDialog:opened', this.handleMdcOpened);\n this.mdcDialog.listen('MDCDialog:closed', this.handleMdcClosed);\n this.mdcDialog.listen('MDCDialog:closing', this.handleMdcClosing);\n\n this.setClosingActions();\n }\n\n public disconnectedCallback() {\n this.mdcDialog.unlisten('MDCDialog:opened', this.handleMdcOpened);\n this.mdcDialog.unlisten('MDCDialog:closed', this.handleMdcClosed);\n this.mdcDialog.unlisten('MDCDialog:closing', this.handleMdcClosing);\n this.mdcDialog.destroy();\n }\n\n public render() {\n return (\n <div\n class={{\n 'mdc-dialog': true,\n 'full-screen': !!this.fullscreen,\n }}\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-labelledby={'limel-dialog-title-' + this.id}\n aria-describedby={'limel-dialog-content-' + this.id}\n >\n <input hidden={true} id=\"initialFocusEl\" />\n <div class=\"mdc-dialog__container\">\n <div class=\"mdc-dialog__surface\">\n {/*\n The `initialFocusElement` below is needed to make\n focus trapping work. At the time of writing, the\n focusable elements inside the slots are not\n detected, so we supply our own hidden element for\n the focus trap to use. Read more here:\n https://github.com/material-components/material-components-web/tree/v11.0.0/packages/mdc-dialog#handling-focus-trapping\n */}\n <input type=\"button\" id=\"initialFocusElement\" />\n {this.renderHeading()}\n <div\n class=\"mdc-dialog__content\"\n id={'limel-dialog-content-' + this.id}\n >\n <slot />\n </div>\n {this.renderFooter()}\n </div>\n </div>\n <div class=\"mdc-dialog__scrim\" />\n </div>\n );\n }\n\n @Watch('open')\n protected watchHandler(newValue: boolean, oldValue: boolean) {\n if (oldValue === newValue) {\n return;\n }\n\n if (!this.mdcDialog) {\n return;\n }\n\n if (newValue) {\n this.mdcDialog.open();\n } else {\n this.mdcDialog.close();\n }\n }\n\n @Watch('closingActions')\n protected closingActionsChanged(\n newValue: ClosingActions,\n oldValue: ClosingActions,\n ) {\n if (isEqual(newValue, oldValue)) {\n return;\n }\n\n this.setClosingActions();\n }\n\n private handleMdcOpened() {\n // When the opening-animation has completed, dispatch a\n // resize-event so that any content that depends on\n // javascript for layout has a chance to update to the\n // final layout of the dialog. /Ads\n const waitForUiToRender = 100;\n setTimeout(dispatchResizeEvent, waitForUiToRender);\n }\n\n private handleMdcClosed() {\n if (this.open) {\n this.close.emit();\n }\n\n this.open = false;\n }\n\n private handleMdcClosing() {\n this.closing.emit();\n }\n\n private isBadgeHeading(\n heading: string | DialogHeading,\n ): heading is DialogHeading {\n return typeof heading === 'object' && !!heading.title && !!heading.icon;\n }\n\n private renderHeading() {\n if (this.isBadgeHeading(this.heading)) {\n const { title, subtitle, supportingText, icon } = this.heading;\n\n return (\n <limel-header\n icon={icon}\n heading={title}\n subheading={subtitle}\n supportingText={supportingText}\n >\n <slot name=\"header-actions\" slot=\"actions\" />\n </limel-header>\n );\n } else if (typeof this.heading === 'string') {\n return <limel-header heading={this.heading}></limel-header>;\n }\n\n return null;\n }\n\n private renderFooter() {\n if (this.showFooter) {\n return (\n <footer class=\"mdc-dialog__actions\">\n <slot name=\"button\" />\n </footer>\n );\n }\n }\n\n private setClosingActions() {\n this.mdcDialog.scrimClickAction = '';\n if (this.closingActions.scrimClick) {\n this.mdcDialog.scrimClickAction = 'close';\n }\n\n this.mdcDialog.escapeKeyAction = '';\n if (this.closingActions.escapeKey) {\n this.mdcDialog.escapeKeyAction = 'close';\n }\n }\n}\n"],"mappings":"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"}
@@ -237,7 +237,7 @@ $cropped-label-hack--font-size: 0.875rem; //14px
237
237
  box-shadow: 0 0 0 functions.pxToRem(2) var(--mdc-theme-primary) !important; // has to be `!important` since we're using `box-shadow` insted of `outline` which is also used in `hover` mode
238
238
  }
239
239
  }
240
- &:hover {
240
+ &:not(.mdc-text-field--disabled):hover {
241
241
  .mdc-text-field__icon--trailing {
242
242
  box-shadow: var(--button-shadow-normal);
243
243
  background-color: rgba(var(--contrast-100), 0.4);
@@ -253,27 +253,8 @@ $cropped-label-hack--font-size: 0.875rem; //14px
253
253
  }
254
254
  }
255
255
 
256
- &.mdc-text-field--disabled,
257
256
  &.mdc-text-field--invalid {
258
- // `mdc-text-field--invalid` displays a (!) icon, which we don't want it to appear interactive
259
- &:hover {
260
- .mdc-text-field__icon--trailing {
261
- box-shadow: none;
262
- background-color: transparent;
263
-
264
- &:hover {
265
- background-color: transparent;
266
- box-shadow: none;
267
- }
268
-
269
- &:active {
270
- box-shadow: none;
271
- }
272
- }
273
- }
274
- }
275
- &.mdc-text-field--invalid {
276
- i.mdc-text-field__icon.mdc-text-field__icon--trailing {
257
+ i.mdc-text-field__icon.invalid-icon {
277
258
  limel-icon {
278
259
  color: var(--lime-error-text-color);
279
260
  }
@@ -310,9 +291,6 @@ $cropped-label-hack--font-size: 0.875rem; //14px
310
291
  color: var(--lime-error-text-color);
311
292
  }
312
293
  }
313
- .mdc-text-field__icon--trailing {
314
- color: var(--lime-error-text-color);
315
- }
316
294
  }
317
295
 
318
296
  &.mdc-text-field--with-trailing-icon {
@@ -12,7 +12,7 @@ import { DialogHeading, ClosingActions } from './dialog.types';
12
12
  * :::important
13
13
  * Are you developing for
14
14
  * [Lime CRM](https://www.lime-technologies.com/en/lime-crm/)? Please note that
15
- * you should use the [DialogService](https://lundalogik.github.io/lime-web-components/versions/latest/#/api/dialog-service)
15
+ * you should use the [DialogRenderer](https://lundalogik.github.io/lime-web-components/versions/latest/interfaces/DialogRenderer.html)
16
16
  * from Lime Web Components to open dialogs in Lime CRM.
17
17
  * :::
18
18
  *
@@ -11,10 +11,11 @@ import { FormComponent } from '../form/form.types';
11
11
  *
12
12
  * @exampleComponent limel-example-text-editor-basic
13
13
  * @exampleComponent limel-example-text-editor-as-form-component
14
- * @exampleComponent limel-example-text-editor-composite
15
14
  * @exampleComponent limel-example-text-editor-with-markdown
16
15
  * @exampleComponent limel-example-text-editor-with-html
17
- * @exampleComponent limel-example-text-editor-height
16
+ * @exampleComponent limel-example-text-editor-allow-resize
17
+ * @exampleComponent limel-example-text-editor-size
18
+ * @exampleComponent limel-example-text-editor-composite
18
19
  * @beta
19
20
  * @private
20
21
  */
@@ -73,6 +74,11 @@ export declare class TextEditor implements FormComponent<string> {
73
74
  * :::
74
75
  */
75
76
  required?: boolean;
77
+ /**
78
+ * Set to `true` to allow the user to vertically resize the editor.
79
+ * Set to `false` to disable the resize functionality.
80
+ */
81
+ allowResize: boolean;
76
82
  /**
77
83
  * Dispatched when a change is made to the editor
78
84
  */
@@ -858,7 +858,7 @@ export namespace Components {
858
858
  * :::important
859
859
  * Are you developing for
860
860
  * [Lime CRM](https://www.lime-technologies.com/en/lime-crm/)? Please note that
861
- * you should use the [DialogService](https://lundalogik.github.io/lime-web-components/versions/latest/#/api/dialog-service)
861
+ * you should use the [DialogRenderer](https://lundalogik.github.io/lime-web-components/versions/latest/interfaces/DialogRenderer.html)
862
862
  * from Lime Web Components to open dialogs in Lime CRM.
863
863
  * :::
864
864
  * @exampleComponent limel-example-dialog
@@ -2485,14 +2485,19 @@ export namespace Components {
2485
2485
  * to toggle bold text, <kbd>Ctrl</kbd> + <kbd>I</kbd> to toggle italic text, and so on.
2486
2486
  * @exampleComponent limel-example-text-editor-basic
2487
2487
  * @exampleComponent limel-example-text-editor-as-form-component
2488
- * @exampleComponent limel-example-text-editor-composite
2489
2488
  * @exampleComponent limel-example-text-editor-with-markdown
2490
2489
  * @exampleComponent limel-example-text-editor-with-html
2491
- * @exampleComponent limel-example-text-editor-height
2490
+ * @exampleComponent limel-example-text-editor-allow-resize
2491
+ * @exampleComponent limel-example-text-editor-size
2492
+ * @exampleComponent limel-example-text-editor-composite
2492
2493
  * @beta
2493
2494
  * @private
2494
2495
  */
2495
2496
  interface LimelTextEditor {
2497
+ /**
2498
+ * Set to `true` to allow the user to vertically resize the editor. Set to `false` to disable the resize functionality.
2499
+ */
2500
+ "allowResize": boolean;
2496
2501
  /**
2497
2502
  * The type of content that the editor should handle and emit, defaults to `markdown` Assumed to be set only once, so not reactive to changes
2498
2503
  */
@@ -3191,7 +3196,7 @@ declare global {
3191
3196
  * :::important
3192
3197
  * Are you developing for
3193
3198
  * [Lime CRM](https://www.lime-technologies.com/en/lime-crm/)? Please note that
3194
- * you should use the [DialogService](https://lundalogik.github.io/lime-web-components/versions/latest/#/api/dialog-service)
3199
+ * you should use the [DialogRenderer](https://lundalogik.github.io/lime-web-components/versions/latest/interfaces/DialogRenderer.html)
3195
3200
  * from Lime Web Components to open dialogs in Lime CRM.
3196
3201
  * :::
3197
3202
  * @exampleComponent limel-example-dialog
@@ -4040,10 +4045,11 @@ declare global {
4040
4045
  * to toggle bold text, <kbd>Ctrl</kbd> + <kbd>I</kbd> to toggle italic text, and so on.
4041
4046
  * @exampleComponent limel-example-text-editor-basic
4042
4047
  * @exampleComponent limel-example-text-editor-as-form-component
4043
- * @exampleComponent limel-example-text-editor-composite
4044
4048
  * @exampleComponent limel-example-text-editor-with-markdown
4045
4049
  * @exampleComponent limel-example-text-editor-with-html
4046
- * @exampleComponent limel-example-text-editor-height
4050
+ * @exampleComponent limel-example-text-editor-allow-resize
4051
+ * @exampleComponent limel-example-text-editor-size
4052
+ * @exampleComponent limel-example-text-editor-composite
4047
4053
  * @beta
4048
4054
  * @private
4049
4055
  */
@@ -5014,7 +5020,7 @@ declare namespace LocalJSX {
5014
5020
  * :::important
5015
5021
  * Are you developing for
5016
5022
  * [Lime CRM](https://www.lime-technologies.com/en/lime-crm/)? Please note that
5017
- * you should use the [DialogService](https://lundalogik.github.io/lime-web-components/versions/latest/#/api/dialog-service)
5023
+ * you should use the [DialogRenderer](https://lundalogik.github.io/lime-web-components/versions/latest/interfaces/DialogRenderer.html)
5018
5024
  * from Lime Web Components to open dialogs in Lime CRM.
5019
5025
  * :::
5020
5026
  * @exampleComponent limel-example-dialog
@@ -6826,14 +6832,19 @@ declare namespace LocalJSX {
6826
6832
  * to toggle bold text, <kbd>Ctrl</kbd> + <kbd>I</kbd> to toggle italic text, and so on.
6827
6833
  * @exampleComponent limel-example-text-editor-basic
6828
6834
  * @exampleComponent limel-example-text-editor-as-form-component
6829
- * @exampleComponent limel-example-text-editor-composite
6830
6835
  * @exampleComponent limel-example-text-editor-with-markdown
6831
6836
  * @exampleComponent limel-example-text-editor-with-html
6832
- * @exampleComponent limel-example-text-editor-height
6837
+ * @exampleComponent limel-example-text-editor-allow-resize
6838
+ * @exampleComponent limel-example-text-editor-size
6839
+ * @exampleComponent limel-example-text-editor-composite
6833
6840
  * @beta
6834
6841
  * @private
6835
6842
  */
6836
6843
  interface LimelTextEditor {
6844
+ /**
6845
+ * Set to `true` to allow the user to vertically resize the editor. Set to `false` to disable the resize functionality.
6846
+ */
6847
+ "allowResize"?: boolean;
6837
6848
  /**
6838
6849
  * The type of content that the editor should handle and emit, defaults to `markdown` Assumed to be set only once, so not reactive to changes
6839
6850
  */
@@ -7347,7 +7358,7 @@ declare module "@stencil/core" {
7347
7358
  * :::important
7348
7359
  * Are you developing for
7349
7360
  * [Lime CRM](https://www.lime-technologies.com/en/lime-crm/)? Please note that
7350
- * you should use the [DialogService](https://lundalogik.github.io/lime-web-components/versions/latest/#/api/dialog-service)
7361
+ * you should use the [DialogRenderer](https://lundalogik.github.io/lime-web-components/versions/latest/interfaces/DialogRenderer.html)
7351
7362
  * from Lime Web Components to open dialogs in Lime CRM.
7352
7363
  * :::
7353
7364
  * @exampleComponent limel-example-dialog
@@ -7981,10 +7992,11 @@ declare module "@stencil/core" {
7981
7992
  * to toggle bold text, <kbd>Ctrl</kbd> + <kbd>I</kbd> to toggle italic text, and so on.
7982
7993
  * @exampleComponent limel-example-text-editor-basic
7983
7994
  * @exampleComponent limel-example-text-editor-as-form-component
7984
- * @exampleComponent limel-example-text-editor-composite
7985
7995
  * @exampleComponent limel-example-text-editor-with-markdown
7986
7996
  * @exampleComponent limel-example-text-editor-with-html
7987
- * @exampleComponent limel-example-text-editor-height
7997
+ * @exampleComponent limel-example-text-editor-allow-resize
7998
+ * @exampleComponent limel-example-text-editor-size
7999
+ * @exampleComponent limel-example-text-editor-composite
7988
8000
  * @beta
7989
8001
  * @private
7990
8002
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@limetech/lime-elements",
3
- "version": "37.32.7",
3
+ "version": "37.33.1",
4
4
  "description": "Lime Elements",
5
5
  "author": "Lime Technologies",
6
6
  "license": "Apache-2.0",