@zanichelli/albe-web-components 13.2.0-rc1 → 13.3.0

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 (130) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/web-components-library.cjs.js +1 -1
  4. package/dist/cjs/z-app-header_12.cjs.entry.js +16 -12
  5. package/dist/cjs/z-app-header_12.cjs.entry.js.map +1 -1
  6. package/dist/cjs/z-carousel.cjs.entry.js +3 -2
  7. package/dist/cjs/z-carousel.cjs.entry.js.map +1 -1
  8. package/dist/cjs/z-combobox.cjs.entry.js +38 -145
  9. package/dist/cjs/z-combobox.cjs.entry.js.map +1 -1
  10. package/dist/cjs/z-file-upload.cjs.entry.js +25 -14
  11. package/dist/cjs/z-file-upload.cjs.entry.js.map +1 -1
  12. package/dist/cjs/z-popover.cjs.entry.js +3 -3
  13. package/dist/cjs/z-popover.cjs.entry.js.map +1 -1
  14. package/dist/cjs/z-table.cjs.entry.js +3 -2
  15. package/dist/cjs/z-table.cjs.entry.js.map +1 -1
  16. package/dist/collection/components/file-upload/z-file-upload/index.js +63 -13
  17. package/dist/collection/components/file-upload/z-file-upload/index.js.map +1 -1
  18. package/dist/collection/components/file-upload/z-file-upload/styles.css +12 -0
  19. package/dist/collection/components/icons/icons.js +10 -0
  20. package/dist/collection/components/icons/icons.js.map +1 -1
  21. package/dist/collection/components/inputs/z-combobox/index.js +41 -149
  22. package/dist/collection/components/inputs/z-combobox/index.js.map +1 -1
  23. package/dist/collection/components/inputs/z-combobox/index.spec.js +155 -185
  24. package/dist/collection/components/inputs/z-combobox/index.spec.js.map +1 -1
  25. package/dist/collection/components/inputs/z-combobox/styles.css +10 -10
  26. package/dist/collection/components/inputs/z-input/index.js +5 -41
  27. package/dist/collection/components/inputs/z-input/index.js.map +1 -1
  28. package/dist/collection/components/list/z-list-element/index.js +1 -20
  29. package/dist/collection/components/list/z-list-element/index.js.map +1 -1
  30. package/dist/collection/components/table/z-table/index.js +3 -2
  31. package/dist/collection/components/table/z-table/index.js.map +1 -1
  32. package/dist/collection/components/z-carousel/index.js +3 -1
  33. package/dist/collection/components/z-carousel/index.js.map +1 -1
  34. package/dist/collection/components/z-carousel/styles.css +3 -0
  35. package/dist/collection/components/z-popover/index.js +4 -4
  36. package/dist/collection/components/z-popover/index.js.map +1 -1
  37. package/dist/components/icons.js +10 -0
  38. package/dist/components/icons.js.map +1 -1
  39. package/dist/components/index10.js +5 -11
  40. package/dist/components/index10.js.map +1 -1
  41. package/dist/components/index13.js +1 -3
  42. package/dist/components/index13.js.map +1 -1
  43. package/dist/components/index25.js +3 -3
  44. package/dist/components/index25.js.map +1 -1
  45. package/dist/components/z-carousel.js +3 -2
  46. package/dist/components/z-carousel.js.map +1 -1
  47. package/dist/components/z-combobox.js +49 -163
  48. package/dist/components/z-combobox.js.map +1 -1
  49. package/dist/components/z-file-upload.js +28 -15
  50. package/dist/components/z-file-upload.js.map +1 -1
  51. package/dist/components/z-table.js +3 -2
  52. package/dist/components/z-table.js.map +1 -1
  53. package/dist/esm/loader.js +1 -1
  54. package/dist/esm/web-components-library.js +1 -1
  55. package/dist/esm/z-app-header_12.entry.js +16 -12
  56. package/dist/esm/z-app-header_12.entry.js.map +1 -1
  57. package/dist/esm/z-carousel.entry.js +3 -2
  58. package/dist/esm/z-carousel.entry.js.map +1 -1
  59. package/dist/esm/z-combobox.entry.js +40 -147
  60. package/dist/esm/z-combobox.entry.js.map +1 -1
  61. package/dist/esm/z-file-upload.entry.js +25 -14
  62. package/dist/esm/z-file-upload.entry.js.map +1 -1
  63. package/dist/esm/z-popover.entry.js +3 -3
  64. package/dist/esm/z-popover.entry.js.map +1 -1
  65. package/dist/esm/z-table.entry.js +3 -2
  66. package/dist/esm/z-table.entry.js.map +1 -1
  67. package/dist/types/components/file-upload/z-file-upload/index.d.ts +5 -0
  68. package/dist/types/components/icons/icons.d.ts +20 -0
  69. package/dist/types/components/inputs/z-combobox/index.d.ts +1 -14
  70. package/dist/types/components/inputs/z-input/index.d.ts +0 -5
  71. package/dist/types/components/list/z-list-element/index.d.ts +0 -2
  72. package/dist/types/components/z-carousel/index.d.ts +1 -0
  73. package/dist/types/components/z-popover/index.d.ts +1 -0
  74. package/dist/types/components.d.ts +18 -23
  75. package/dist/web-components-library/{p-158b6dda.entry.js → p-3796ca7c.entry.js} +2 -2
  76. package/dist/web-components-library/p-3796ca7c.entry.js.map +1 -0
  77. package/dist/web-components-library/p-9b52dea5.entry.js +2 -0
  78. package/dist/web-components-library/p-9b52dea5.entry.js.map +1 -0
  79. package/dist/web-components-library/p-aa0f32d7.entry.js +2 -0
  80. package/dist/web-components-library/p-aa0f32d7.entry.js.map +1 -0
  81. package/dist/web-components-library/p-ba8e67ee.entry.js +2 -0
  82. package/dist/web-components-library/p-ba8e67ee.entry.js.map +1 -0
  83. package/dist/web-components-library/p-ed1a5ee3.entry.js +2 -0
  84. package/dist/web-components-library/p-ed1a5ee3.entry.js.map +1 -0
  85. package/{www/build/p-2637ab23.entry.js → dist/web-components-library/p-f7607ce7.entry.js} +2 -2
  86. package/dist/web-components-library/p-f7607ce7.entry.js.map +1 -0
  87. package/dist/web-components-library/web-components-library.css +1 -1
  88. package/dist/web-components-library/web-components-library.esm.js +1 -1
  89. package/dist/web-components-library/web-components-library.esm.js.map +1 -1
  90. package/package.json +2 -2
  91. package/www/build/p-22cc270c.css +3 -0
  92. package/www/build/{p-158b6dda.entry.js → p-3796ca7c.entry.js} +2 -2
  93. package/www/build/p-3796ca7c.entry.js.map +1 -0
  94. package/www/build/p-9b52dea5.entry.js +2 -0
  95. package/www/build/p-9b52dea5.entry.js.map +1 -0
  96. package/www/build/p-aa0f32d7.entry.js +2 -0
  97. package/www/build/p-aa0f32d7.entry.js.map +1 -0
  98. package/www/build/p-ba8e67ee.entry.js +2 -0
  99. package/www/build/p-ba8e67ee.entry.js.map +1 -0
  100. package/www/build/p-ddd9a0ea.js +2 -0
  101. package/www/build/p-ed1a5ee3.entry.js +2 -0
  102. package/www/build/p-ed1a5ee3.entry.js.map +1 -0
  103. package/{dist/web-components-library/p-2637ab23.entry.js → www/build/p-f7607ce7.entry.js} +2 -2
  104. package/www/build/p-f7607ce7.entry.js.map +1 -0
  105. package/www/build/web-components-library.css +1 -1
  106. package/www/build/web-components-library.esm.js +1 -1
  107. package/www/build/web-components-library.esm.js.map +1 -1
  108. package/www/index.html +1 -1
  109. package/dist/web-components-library/p-158b6dda.entry.js.map +0 -1
  110. package/dist/web-components-library/p-2637ab23.entry.js.map +0 -1
  111. package/dist/web-components-library/p-2b2cb566.entry.js +0 -2
  112. package/dist/web-components-library/p-2b2cb566.entry.js.map +0 -1
  113. package/dist/web-components-library/p-2df884ef.entry.js +0 -2
  114. package/dist/web-components-library/p-2df884ef.entry.js.map +0 -1
  115. package/dist/web-components-library/p-5023f7d5.entry.js +0 -2
  116. package/dist/web-components-library/p-5023f7d5.entry.js.map +0 -1
  117. package/dist/web-components-library/p-93cb103f.entry.js +0 -2
  118. package/dist/web-components-library/p-93cb103f.entry.js.map +0 -1
  119. package/www/build/p-158b6dda.entry.js.map +0 -1
  120. package/www/build/p-2637ab23.entry.js.map +0 -1
  121. package/www/build/p-2b2cb566.entry.js +0 -2
  122. package/www/build/p-2b2cb566.entry.js.map +0 -1
  123. package/www/build/p-2df884ef.entry.js +0 -2
  124. package/www/build/p-2df884ef.entry.js.map +0 -1
  125. package/www/build/p-32cd9d9b.js +0 -2
  126. package/www/build/p-36aea196.css +0 -3
  127. package/www/build/p-5023f7d5.entry.js +0 -2
  128. package/www/build/p-5023f7d5.entry.js.map +0 -1
  129. package/www/build/p-93cb103f.entry.js +0 -2
  130. package/www/build/p-93cb103f.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["patchBrowser","patchCloneNodeFix","H","prototype","importMeta","url","opts","resourcesUrl","URL","href","promiseResolve","HTMLElementPrototype","nativeCloneNodeFn","cloneNode","deep","this","nodeName","call","clonedNode","srcChildNodes","childNodes","i","length","nodeType","appendChild","then","options","bootstrapLazy","JSON","parse"],"sources":["node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v4.12.1 | MIT Licensed | https://stenciljs.com\n */\nimport { BUILD, NAMESPACE } from '@stencil/core/internal/app-data';\nimport { consoleDevInfo, doc, promiseResolve, H } from '@stencil/core';\nconst patchBrowser = () => {\n // NOTE!! This fn cannot use async/await!\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo('Running in development mode.');\n }\n if (BUILD.cloneNodeFix) {\n // opted-in to polyfill cloneNode() for slot polyfilled components\n patchCloneNodeFix(H.prototype);\n }\n const scriptElm = BUILD.scriptDataOpts\n ? Array.from(doc.querySelectorAll('script')).find((s) => new RegExp(`\\/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) ||\n s.getAttribute('data-stencil-namespace') === NAMESPACE)\n : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})['data-opts'] || {} : {};\n if (importMeta !== '') {\n opts.resourcesUrl = new URL('.', importMeta).href;\n }\n return promiseResolve(opts);\n};\nconst patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function (deep) {\n if (this.nodeName === 'TEMPLATE') {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n // Node.ATTRIBUTE_NODE === 2, and checking because IE11\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport { patchBrowser };\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(options => {\n globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"mappings":"6FAKA,MAAMA,EAAe,KAKO,CAEpBC,EAAkBC,EAAEC,UAC5B,CAKI,MAAMC,cAAyBC,IAC/B,MAAMC,EAAqE,GAC3E,GAAIF,IAAe,GAAI,CACnBE,EAAKC,aAAe,IAAIC,IAAI,IAAKJ,GAAYK,IACrD,CACI,OAAOC,EAAeJ,EAAK,EAE/B,MAAML,EAAqBU,IACvB,MAAMC,EAAoBD,EAAqBE,UAC/CF,EAAqBE,UAAY,SAAUC,GACvC,GAAIC,KAAKC,WAAa,WAAY,CAC9B,OAAOJ,EAAkBK,KAAKF,KAAMD,EAChD,CACQ,MAAMI,EAAaN,EAAkBK,KAAKF,KAAM,OAChD,MAAMI,EAAgBJ,KAAKK,WAC3B,GAAIN,EAAM,CACN,IAAK,IAAIO,EAAI,EAAGA,EAAIF,EAAcG,OAAQD,IAAK,CAE3C,GAAIF,EAAcE,GAAGE,WAAa,EAAG,CACjCL,EAAWM,YAAYL,EAAcE,GAAGR,UAAU,MACtE,CACA,CACA,CACQ,OAAOK,CACf,CAAK,ECtCLlB,IAAeyB,MAAKC,GAEXC,EAAcC,KAAAC,MAAA,oseAAuCH"}
1
+ {"version":3,"names":["patchBrowser","patchCloneNodeFix","H","prototype","importMeta","url","opts","resourcesUrl","URL","href","promiseResolve","HTMLElementPrototype","nativeCloneNodeFn","cloneNode","deep","this","nodeName","call","clonedNode","srcChildNodes","childNodes","i","length","nodeType","appendChild","then","options","bootstrapLazy","JSON","parse"],"sources":["node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v4.12.1 | MIT Licensed | https://stenciljs.com\n */\nimport { BUILD, NAMESPACE } from '@stencil/core/internal/app-data';\nimport { consoleDevInfo, doc, promiseResolve, H } from '@stencil/core';\nconst patchBrowser = () => {\n // NOTE!! This fn cannot use async/await!\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo('Running in development mode.');\n }\n if (BUILD.cloneNodeFix) {\n // opted-in to polyfill cloneNode() for slot polyfilled components\n patchCloneNodeFix(H.prototype);\n }\n const scriptElm = BUILD.scriptDataOpts\n ? Array.from(doc.querySelectorAll('script')).find((s) => new RegExp(`\\/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) ||\n s.getAttribute('data-stencil-namespace') === NAMESPACE)\n : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})['data-opts'] || {} : {};\n if (importMeta !== '') {\n opts.resourcesUrl = new URL('.', importMeta).href;\n }\n return promiseResolve(opts);\n};\nconst patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function (deep) {\n if (this.nodeName === 'TEMPLATE') {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n // Node.ATTRIBUTE_NODE === 2, and checking because IE11\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport { patchBrowser };\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(options => {\n globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"mappings":"6FAKA,MAAMA,EAAe,KAKO,CAEpBC,EAAkBC,EAAEC,UAC5B,CAKI,MAAMC,cAAyBC,IAC/B,MAAMC,EAAqE,GAC3E,GAAIF,IAAe,GAAI,CACnBE,EAAKC,aAAe,IAAIC,IAAI,IAAKJ,GAAYK,IACrD,CACI,OAAOC,EAAeJ,EAAK,EAE/B,MAAML,EAAqBU,IACvB,MAAMC,EAAoBD,EAAqBE,UAC/CF,EAAqBE,UAAY,SAAUC,GACvC,GAAIC,KAAKC,WAAa,WAAY,CAC9B,OAAOJ,EAAkBK,KAAKF,KAAMD,EAChD,CACQ,MAAMI,EAAaN,EAAkBK,KAAKF,KAAM,OAChD,MAAMI,EAAgBJ,KAAKK,WAC3B,GAAIN,EAAM,CACN,IAAK,IAAIO,EAAI,EAAGA,EAAIF,EAAcG,OAAQD,IAAK,CAE3C,GAAIF,EAAcE,GAAGE,WAAa,EAAG,CACjCL,EAAWM,YAAYL,EAAcE,GAAGR,UAAU,MACtE,CACA,CACA,CACQ,OAAOK,CACf,CAAK,ECtCLlB,IAAeyB,MAAKC,GAEXC,EAAcC,KAAAC,MAAA,opeAAuCH"}
package/www/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html dir="ltr" lang="en"><head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0"> <title>Albe test application</title> <link rel="stylesheet" type="text/css" href="/build/p-36aea196.css"> <link rel="modulepreload" href="/build/p-32cd9d9b.js"><link rel="modulepreload" href="/build/p-025f494e.js"><link rel="modulepreload" href="/build/p-10bb4f4b.js"><link rel="modulepreload" href="/build/p-2c886e8b.js"><link rel="modulepreload" href="/build/p-955da62e.js"><script type="module" src="/build/p-32cd9d9b.js" data-stencil data-resources-url="/build/" data-stencil-namespace="web-components-library"></script> <script nomodule="" src="/build/web-components-library.js" data-stencil></script> </head> <body> <header> <z-app-header> <h1 slot="title">Albe test app</h1> </z-app-header> </header> <main></main> </body></html>
1
+ <!doctype html><html dir="ltr" lang="en"><head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0"> <title>Albe test application</title> <link rel="stylesheet" type="text/css" href="/build/p-22cc270c.css"> <link rel="modulepreload" href="/build/p-ddd9a0ea.js"><link rel="modulepreload" href="/build/p-025f494e.js"><link rel="modulepreload" href="/build/p-10bb4f4b.js"><link rel="modulepreload" href="/build/p-2c886e8b.js"><link rel="modulepreload" href="/build/p-955da62e.js"><script type="module" src="/build/p-ddd9a0ea.js" data-stencil data-resources-url="/build/" data-stencil-namespace="web-components-library"></script> <script nomodule="" src="/build/web-components-library.js" data-stencil></script> </head> <body> <header> <z-app-header> <h1 slot="title">Albe test app</h1> </z-app-header> </header> <main></main> </body></html>
@@ -1 +0,0 @@
1
- {"version":3,"names":["stylesCss","ZTableStyle0","ZTable","updateExpandable","this","expandable","host","querySelectorAll","length","componentWillLoad","expandableMutationObserver","MutationObserver","observe","childList","subtree","attributes","attributeFilter","attributeOldValue","disconnectedCallback","disconnect","render","h","Host","key","class","role"],"sources":["src/components/table/z-table/styles.css?tag=z-table&encapsulation=shadow","src/components/table/z-table/index.tsx"],"sourcesContent":[":host {\n --z-table--cells-padding: calc(var(--space-unit) * 2);\n\n position: relative;\n display: block;\n overflow: auto;\n max-width: 100%;\n box-sizing: border-box;\n background-color: var(--color-surface01);\n}\n\n:host([expandable]) {\n --z-table--expand-button-size: 40px;\n}\n\n:host([bordered]) {\n --z-table--cell-left-border: 1px solid var(--color-surface03);\n}\n\n.table {\n min-width: max-content;\n}\n","import {Component, Element, Host, Prop, State, h} from \"@stencil/core\";\nimport \"../z-thead/index\";\nimport \"../z-tbody/index\";\nimport \"../z-tr/index\";\nimport \"../z-tfoot/index\";\n\n/**\n * ZTable component.\n * @slot - Table content (`z-thead`, `z-tbody`, `z-tfoot`, `z-tr`).\n * @cssprop --z-table--cells-padding - Padding of the cells.\n */\n@Component({\n tag: \"z-table\",\n styleUrl: \"styles.css\",\n shadow: true,\n})\nexport class ZTable {\n @Element() host: HTMLZTableElement;\n\n /**\n * Whether the table cells should show a border between them.\n */\n @Prop({reflect: true})\n bordered = false;\n\n /**\n * Whether the table contains some expandable rows.\n */\n @State()\n expandable = false;\n\n private updateExpandable(): void {\n this.expandable = this.host.querySelectorAll(\"z-tr[expandable]\").length > 0;\n }\n\n private expandableMutationObserver: MutationObserver;\n\n /**\n * Setup the table creating a mutation observer for the expandable attribute.\n */\n componentWillLoad(): void {\n this.expandableMutationObserver = new MutationObserver(() => {\n this.updateExpandable();\n });\n this.expandableMutationObserver.observe(this.host, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: [\"expandable\"],\n attributeOldValue: false,\n });\n }\n\n disconnectedCallback(): void {\n this.expandableMutationObserver.disconnect();\n }\n\n render(): HTMLZTableElement {\n return (\n <Host expandable={this.expandable}>\n <div\n class=\"table\"\n role=\"table\"\n >\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"4QAAA,MAAMA,EAAY,4VAClB,MAAAC,EAAeD,E,MCeFE,EAAM,M,uCAON,M,gBAME,K,CAEL,gBAAAC,GACNC,KAAKC,WAAaD,KAAKE,KAAKC,iBAAiB,oBAAoBC,OAAS,C,CAQ5E,iBAAAC,GACEL,KAAKM,2BAA6B,IAAIC,kBAAiB,KACrDP,KAAKD,kBAAkB,IAEzBC,KAAKM,2BAA2BE,QAAQR,KAAKE,KAAM,CACjDO,UAAW,KACXC,QAAS,KACTC,WAAY,KACZC,gBAAiB,CAAC,cAClBC,kBAAmB,O,CAIvB,oBAAAC,GACEd,KAAKM,2BAA2BS,Y,CAGlC,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAAClB,WAAYD,KAAKC,YACrBgB,EAAA,OAAAE,IAAA,2CACEC,MAAM,QACNC,KAAK,SAELJ,EAAA,QAAAE,IAAA,8C"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["stylesCss","ZPopoverStyle0","DOCUMENT_ELEMENT","document","documentElement","getParentElement","element","parentNode","host","findScrollableParent","parent","overflow","overflowX","overflowY","window","getComputedStyle","scrollHeight","clientHeight","scrollWidth","clientWidth","computeOffset","targetParentOffset","rect","getBoundingClientRect","width","height","top","left","offsetParent","offsetLeft","body","scrollY","offsetTop","DOMMatrix","style","transform","webkitTransform","domMatrix","m41","m42","parentWidth","parentHeight","innerWidth","innerHeight","offsetWidth","offsetHeight","right","bottom","ZPopover","PopoverPosition","AUTO","closePopoverWithKeyboard","e","this","closable","key","KeyboardCode","ESC","open","handleOutsideClick","composedPath","includes","target","triggerElemClicked","bindTo","HTMLElement","contains","closest","CSS","escape","stopPropagation","positionChange","emit","position","currentPosition","validatePosition","newValue","Object","values","onOpen","cancelAnimationFrame","animationFrameRequestId","setPosition","requestAnimationFrame","hasAttribute","removeAttribute","undefined","openChange","disconnectedCallback","ownerDocument","querySelector","parentElement","scrollContainer","scrollingBoundingRect","offsetContainer","relativeBoundingRect","boundingRect","scrollTop","scrollLeft","overflowBottom","Math","max","overflowRight","availableTop","min","availableBottom","availableLeft","availableRight","availableHeight","availableWidth","positions","push","LEFT","RIGHT","unshift","TOP","BOTTOM","join","offsetRight","offsetBottom","offsetModifier","center","sizeModifier","TOP_RIGHT","maxHeight","maxWidth","TOP_LEFT","BOTTOM_RIGHT","BOTTOM_LEFT","RIGHT_BOTTOM","RIGHT_TOP","LEFT_BOTTOM","LEFT_TOP","setAttribute","componentWillLoad","render","h"],"sources":["src/components/z-popover/styles.css?tag=z-popover&encapsulation=shadow","src/components/z-popover/index.tsx"],"sourcesContent":[":host {\n --z-popover-theme--surface: var(--color-surface01);\n --z-popover-theme--text: var(--color-text01);\n --z-popover-padding: 0;\n --z-popover-shadow-filter: drop-shadow(0 1px 2px var(--shadow-color-base));\n\n position: relative;\n display: none;\n min-width: calc(var(--space-unit) * 8);\n min-height: calc(var(--space-unit) * 4);\n align-items: center;\n justify-content: center;\n padding: var(--z-popover-padding);\n background: var(--z-popover-theme--surface);\n border-radius: var(--border-radius-small);\n color: var(--z-popover-theme--text);\n fill: currentcolor;\n filter: var(--z-popover-shadow-filter);\n font-family: var(--font-family-sans);\n text-align: center;\n}\n\n:host([open][current-position]),\n:host([open=\"true\"][current-position]) {\n display: flex;\n}\n\n:host([center][current-position=\"top\"]),\n:host([center][current-position=\"bottom\"]) {\n transform: translateX(-50%);\n}\n\n:host([center][current-position=\"right\"]),\n:host([center][current-position=\"left\"]) {\n transform: translateY(-50%);\n}\n\n:host([current-position^=\"top\"]) {\n margin: 0 0 var(--space-unit);\n}\n\n:host([current-position^=\"bottom\"]) {\n margin: var(--space-unit) 0 0;\n}\n\n:host([current-position^=\"left\"]) {\n margin: 0 var(--space-unit) 0 0;\n}\n\n:host([current-position^=\"right\"]) {\n margin: 0 0 0 var(--space-unit);\n}\n\n/* Arrow style */\n\n:host([current-position])::before {\n --arrow-size: 6px;\n --arrow-edge-offset: calc(100% - var(--space-unit) - (var(--arrow-size) / 2));\n --arrow-center-x-offset: calc(50% - (var(--arrow-size) / 2));\n --arrow-center-y-offset: calc(100% - (var(--arrow-size) / 2));\n\n position: absolute;\n display: block;\n width: var(--arrow-size);\n height: var(--arrow-size);\n background: var(--z-popover-theme--surface);\n content: \"\";\n transform: rotate(45deg);\n}\n\n:host([show-arrow=\"false\"])::before,\n:host(:not([show-arrow]))::before {\n display: none;\n}\n\n:host([current-position^=\"top\"])::before {\n top: var(--arrow-center-y-offset);\n}\n\n:host([current-position^=\"bottom\"])::before {\n bottom: var(--arrow-center-y-offset);\n}\n\n:host([current-position=\"top\"])::before,\n:host([current-position=\"bottom\"])::before {\n right: var(--arrow-edge-offset);\n}\n\n:host([current-position=\"right\"])::before,\n:host([current-position=\"left\"])::before {\n bottom: var(--arrow-edge-offset);\n}\n\n:host([current-position=\"right\"])::before {\n right: var(--arrow-center-y-offset);\n}\n\n:host([current-position=\"left\"])::before {\n left: var(--arrow-center-y-offset);\n}\n\n:host([current-position=\"top_right\"])::before,\n:host([current-position=\"bottom_right\"])::before {\n right: var(--arrow-edge-offset);\n}\n\n:host([current-position=\"top_left\"])::before,\n:host([current-position=\"bottom_left\"])::before {\n left: var(--arrow-edge-offset);\n}\n\n:host([current-position=\"right_top\"])::before,\n:host([current-position=\"left_top\"])::before {\n top: var(--arrow-edge-offset);\n}\n\n:host([current-position=\"right_top\"])::before,\n:host([current-position=\"right_bottom\"])::before {\n right: var(--arrow-center-y-offset);\n}\n\n:host([current-position=\"left_top\"])::before,\n:host([current-position=\"left_bottom\"])::before {\n left: var(--arrow-center-y-offset);\n}\n\n:host([current-position=\"right_bottom\"])::before,\n:host([current-position=\"left_bottom\"])::before {\n bottom: var(--arrow-edge-offset);\n}\n\n:host([center][current-position=\"top\"])::before,\n:host([center][current-position=\"bottom\"])::before {\n right: auto;\n left: var(--arrow-center-x-offset);\n}\n\n:host([center][current-position=\"right\"])::before,\n:host([center][current-position=\"left\"])::before {\n top: var(--arrow-center-x-offset);\n bottom: auto;\n}\n\n::slotted(*) {\n overflow: auto;\n flex: 1 auto;\n}\n","import {Component, Prop, h, Watch, Listen, Element, State, Event, EventEmitter} from \"@stencil/core\";\nimport {PopoverPosition, KeyboardCode} from \"../../beans\";\n\nconst DOCUMENT_ELEMENT = document.documentElement;\n\nfunction getParentElement(element: Element): ShadowRoot[\"host\"] {\n if ((element.parentNode as ShadowRoot).host) {\n return (element.parentNode as ShadowRoot).host;\n }\n\n return element.parentNode as Element;\n}\n\n/**\n * Find the closest scrollable parent of a node.\n *\n * @param {Element} element The node\n */\nfunction findScrollableParent(element: Element): Element {\n let parent = getParentElement(element);\n\n while (parent && parent !== DOCUMENT_ELEMENT) {\n const {overflow, overflowX, overflowY} = window.getComputedStyle(parent);\n if (overflow === \"hidden\" || overflowY === \"hidden\" || overflowX === \"hidden\") {\n return parent;\n }\n\n if (\n (parent.scrollHeight > parent.clientHeight && overflow !== \"visible\" && overflowY !== \"visible\") ||\n (parent.scrollWidth > parent.clientWidth && overflow !== \"visible\" && overflowX !== \"visible\")\n ) {\n return parent;\n }\n\n parent = getParentElement(parent);\n }\n\n return DOCUMENT_ELEMENT;\n}\n\n/**\n * Calculate computed offset.\n * It includes matrix transformations.\n * @param element The target element.\n * @param targetParentOffset The relative offset parent.\n * @return A client rect object.\n */\nfunction computeOffset(element: HTMLElement, targetParentOffset?: HTMLElement): Record<string, number> {\n const rect = element.getBoundingClientRect();\n const width = rect.width;\n const height = rect.height;\n\n let top = 0;\n let left = 0;\n let offsetParent = element;\n while (offsetParent && offsetParent != targetParentOffset) {\n left += offsetParent.offsetLeft;\n\n // document.body sometimes has offsetTop == 0 but still has an\n // offset because of children margins!\n if (offsetParent === document.body) {\n top += offsetParent.getBoundingClientRect().top + window.scrollY;\n } else {\n top += offsetParent.offsetTop;\n }\n\n if (window.DOMMatrix) {\n const style = window.getComputedStyle(offsetParent);\n const transform = style.transform || style.webkitTransform;\n const domMatrix = new DOMMatrix(transform);\n if (domMatrix) {\n left += domMatrix.m41;\n if (offsetParent !== document.body) {\n top += domMatrix.m42;\n }\n }\n }\n\n if (!offsetParent.offsetParent) {\n break;\n }\n\n offsetParent = offsetParent.offsetParent as HTMLElement;\n }\n\n let parentWidth: number;\n let parentHeight: number;\n if (offsetParent === document.body) {\n parentWidth = window.innerWidth;\n parentHeight = window.innerHeight;\n } else {\n parentWidth = offsetParent.offsetWidth;\n parentHeight = offsetParent.offsetHeight;\n }\n\n const right = parentWidth - left - rect.width;\n const bottom = parentHeight - top - rect.height;\n\n return {top, right, bottom, left, width, height};\n}\n\n/**\n * Popover component.\n *\n * @cssprop --z-popover-theme--surface - background color of the popover.\n * @cssprop --z-popover-theme--text - foreground color of the popover.\n * @cssprop --z-popover-padding - padding of the popover.\n * @cssprop --z-popover-shadow-filter - drop-shadow filter of the popover. Defaults to `drop-shadow(0 1px 2px var(--shadow-color-base))`.\n */\n@Component({\n tag: \"z-popover\",\n styleUrl: \"styles.css\",\n shadow: true,\n})\nexport class ZPopover {\n /** Popover position. */\n @Prop({reflect: true})\n position: PopoverPosition = PopoverPosition.AUTO;\n\n /**\n * The open state of the popover.\n */\n @Prop({reflect: true, mutable: true})\n open = false;\n\n /**\n * The selector or the element bound with the popover.\n */\n @Prop()\n bindTo?: string | HTMLElement;\n\n /**\n * Whether to show popover's arrow.\n */\n @Prop({reflect: true})\n showArrow = false;\n\n /**\n * Whether to center the popup on the main side (according to \"position\").\n */\n @Prop({reflect: true})\n center = false;\n\n /**\n * If true, the popover can be closed by clicking outside of it or pressing the escape key.\n * Otherwise, it will be closed only programmatically (by setting `open` to `false`).\n */\n @Prop()\n closable = true;\n\n /**\n * The current position of the popover.\n */\n @State()\n currentPosition?: PopoverPosition;\n\n /**\n * Position change event.\n */\n @Event()\n positionChange: EventEmitter;\n\n /**\n * Open change event.\n */\n @Event()\n openChange: EventEmitter;\n\n @Element() host: HTMLZPopoverElement;\n\n private animationFrameRequestId?: number;\n\n @Listen(\"keyup\", {target: \"window\"})\n closePopoverWithKeyboard(e: KeyboardEvent): void {\n if (this.closable && e.key === KeyboardCode.ESC) {\n this.open = false;\n }\n }\n\n /**\n * Close the popover when clicking outside of its content.\n * Stop event propagation if the click was fired by popover's trigger element,\n * to prevent close and reopen glitches.\n * @param {MouseEvent} e\n */\n @Listen(\"click\", {target: \"body\", capture: true})\n handleOutsideClick(e: MouseEvent): void {\n if (!this.closable || !this.open) {\n return;\n }\n\n if (!e.composedPath().includes(this.host)) {\n const target = e.target as HTMLElement;\n const triggerElemClicked =\n this.bindTo instanceof HTMLElement ? this.bindTo.contains(target) : target.closest(CSS.escape(this.bindTo));\n if (triggerElemClicked) {\n e.stopPropagation();\n }\n\n this.open = false;\n this.positionChange.emit({position: this.currentPosition});\n }\n }\n\n @Watch(\"position\")\n validatePosition(newValue: PopoverPosition): void {\n if (newValue && !Object.values(PopoverPosition).includes(newValue as PopoverPosition)) {\n this.position = PopoverPosition.AUTO;\n }\n\n this.currentPosition = this.position;\n this.positionChange.emit({position: this.currentPosition});\n }\n\n /**\n * Setup popover behaviors on opening.\n */\n @Watch(\"open\")\n onOpen(): void {\n cancelAnimationFrame(this.animationFrameRequestId);\n if (this.open) {\n const setPosition = (): void => {\n if (this.open) {\n this.setPosition();\n this.animationFrameRequestId = requestAnimationFrame(setPosition);\n }\n };\n\n setPosition();\n } else if (this.host.hasAttribute(\"current-position\")) {\n this.host.removeAttribute(\"current-position\");\n this.currentPosition = undefined;\n }\n\n this.openChange.emit({open: this.open});\n }\n\n disconnectedCallback(): void {\n cancelAnimationFrame(this.animationFrameRequestId);\n }\n\n /**\n * Set the position of the popover.\n */\n private setPosition(): void {\n let element: HTMLElement;\n if (typeof this.bindTo === \"string\") {\n element = this.host.ownerDocument.querySelector(CSS.escape(this.bindTo)) as HTMLElement;\n } else if (this.bindTo) {\n element = this.bindTo;\n } else {\n element = this.host.parentElement as HTMLElement;\n }\n\n if (!element) {\n return;\n }\n\n const scrollContainer = findScrollableParent(element) as HTMLElement;\n const scrollingBoundingRect = scrollContainer.getBoundingClientRect();\n const offsetContainer = this.host.offsetParent as HTMLElement;\n\n const relativeBoundingRect = offsetContainer\n ? computeOffset(offsetContainer, scrollContainer)\n : {top: 0, right: 0, bottom: 0, left: 0};\n const boundingRect = computeOffset(element, scrollContainer);\n\n const top = boundingRect.top - scrollContainer.scrollTop;\n const bottom = scrollingBoundingRect.height - (boundingRect.top + boundingRect.height) + scrollContainer.scrollTop;\n const left = boundingRect.left - scrollContainer.scrollLeft;\n const right = scrollingBoundingRect.width - (boundingRect.left + boundingRect.width) + scrollContainer.scrollLeft;\n\n const overflowBottom = Math.max(0, scrollingBoundingRect.top + scrollingBoundingRect.height - window.innerHeight);\n const overflowRight = Math.max(0, scrollingBoundingRect.left + scrollingBoundingRect.width - window.innerWidth);\n\n const availableTop = Math.min(top, top + scrollingBoundingRect.top);\n const availableBottom = Math.min(bottom, bottom - overflowBottom);\n const availableLeft = Math.min(left, left + scrollingBoundingRect.left);\n const availableRight = Math.min(right, right - overflowRight);\n\n const availableHeight = availableTop + availableBottom + boundingRect.height;\n const availableWidth = availableLeft + availableRight + boundingRect.width;\n\n let position = this.currentPosition;\n const positions: PopoverPosition[] = [];\n if (this.position === PopoverPosition.AUTO) {\n /**\n * The `AUTO` position tries to place the popover in the 'safest' area,\n * where there's more space available.\n */\n if (availableLeft / availableWidth > 0.6) {\n positions.push(PopoverPosition.LEFT);\n } else if (availableLeft / availableWidth < 0.4) {\n positions.push(PopoverPosition.RIGHT);\n }\n\n if (availableTop / availableHeight > 0.9) {\n positions.unshift(PopoverPosition.TOP);\n } else if (availableTop / availableHeight > 0.6) {\n positions.push(PopoverPosition.TOP);\n } else if (availableTop / availableHeight < 0.1) {\n positions.unshift(PopoverPosition.BOTTOM);\n } else {\n positions.push(PopoverPosition.BOTTOM);\n }\n\n position = positions.join(\"_\") as PopoverPosition;\n }\n\n const style = this.host.style;\n style.position = \"absolute\";\n\n const offsetTop = boundingRect.top - relativeBoundingRect.top;\n const offsetRight = boundingRect.right - relativeBoundingRect.right;\n const offsetBottom = boundingRect.bottom - relativeBoundingRect.bottom;\n const offsetLeft = boundingRect.left - relativeBoundingRect.left;\n const offsetModifier = this.center ? 0.5 : 0;\n const sizeModifier = this.center ? 0.5 : 0;\n\n if (position === PopoverPosition.TOP || position === PopoverPosition.TOP_RIGHT) {\n style.top = \"auto\";\n style.right = \"auto\";\n style.bottom = `${offsetBottom + boundingRect.height}px`;\n\n style.left = `${offsetLeft + boundingRect.width * offsetModifier}px`;\n style.maxHeight = `${availableTop}px`;\n if (position === PopoverPosition.TOP_RIGHT) {\n style.maxWidth = `${availableRight + boundingRect.width * sizeModifier}px`;\n }\n } else if (position === PopoverPosition.TOP_LEFT) {\n style.top = \"auto\";\n style.right = `${offsetRight + boundingRect.width * offsetModifier}px`;\n style.bottom = `${offsetBottom + boundingRect.height}px`;\n style.left = \"auto\";\n style.maxWidth = `${availableLeft}px`;\n style.maxHeight = `${availableTop}px`;\n } else if (position === PopoverPosition.BOTTOM || position === PopoverPosition.BOTTOM_RIGHT) {\n style.top = `${offsetTop + boundingRect.height}px`;\n style.right = \"auto\";\n style.bottom = \"auto\";\n style.left = `${offsetLeft + boundingRect.width * offsetModifier}px`;\n style.maxHeight = `${availableBottom}px`;\n if (position === PopoverPosition.BOTTOM_RIGHT) {\n style.maxWidth = `${availableRight + boundingRect.width * sizeModifier}px`;\n }\n } else if (position === PopoverPosition.BOTTOM_LEFT) {\n style.top = `${offsetTop + boundingRect.height}px`;\n style.right = `${offsetRight + boundingRect.width * offsetModifier}px`;\n style.bottom = \"auto\";\n style.left = \"auto\";\n style.maxWidth = `${availableLeft}px`;\n style.maxHeight = `${availableBottom}px`;\n } else if (position === PopoverPosition.RIGHT || position === PopoverPosition.RIGHT_BOTTOM) {\n style.top = `${offsetTop + boundingRect.height * offsetModifier}px`;\n style.right = \"auto\";\n style.bottom = \"auto\";\n style.left = `${offsetLeft + boundingRect.width}px`;\n style.maxWidth = `${availableRight}px`;\n style.maxHeight = `${availableBottom + boundingRect.height * sizeModifier}px`;\n } else if (position === PopoverPosition.RIGHT_TOP) {\n style.top = \"auto\";\n style.right = \"auto\";\n style.bottom = `${offsetBottom + boundingRect.height * offsetModifier}px`;\n style.left = `${offsetLeft + boundingRect.width}px`;\n style.maxWidth = `${availableRight}px`;\n style.maxHeight = `${availableTop + boundingRect.height * sizeModifier}px`;\n } else if (position === PopoverPosition.LEFT || position === PopoverPosition.LEFT_BOTTOM) {\n style.top = `${offsetTop + boundingRect.height * offsetModifier}px`;\n style.right = `${offsetRight + boundingRect.width}px`;\n style.bottom = \"auto\";\n style.left = \"auto\";\n style.maxWidth = `${availableLeft}px`;\n style.maxHeight = `${availableBottom + boundingRect.height * sizeModifier}px`;\n } else if (position === PopoverPosition.LEFT_TOP) {\n style.top = \"auto\";\n style.right = `${offsetRight + boundingRect.width}px`;\n style.bottom = `${offsetBottom + boundingRect.height * offsetModifier}px`;\n style.left = \"auto\";\n style.maxWidth = `${availableLeft}px`;\n style.maxHeight = `${availableTop + boundingRect.height * sizeModifier}px`;\n }\n\n this.currentPosition = position || this.position;\n this.host.setAttribute(\"current-position\", this.currentPosition);\n }\n\n componentWillLoad(): void {\n this.validatePosition(this.position);\n this.onOpen();\n }\n\n render(): HTMLSlotElement {\n return <slot></slot>;\n }\n}\n"],"mappings":"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"}