@mhmo91/schmancy 0.2.99 → 0.2.101

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 (52) hide show
  1. package/dist/card.cjs +1 -1
  2. package/dist/card.js +1 -1
  3. package/dist/content-drawer.cjs +1 -1
  4. package/dist/content-drawer.js +1 -1
  5. package/dist/date-range-_0s6SDfu.js +166 -0
  6. package/dist/date-range-_0s6SDfu.js.map +1 -0
  7. package/dist/date-range-vQa6u7Kc.cjs +72 -0
  8. package/dist/date-range-vQa6u7Kc.cjs.map +1 -0
  9. package/dist/date-range.cjs +1 -1
  10. package/dist/date-range.js +1 -1
  11. package/dist/index.cjs +1 -1
  12. package/dist/index.js +5 -5
  13. package/dist/list-Cd7iC1no.cjs +17 -0
  14. package/dist/{list-Dy8fudM4.cjs.map → list-Cd7iC1no.cjs.map} +1 -1
  15. package/dist/{list-CXPHvvQw.js → list-ClmkvF6W.js} +12 -12
  16. package/dist/{list-CXPHvvQw.js.map → list-ClmkvF6W.js.map} +1 -1
  17. package/dist/list.cjs +1 -1
  18. package/dist/list.js +1 -1
  19. package/dist/menu-DS5Lkay4.cjs +36 -0
  20. package/dist/menu-DS5Lkay4.cjs.map +1 -0
  21. package/dist/menu-DilY6y1N.js +99 -0
  22. package/dist/menu-DilY6y1N.js.map +1 -0
  23. package/dist/menu.cjs +1 -1
  24. package/dist/menu.js +1 -1
  25. package/dist/nav-drawer.cjs +1 -1
  26. package/dist/nav-drawer.js +1 -1
  27. package/dist/{sheet-DuEDOgLy.cjs → sheet-BS8CLge_.cjs} +16 -12
  28. package/dist/sheet-BS8CLge_.cjs.map +1 -0
  29. package/dist/{sheet-X4wSUqXf.js → sheet-QdCPv8wr.js} +42 -37
  30. package/dist/sheet-QdCPv8wr.js.map +1 -0
  31. package/dist/sheet.cjs +1 -1
  32. package/dist/sheet.js +1 -1
  33. package/dist/teleport.cjs +1 -1
  34. package/dist/{teleport.component-DIFVEO4o.cjs → teleport.component-DbLxhqqJ.cjs} +2 -2
  35. package/dist/{teleport.component-DIFVEO4o.cjs.map → teleport.component-DbLxhqqJ.cjs.map} +1 -1
  36. package/dist/{teleport.component-a21lBq6W.js → teleport.component-lGN5dIBu.js} +5 -5
  37. package/dist/{teleport.component-a21lBq6W.js.map → teleport.component-lGN5dIBu.js.map} +1 -1
  38. package/dist/teleport.js +1 -1
  39. package/package.json +1 -1
  40. package/types/src/list/list.d.ts +0 -9
  41. package/types/src/menu/menu.d.ts +6 -5
  42. package/dist/date-range-DBxAQrWq.cjs +0 -72
  43. package/dist/date-range-DBxAQrWq.cjs.map +0 -1
  44. package/dist/date-range-eiBhfMFP.js +0 -167
  45. package/dist/date-range-eiBhfMFP.js.map +0 -1
  46. package/dist/list-Dy8fudM4.cjs +0 -17
  47. package/dist/menu-Cpld82tG.js +0 -93
  48. package/dist/menu-Cpld82tG.js.map +0 -1
  49. package/dist/menu-qiBmvTtT.cjs +0 -29
  50. package/dist/menu-qiBmvTtT.cjs.map +0 -1
  51. package/dist/sheet-DuEDOgLy.cjs.map +0 -1
  52. package/dist/sheet-X4wSUqXf.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"list-CXPHvvQw.js","sources":["../src/list/context.ts","../src/surface/context.ts","../src/list/list-item.ts","../src/list/list.ts"],"sourcesContent":["import { createContext } from '@lit/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nexport const SchmancyListTypeContext = createContext<TSurfaceColor>(undefined)\n","import { createContext } from '@lit/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nexport const SchmancySurfaceTypeContext = createContext<TSurfaceColor>('surface')\n","import { consume } from '@lit/context'\nimport { TailwindElement } from '@mixins/index'\nimport { SchmancySurfaceTypeContext } from '@schmancy/surface/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nimport { html } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\n\n/**\n * @element schmancy-list-item\n * @slot leading - leading content\n * @slot trailing - trailing content\n * @slot - default content\n */\n@customElement('schmancy-list-item')\nexport class SchmancyListItem extends TailwindElement() {\n\t@consume({ context: SchmancySurfaceTypeContext, subscribe: true })\n\t@property()\n\tvariant: TSurfaceColor\n\n\t@property({ type: Boolean })\n\trounded: boolean\n\n\t@property({ type: Boolean }) readonly: boolean\n\n\t@property({ type: Boolean }) selected: boolean = false\n\n\t@queryAssignedElements({\n\t\tslot: 'leading',\n\t\tflatten: true,\n\t})\n\tprivate leading!: HTMLElement[]\n\n\t@queryAssignedElements({\n\t\tslot: 'trailing',\n\t\tflatten: true,\n\t})\n\tprivate trailing!: HTMLElement[]\n\n\tprotected get imgClasses(): string[] {\n\t\treturn ['h-[24px]', 'w-[24px]', 'object-contain']\n\t}\n\n\tfirstUpdated() {\n\t\tthis.leading?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t\tthis.trailing?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'rounded-none': this.rounded === false,\n\t\t\t'rounded-full': this.rounded,\n\t\t\t'relative inset-0 w-full flex items-center min-h-[56px] py-[8px] px-[16px] duration-500 transition-colors focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:z-1 outline-secondary-default outline-hidden':\n\t\t\t\ttrue,\n\t\t\t'bg-secondary-container text-secondery-onContainer': this.selected,\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'z-0 duration-500 transition-opacity': true,\n\t\t\t'rounded-none': this.rounded === false,\n\t\t\t'rounded-full': this.rounded,\n\t\t\t'hover:bg-surface-on opacity-[0.08] cursor-pointer absolute inset-0 ': !this.readonly,\n\t\t}\n\t\treturn html` <li .tabIndex=${this.readonly ? -1 : 0} class=${this.classMap(classes)}>\n\t\t\t${when(!this.readonly, () => html` <div class=\"${this.classMap(stateLayerClasses)}\"></div>`)}\n\t\t\t<slot></slot>\n\t\t</li>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-list-item': SchmancyListItem\n\t}\n}\n","import { provide } from '@lit/context'\nimport { TailwindElement } from '@mixins/index'\nimport { SchmancySurfaceFill } from '@schmancy/surface'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { SchmancyListTypeContext } from './context'\n\n/**\n * `<schmancy-list>` component.\n *\n * A list component that wraps its content within a customizable surface.\n * It allows you to set the surface type and fill style, and can optionally\n * enable scrolling behavior by delegating the scroller attribute to the surface.\n *\n * @element schmancy-list\n * @slot - The default slot for list items.\n *\n * @example\n * <schmancy-list surface=\"container\" scroller>\n * <schmancy-list-item>List Item 1</schmancy-list-item>\n * </schmancy-list>\n */\n@customElement('schmancy-list')\nexport class List extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tpadding-top: 8px;\n\t\tpadding-bottom: 8px;\n\t}\n`) {\n\t/**\n\t * Defines the type or color of the surface used by the component.\n\t * This value is provided to descendant components via context.\n\t *\n\t * @attr surface\n\t * @type {TSurfaceColor}\n\t * @default 'surface'\n\t */\n\t@provide({ context: SchmancyListTypeContext })\n\t@property()\n\tsurface: TSurfaceColor\n\n\t/**\n\t * Determines the fill style of the underlying surface.\n\t *\n\t * @attr fill\n\t * @type {SchmancySurfaceFill}\n\t * @default 'auto'\n\t */\n\t@property({ type: String, reflect: true })\n\tfill: SchmancySurfaceFill = 'auto'\n\n\t/**\n\t * When set to true, the surface component will handle scrolling behavior.\n\t * This is achieved by passing the boolean attribute to <schmancy-surface>.\n\t *\n\t * @attr scroller\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tscroller: boolean = false\n\n\t/**\n\t * Defines the elevation level of the surface.\n\t *\n\t * @attr elevation\n\t * @type {number}\n\t * @default 0\n\t */\n\t@property({ type: Number })\n\televation: 0 | 1 | 2 | 3 | 4 | 5 = 0\n\n\t/**\n\t * Renders the component's template.\n\t * The list content is wrapped inside a `<schmancy-surface>` element.\n\t * The scroller property is delegated to the surface so that it controls\n\t * the scrollable behavior.\n\t *\n\t * @returns The HTML template for the component.\n\t */\n\trender() {\n\t\treturn html`\n\t\t\t<schmancy-surface .elevation=${this.elevation} .fill=${this.fill} type=${this.surface} ?scroller=${this.scroller}>\n\t\t\t\t<ul>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</ul>\n\t\t\t</schmancy-surface>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-list': List\n\t}\n}\n"],"names":["SchmancyListTypeContext","createContext","SchmancySurfaceTypeContext","SchmancyListItem","TailwindElement","super","arguments","this","selected","imgClasses","firstUpdated","leading","forEach","img","classList","add","trailing","render","classes","rounded","stateLayerClasses","readonly","html","classMap","when","__decorateClass","consume","context","subscribe","property","prototype","type","Boolean","queryAssignedElements","slot","flatten","customElement","List","css","fill","scroller","elevation","surface","provide","String","reflect","Number"],"mappings":"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"}
1
+ {"version":3,"file":"list-ClmkvF6W.js","sources":["../src/list/context.ts","../src/surface/context.ts","../src/list/list-item.ts","../src/list/list.ts"],"sourcesContent":["import { createContext } from '@lit/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nexport const SchmancyListTypeContext = createContext<TSurfaceColor>(undefined)\n","import { createContext } from '@lit/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nexport const SchmancySurfaceTypeContext = createContext<TSurfaceColor>('surface')\n","import { consume } from '@lit/context'\nimport { TailwindElement } from '@mixins/index'\nimport { SchmancySurfaceTypeContext } from '@schmancy/surface/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nimport { html } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\n\n/**\n * @element schmancy-list-item\n * @slot leading - leading content\n * @slot trailing - trailing content\n * @slot - default content\n */\n@customElement('schmancy-list-item')\nexport class SchmancyListItem extends TailwindElement() {\n\t@consume({ context: SchmancySurfaceTypeContext, subscribe: true })\n\t@property()\n\tvariant: TSurfaceColor\n\n\t@property({ type: Boolean })\n\trounded: boolean\n\n\t@property({ type: Boolean }) readonly: boolean\n\n\t@property({ type: Boolean }) selected: boolean = false\n\n\t@queryAssignedElements({\n\t\tslot: 'leading',\n\t\tflatten: true,\n\t})\n\tprivate leading!: HTMLElement[]\n\n\t@queryAssignedElements({\n\t\tslot: 'trailing',\n\t\tflatten: true,\n\t})\n\tprivate trailing!: HTMLElement[]\n\n\tprotected get imgClasses(): string[] {\n\t\treturn ['h-[24px]', 'w-[24px]', 'object-contain']\n\t}\n\n\tfirstUpdated() {\n\t\tthis.leading?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t\tthis.trailing?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'rounded-none': this.rounded === false,\n\t\t\t'rounded-full': this.rounded,\n\t\t\t'relative inset-0 w-full flex items-center min-h-[56px] py-[8px] px-[16px] duration-500 transition-colors focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:z-1 outline-secondary-default outline-hidden':\n\t\t\t\ttrue,\n\t\t\t'bg-secondary-container text-secondery-onContainer': this.selected,\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'z-0 duration-500 transition-opacity': true,\n\t\t\t'rounded-none': this.rounded === false,\n\t\t\t'rounded-full': this.rounded,\n\t\t\t'hover:bg-surface-on opacity-[0.08] cursor-pointer absolute inset-0 ': !this.readonly,\n\t\t}\n\t\treturn html` <li .tabIndex=${this.readonly ? -1 : 0} class=${this.classMap(classes)}>\n\t\t\t${when(!this.readonly, () => html` <div class=\"${this.classMap(stateLayerClasses)}\"></div>`)}\n\t\t\t<slot></slot>\n\t\t</li>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-list-item': SchmancyListItem\n\t}\n}\n","import { provide } from '@lit/context'\nimport { TailwindElement } from '@mixins/index'\nimport { SchmancySurfaceFill } from '@schmancy/surface'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { SchmancyListTypeContext } from './context'\n\n/**\n * `<schmancy-list>` component.\n *\n * A list component that wraps its content within a customizable surface.\n * It allows you to set the surface type and fill style, and can optionally\n * enable scrolling behavior by delegating the scroller attribute to the surface.\n *\n * @element schmancy-list\n * @slot - The default slot for list items.\n *\n * @example\n * <schmancy-list surface=\"container\" scroller>\n * <schmancy-list-item>List Item 1</schmancy-list-item>\n * </schmancy-list>\n */\n@customElement('schmancy-list')\nexport class List extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tpadding-top: 8px;\n\t\tpadding-bottom: 8px;\n\t}\n`) {\n\t/**\n\t * Defines the type or color of the surface used by the component.\n\t * This value is provided to descendant components via context.\n\t *\n\t * @attr surface\n\t * @type {TSurfaceColor}\n\t * @default 'surface'\n\t */\n\t@provide({ context: SchmancyListTypeContext })\n\t@property()\n\tsurface: TSurfaceColor\n\n\t/**\n\t * Determines the fill style of the underlying surface.\n\t *\n\t * @attr fill\n\t * @type {SchmancySurfaceFill}\n\t * @default 'auto'\n\t */\n\t@property({ type: String, reflect: true })\n\tfill: SchmancySurfaceFill = 'auto'\n\n\t/**\n\t * Defines the elevation level of the surface.\n\t *\n\t * @attr elevation\n\t * @type {number}\n\t * @default 0\n\t */\n\t@property({ type: Number })\n\televation: 0 | 1 | 2 | 3 | 4 | 5 = 0\n\n\t/**\n\t * Renders the component's template.\n\t * The list content is wrapped inside a `<schmancy-surface>` element.\n\t * The scroller property is delegated to the surface so that it controls\n\t * the scrollable behavior.\n\t *\n\t * @returns The HTML template for the component.\n\t */\n\trender() {\n\t\treturn html`\n\t\t\t<schmancy-surface .elevation=${this.elevation} .fill=${this.fill} type=${this.surface}>\n\t\t\t\t<ul>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</ul>\n\t\t\t</schmancy-surface>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-list': List\n\t}\n}\n"],"names":["SchmancyListTypeContext","createContext","SchmancySurfaceTypeContext","SchmancyListItem","TailwindElement","super","arguments","this","selected","imgClasses","firstUpdated","leading","forEach","img","classList","add","trailing","render","classes","rounded","stateLayerClasses","readonly","html","classMap","when","__decorateClass","consume","context","subscribe","property","prototype","type","Boolean","queryAssignedElements","slot","flatten","customElement","List","css","fill","elevation","surface","provide","String","reflect","Number"],"mappings":"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"}
package/dist/list.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./list-Dy8fudM4.cjs");Object.defineProperty(exports,"List",{enumerable:!0,get:()=>e.List}),Object.defineProperty(exports,"SchmancyListItem",{enumerable:!0,get:()=>e.SchmancyListItem}),exports.SchmancyListTypeContext=e.SchmancyListTypeContext;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./list-Cd7iC1no.cjs");Object.defineProperty(exports,"List",{enumerable:!0,get:()=>e.List}),Object.defineProperty(exports,"SchmancyListItem",{enumerable:!0,get:()=>e.SchmancyListItem}),exports.SchmancyListTypeContext=e.SchmancyListTypeContext;
2
2
  //# sourceMappingURL=list.cjs.map
package/dist/list.js CHANGED
@@ -1,4 +1,4 @@
1
- import { L as s, a as c, S as e } from "./list-CXPHvvQw.js";
1
+ import { L as s, a as c, S as e } from "./list-ClmkvF6W.js";
2
2
  export {
3
3
  s as List,
4
4
  c as SchmancyListItem,
@@ -0,0 +1,36 @@
1
+ "use strict";const i=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const d=require("./litElement.mixin-RgeLRf4d.cjs"),b=require("./tailwind.mixin-CJgIYh7g.cjs"),u=require("lit"),c=require("lit/decorators.js"),l=require("@floating-ui/dom");var y=Object.getOwnPropertyDescriptor;let p=class extends d.$LitElement(u.css`
2
+ :host {
3
+ display: block;
4
+ }
5
+ `){connectedCallback(){super.connectedCallback(),i.fromEvent(this,"click").pipe(i.takeUntil(this.disconnecting)).subscribe(e=>{e.stopPropagation(),this.dispatchEvent(new CustomEvent("schmancy-menu-item-click",{bubbles:!0,composed:!0}))})}render(){return u.html`
6
+ <schmancy-list-item>
7
+ <slot></slot>
8
+ </schmancy-list-item>
9
+ `}};p=((e,t,s,o)=>{for(var r,n=o>1?void 0:o?y(t,s):t,a=e.length-1;a>=0;a--)(r=e[a])&&(n=r(n)||n);return n})([c.customElement("schmancy-menu-item")],p);var E=Object.defineProperty,f=Object.getOwnPropertyDescriptor,h=(e,t,s,o)=>{for(var r,n=o>1?void 0:o?f(t,s):t,a=e.length-1;a>=0;a--)(r=e[a])&&(n=(o?r(t,s,n):r(n))||n);return o&&n&&E(t,s,n),n};let m=class extends b.TailwindElement(u.css`
10
+ :host {
11
+ position: relative;
12
+ display: inline-block;
13
+ }
14
+
15
+ #menu {
16
+ display: none;
17
+ }
18
+
19
+ #menu[data-show='true'] {
20
+ display: block;
21
+ }
22
+ `){getMiddleware(){return[l.offset(5),l.flip(),l.shift({padding:5}),l.size({apply({availableHeight:e,elements:t}){t.floating.style.maxHeight=`${e}px`}})]}async updatePosition(){this.buttonElement[0]&&this.menuElement&&await l.computePosition(this.buttonElement[0],this.menuElement,{placement:"bottom-start",middleware:this.getMiddleware()}).then(({x:e,y:t})=>{Object.assign(this.menuElement.style,{left:`${e}px`,top:`${t}px`})})}showMenu(){!this.buttonElement[0]||!this.menuElement||(this.menuElement.dataset.show="true",this.cleanup=l.autoUpdate(this.buttonElement[0],this.menuElement,()=>{l.computePosition(this.buttonElement[0],this.menuElement,{placement:"bottom-start",middleware:this.getMiddleware()}).then(({x:e,y:t,strategy:s})=>{Object.assign(this.menuElement.style,{left:`${e}px`,top:`${t}px`,position:s})})}),this.menuElement.animate([{opacity:0,transform:"scale(0.95)"},{opacity:1,transform:"scale(1)"}],{duration:100,easing:"cubic-bezier(0.55, 0.085, 0.68, 0.53)"}).onfinish=()=>{})}async hideMenu(){this.cleanup&&(await this.cleanup(),this.cleanup=void 0),this.menuElement.dataset.show="false",this.menuElement.animate([{opacity:1,transform:"scale(1)"},{opacity:0,transform:"scale(0.95)"}],{duration:75,easing:"cubic-bezier(0.55, 0.085, 0.68, 0.53)"}).onfinish=()=>{}}firstUpdated(){i.fromEvent(this.buttonElement,"click").pipe(i.tap(e=>e.stopPropagation()),i.takeUntil(this.disconnecting)).subscribe(()=>{this.showMenu()}),i.fromEvent(this,"schmancy-menu-item-click").pipe(i.tap(e=>e.stopPropagation()),i.takeUntil(this.disconnecting)).subscribe(()=>{this.hideMenu()}),i.fromEvent(document,"click").pipe(i.filter(e=>!this.contains(e.target)),i.takeUntil(this.disconnecting),i.tap(()=>{this.menuElement.dataset.show==="true"&&this.hideMenu()})).subscribe()}render(){return u.html`
23
+ <slot name="button">
24
+ <schmancy-icon-button> more_vert </schmancy-icon-button>
25
+ </slot>
26
+ <ul
27
+ id="menu"
28
+ class="absolute z-50 border-outlineVariant rounded-md min-w-[160px] max-w-[320px] w-max bg-surface-default max-h-[90vh] shadow-1 overflow-y-auto"
29
+ role="menu"
30
+ aria-orientation="vertical"
31
+ aria-labelledby="options-menu-4-button"
32
+ >
33
+ <slot></slot>
34
+ </ul>
35
+ `}};h([c.queryAssignedElements({flatten:!0,slot:"button"})],m.prototype,"buttonElement",2),h([c.query("#menu")],m.prototype,"menuElement",2),m=h([c.customElement("schmancy-menu")],m);
36
+ //# sourceMappingURL=menu-DS5Lkay4.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-DS5Lkay4.cjs","sources":["../src/menu/menu-item.ts","../src/menu/menu.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport { fromEvent, takeUntil } from 'rxjs'\n\n@customElement('schmancy-menu-item')\nexport default class SchmancyMenuItem extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tfromEvent(this, 'click')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(e => {\n\t\t\t\te.stopPropagation()\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('schmancy-menu-item-click', {\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t}\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-list-item>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu-item': SchmancyMenuItem\n\t}\n}\n","import { autoUpdate, computePosition, flip, offset, shift, size } from '@floating-ui/dom'\nimport { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, query, queryAssignedElements } from 'lit/decorators.js'\nimport { filter, fromEvent, takeUntil, tap } from 'rxjs'\n\n@customElement('schmancy-menu')\nexport default class SchmancyMenu extends TailwindElement(css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t}\n\n\t#menu {\n\t\tdisplay: none;\n\t}\n\n\t#menu[data-show='true'] {\n\t\tdisplay: block;\n\t}\n`) {\n\t@queryAssignedElements({ flatten: true, slot: 'button' })\n\tbuttonElement!: Array<HTMLElement>\n\n\t@query('#menu') menuElement!: HTMLElement\n\n\tprivate cleanup?: any\n\n\tprivate getMiddleware() {\n\t\treturn [\n\t\t\toffset(5),\n\t\t\tflip(),\n\t\t\tshift({ padding: 5 }),\n\t\t\tsize({\n\t\t\t\tapply({ availableHeight, elements }) {\n\t\t\t\t\telements.floating.style.maxHeight = `${availableHeight}px`\n\t\t\t\t},\n\t\t\t}),\n\t\t]\n\t}\n\n\tasync updatePosition() {\n\t\tif (!this.buttonElement[0] || !this.menuElement) {\n\t\t\treturn\n\t\t}\n\n\t\tawait computePosition(this.buttonElement[0], this.menuElement, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: this.getMiddleware(),\n\t\t}).then(({ x, y }) => {\n\t\t\tObject.assign(this.menuElement.style, {\n\t\t\t\tleft: `${x}px`,\n\t\t\t\ttop: `${y}px`,\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate showMenu() {\n\t\tif (!this.buttonElement[0] || !this.menuElement) return\n\n\t\tthis.menuElement.dataset.show = 'true'\n\n\t\tthis.cleanup = autoUpdate(this.buttonElement[0], this.menuElement, () => {\n\t\t\tcomputePosition(this.buttonElement[0], this.menuElement, {\n\t\t\t\tplacement: 'bottom-start',\n\t\t\t\tmiddleware: this.getMiddleware(),\n\t\t\t}).then(({ x, y, strategy }) => {\n\t\t\t\tObject.assign(this.menuElement.style, {\n\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\ttop: `${y}px`,\n\t\t\t\t\tposition: strategy,\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\n\t\tconst animation = this.menuElement.animate(\n\t\t\t[\n\t\t\t\t{ opacity: 0, transform: 'scale(0.95)' },\n\t\t\t\t{ opacity: 1, transform: 'scale(1)' },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 100,\n\t\t\t\teasing: 'cubic-bezier(0.55, 0.085, 0.68, 0.53)',\n\t\t\t},\n\t\t)\n\n\t\tanimation.onfinish = () => {}\n\t}\n\n\tprivate async hideMenu() {\n\t\t// Make hideMenu async\n\t\tif (this.cleanup) {\n\t\t\tawait this.cleanup() // Await the cleanup!\n\t\t\tthis.cleanup = undefined\n\t\t}\n\t\tthis.menuElement.dataset.show = 'false'\n\n\t\tconst animation = this.menuElement.animate(\n\t\t\t[\n\t\t\t\t{ opacity: 1, transform: 'scale(1)' },\n\t\t\t\t{ opacity: 0, transform: 'scale(0.95)' },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 75,\n\t\t\t\teasing: 'cubic-bezier(0.55, 0.085, 0.68, 0.53)',\n\t\t\t},\n\t\t)\n\t\tanimation.onfinish = () => {} // No need for a promise now\n\t}\n\n\tfirstUpdated(): void {\n\t\tfromEvent(this.buttonElement, 'click')\n\t\t\t.pipe(\n\t\t\t\ttap(e => e.stopPropagation()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showMenu()\n\t\t\t})\n\n\t\tfromEvent(this, 'schmancy-menu-item-click')\n\t\t\t.pipe(\n\t\t\t\ttap(e => e.stopPropagation()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.hideMenu()\n\t\t\t})\n\n\t\tfromEvent(document, 'click')\n\t\t\t.pipe(\n\t\t\t\tfilter((e: Event) => !this.contains(e.target as Node)),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\ttap(() => {\n\t\t\t\t\tif (this.menuElement.dataset.show === 'true') {\n\t\t\t\t\t\tthis.hideMenu()\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<slot name=\"button\">\n\t\t\t\t<schmancy-icon-button> more_vert </schmancy-icon-button>\n\t\t\t</slot>\n\t\t\t<ul\n\t\t\t\tid=\"menu\"\n\t\t\t\tclass=\"absolute z-50 border-outlineVariant rounded-md min-w-[160px] max-w-[320px] w-max bg-surface-default max-h-[90vh] shadow-1 overflow-y-auto\"\n\t\t\t\trole=\"menu\"\n\t\t\t\taria-orientation=\"vertical\"\n\t\t\t\taria-labelledby=\"options-menu-4-button\"\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</ul>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu': SchmancyMenu\n\t}\n}\n"],"names":["SchmancyMenuItem","$LitElement","css","super","connectedCallback","fromEvent","this","pipe","takeUntil","disconnecting","subscribe","e","stopPropagation","dispatchEvent","CustomEvent","bubbles","composed","html","customElement","SchmancyMenu","TailwindElement","offset","flip","shift","padding","size","apply","availableHeight","elements","floating","style","maxHeight","updatePosition","buttonElement","menuElement","computePosition","placement","middleware","getMiddleware","then","x","y","Object","assign","left","top","dataset","show","cleanup","autoUpdate","strategy","position","animate","opacity","transform","duration","easing","onfinish","tap","showMenu","hideMenu","document","filter","contains","target","__decorateClass","queryAssignedElements","flatten","slot","prototype","query"],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ import { fromEvent as l, takeUntil as r, tap as c, filter as f } from "rxjs";
2
+ import "lit/directives/class-map.js";
3
+ import "lit/directives/style-map.js";
4
+ import { $ as g } from "./litElement.mixin-pfcnUcRO.js";
5
+ import { T as E } from "./tailwind.mixin-D4STgS5j.js";
6
+ import { css as d, html as b } from "lit";
7
+ import { customElement as y, queryAssignedElements as w, query as v } from "lit/decorators.js";
8
+ import { offset as x, flip as k, shift as M, size as P, computePosition as p, autoUpdate as O } from "@floating-ui/dom";
9
+ var j = Object.getOwnPropertyDescriptor;
10
+ let h = class extends g(d`
11
+ :host {
12
+ display: block;
13
+ }
14
+ `) {
15
+ connectedCallback() {
16
+ super.connectedCallback(), l(this, "click").pipe(r(this.disconnecting)).subscribe((t) => {
17
+ t.stopPropagation(), this.dispatchEvent(new CustomEvent("schmancy-menu-item-click", { bubbles: !0, composed: !0 }));
18
+ });
19
+ }
20
+ render() {
21
+ return b`
22
+ <schmancy-list-item>
23
+ <slot></slot>
24
+ </schmancy-list-item>
25
+ `;
26
+ }
27
+ };
28
+ h = ((t, e, s, i) => {
29
+ for (var o, n = i > 1 ? void 0 : i ? j(e, s) : e, a = t.length - 1; a >= 0; a--) (o = t[a]) && (n = o(n) || n);
30
+ return n;
31
+ })([y("schmancy-menu-item")], h);
32
+ var $ = Object.defineProperty, z = Object.getOwnPropertyDescriptor, u = (t, e, s, i) => {
33
+ for (var o, n = i > 1 ? void 0 : i ? z(e, s) : e, a = t.length - 1; a >= 0; a--) (o = t[a]) && (n = (i ? o(e, s, n) : o(n)) || n);
34
+ return i && n && $(e, s, n), n;
35
+ };
36
+ let m = class extends E(d`
37
+ :host {
38
+ position: relative;
39
+ display: inline-block;
40
+ }
41
+
42
+ #menu {
43
+ display: none;
44
+ }
45
+
46
+ #menu[data-show='true'] {
47
+ display: block;
48
+ }
49
+ `) {
50
+ getMiddleware() {
51
+ return [x(5), k(), M({ padding: 5 }), P({ apply({ availableHeight: t, elements: e }) {
52
+ e.floating.style.maxHeight = `${t}px`;
53
+ } })];
54
+ }
55
+ async updatePosition() {
56
+ this.buttonElement[0] && this.menuElement && await p(this.buttonElement[0], this.menuElement, { placement: "bottom-start", middleware: this.getMiddleware() }).then(({ x: t, y: e }) => {
57
+ Object.assign(this.menuElement.style, { left: `${t}px`, top: `${e}px` });
58
+ });
59
+ }
60
+ showMenu() {
61
+ !this.buttonElement[0] || !this.menuElement || (this.menuElement.dataset.show = "true", this.cleanup = O(this.buttonElement[0], this.menuElement, () => {
62
+ p(this.buttonElement[0], this.menuElement, { placement: "bottom-start", middleware: this.getMiddleware() }).then(({ x: t, y: e, strategy: s }) => {
63
+ Object.assign(this.menuElement.style, { left: `${t}px`, top: `${e}px`, position: s });
64
+ });
65
+ }), this.menuElement.animate([{ opacity: 0, transform: "scale(0.95)" }, { opacity: 1, transform: "scale(1)" }], { duration: 100, easing: "cubic-bezier(0.55, 0.085, 0.68, 0.53)" }).onfinish = () => {
66
+ });
67
+ }
68
+ async hideMenu() {
69
+ this.cleanup && (await this.cleanup(), this.cleanup = void 0), this.menuElement.dataset.show = "false", this.menuElement.animate([{ opacity: 1, transform: "scale(1)" }, { opacity: 0, transform: "scale(0.95)" }], { duration: 75, easing: "cubic-bezier(0.55, 0.085, 0.68, 0.53)" }).onfinish = () => {
70
+ };
71
+ }
72
+ firstUpdated() {
73
+ l(this.buttonElement, "click").pipe(c((t) => t.stopPropagation()), r(this.disconnecting)).subscribe(() => {
74
+ this.showMenu();
75
+ }), l(this, "schmancy-menu-item-click").pipe(c((t) => t.stopPropagation()), r(this.disconnecting)).subscribe(() => {
76
+ this.hideMenu();
77
+ }), l(document, "click").pipe(f((t) => !this.contains(t.target)), r(this.disconnecting), c(() => {
78
+ this.menuElement.dataset.show === "true" && this.hideMenu();
79
+ })).subscribe();
80
+ }
81
+ render() {
82
+ return b`
83
+ <slot name="button">
84
+ <schmancy-icon-button> more_vert </schmancy-icon-button>
85
+ </slot>
86
+ <ul
87
+ id="menu"
88
+ class="absolute z-50 border-outlineVariant rounded-md min-w-[160px] max-w-[320px] w-max bg-surface-default max-h-[90vh] shadow-1 overflow-y-auto"
89
+ role="menu"
90
+ aria-orientation="vertical"
91
+ aria-labelledby="options-menu-4-button"
92
+ >
93
+ <slot></slot>
94
+ </ul>
95
+ `;
96
+ }
97
+ };
98
+ u([w({ flatten: !0, slot: "button" })], m.prototype, "buttonElement", 2), u([v("#menu")], m.prototype, "menuElement", 2), m = u([y("schmancy-menu")], m);
99
+ //# sourceMappingURL=menu-DilY6y1N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-DilY6y1N.js","sources":["../src/menu/menu-item.ts","../src/menu/menu.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport { fromEvent, takeUntil } from 'rxjs'\n\n@customElement('schmancy-menu-item')\nexport default class SchmancyMenuItem extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tfromEvent(this, 'click')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(e => {\n\t\t\t\te.stopPropagation()\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('schmancy-menu-item-click', {\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t}\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-list-item>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu-item': SchmancyMenuItem\n\t}\n}\n","import { autoUpdate, computePosition, flip, offset, shift, size } from '@floating-ui/dom'\nimport { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, query, queryAssignedElements } from 'lit/decorators.js'\nimport { filter, fromEvent, takeUntil, tap } from 'rxjs'\n\n@customElement('schmancy-menu')\nexport default class SchmancyMenu extends TailwindElement(css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t}\n\n\t#menu {\n\t\tdisplay: none;\n\t}\n\n\t#menu[data-show='true'] {\n\t\tdisplay: block;\n\t}\n`) {\n\t@queryAssignedElements({ flatten: true, slot: 'button' })\n\tbuttonElement!: Array<HTMLElement>\n\n\t@query('#menu') menuElement!: HTMLElement\n\n\tprivate cleanup?: any\n\n\tprivate getMiddleware() {\n\t\treturn [\n\t\t\toffset(5),\n\t\t\tflip(),\n\t\t\tshift({ padding: 5 }),\n\t\t\tsize({\n\t\t\t\tapply({ availableHeight, elements }) {\n\t\t\t\t\telements.floating.style.maxHeight = `${availableHeight}px`\n\t\t\t\t},\n\t\t\t}),\n\t\t]\n\t}\n\n\tasync updatePosition() {\n\t\tif (!this.buttonElement[0] || !this.menuElement) {\n\t\t\treturn\n\t\t}\n\n\t\tawait computePosition(this.buttonElement[0], this.menuElement, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: this.getMiddleware(),\n\t\t}).then(({ x, y }) => {\n\t\t\tObject.assign(this.menuElement.style, {\n\t\t\t\tleft: `${x}px`,\n\t\t\t\ttop: `${y}px`,\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate showMenu() {\n\t\tif (!this.buttonElement[0] || !this.menuElement) return\n\n\t\tthis.menuElement.dataset.show = 'true'\n\n\t\tthis.cleanup = autoUpdate(this.buttonElement[0], this.menuElement, () => {\n\t\t\tcomputePosition(this.buttonElement[0], this.menuElement, {\n\t\t\t\tplacement: 'bottom-start',\n\t\t\t\tmiddleware: this.getMiddleware(),\n\t\t\t}).then(({ x, y, strategy }) => {\n\t\t\t\tObject.assign(this.menuElement.style, {\n\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\ttop: `${y}px`,\n\t\t\t\t\tposition: strategy,\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\n\t\tconst animation = this.menuElement.animate(\n\t\t\t[\n\t\t\t\t{ opacity: 0, transform: 'scale(0.95)' },\n\t\t\t\t{ opacity: 1, transform: 'scale(1)' },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 100,\n\t\t\t\teasing: 'cubic-bezier(0.55, 0.085, 0.68, 0.53)',\n\t\t\t},\n\t\t)\n\n\t\tanimation.onfinish = () => {}\n\t}\n\n\tprivate async hideMenu() {\n\t\t// Make hideMenu async\n\t\tif (this.cleanup) {\n\t\t\tawait this.cleanup() // Await the cleanup!\n\t\t\tthis.cleanup = undefined\n\t\t}\n\t\tthis.menuElement.dataset.show = 'false'\n\n\t\tconst animation = this.menuElement.animate(\n\t\t\t[\n\t\t\t\t{ opacity: 1, transform: 'scale(1)' },\n\t\t\t\t{ opacity: 0, transform: 'scale(0.95)' },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 75,\n\t\t\t\teasing: 'cubic-bezier(0.55, 0.085, 0.68, 0.53)',\n\t\t\t},\n\t\t)\n\t\tanimation.onfinish = () => {} // No need for a promise now\n\t}\n\n\tfirstUpdated(): void {\n\t\tfromEvent(this.buttonElement, 'click')\n\t\t\t.pipe(\n\t\t\t\ttap(e => e.stopPropagation()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showMenu()\n\t\t\t})\n\n\t\tfromEvent(this, 'schmancy-menu-item-click')\n\t\t\t.pipe(\n\t\t\t\ttap(e => e.stopPropagation()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.hideMenu()\n\t\t\t})\n\n\t\tfromEvent(document, 'click')\n\t\t\t.pipe(\n\t\t\t\tfilter((e: Event) => !this.contains(e.target as Node)),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\ttap(() => {\n\t\t\t\t\tif (this.menuElement.dataset.show === 'true') {\n\t\t\t\t\t\tthis.hideMenu()\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<slot name=\"button\">\n\t\t\t\t<schmancy-icon-button> more_vert </schmancy-icon-button>\n\t\t\t</slot>\n\t\t\t<ul\n\t\t\t\tid=\"menu\"\n\t\t\t\tclass=\"absolute z-50 border-outlineVariant rounded-md min-w-[160px] max-w-[320px] w-max bg-surface-default max-h-[90vh] shadow-1 overflow-y-auto\"\n\t\t\t\trole=\"menu\"\n\t\t\t\taria-orientation=\"vertical\"\n\t\t\t\taria-labelledby=\"options-menu-4-button\"\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</ul>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu': SchmancyMenu\n\t}\n}\n"],"names":["SchmancyMenuItem","$LitElement","css","super","connectedCallback","fromEvent","this","pipe","takeUntil","disconnecting","subscribe","e","stopPropagation","dispatchEvent","CustomEvent","bubbles","composed","render","html","customElement","SchmancyMenu","TailwindElement","getMiddleware","offset","flip","shift","padding","size","availableHeight","elements","floating","style","maxHeight","updatePosition","buttonElement","menuElement","computePosition","placement","middleware","then","x","y","Object","assign","left","top","dataset","show","cleanup","autoUpdate","strategy","position","animate","opacity","transform","duration","easing","onfinish","firstUpdated","tap","showMenu","hideMenu","document","filter","contains","target","__decorateClass","queryAssignedElements","flatten","slot","prototype","query"],"mappings":"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"}
package/dist/menu.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";require("./menu-qiBmvTtT.cjs");
1
+ "use strict";require("./menu-DS5Lkay4.cjs");
2
2
  //# sourceMappingURL=menu.cjs.map
package/dist/menu.js CHANGED
@@ -1,2 +1,2 @@
1
- import "./menu-Cpld82tG.js";
1
+ import "./menu-DilY6y1N.js";
2
2
  //# sourceMappingURL=menu.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./teleport.component-DIFVEO4o.cjs");exports.$drawer=e.$drawer,Object.defineProperty(exports,"SchmancyDrawerAppbar",{enumerable:!0,get:()=>e.SchmancyDrawerAppbar}),exports.SchmancyDrawerNavbarMode=e.SchmancyDrawerNavbarMode,exports.SchmancyDrawerNavbarState=e.SchmancyDrawerNavbarState,Object.defineProperty(exports,"SchmancyNavigationDrawer",{enumerable:!0,get:()=>e.SchmancyNavigationDrawer}),Object.defineProperty(exports,"SchmancyNavigationDrawerContent",{enumerable:!0,get:()=>e.SchmancyNavigationDrawerContent}),Object.defineProperty(exports,"SchmancyNavigationDrawerSidebar",{enumerable:!0,get:()=>e.SchmancyNavigationDrawerSidebar}),exports.schmancyNavDrawer=e.schmancyNavDrawer;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./teleport.component-DbLxhqqJ.cjs");exports.$drawer=e.$drawer,Object.defineProperty(exports,"SchmancyDrawerAppbar",{enumerable:!0,get:()=>e.SchmancyDrawerAppbar}),exports.SchmancyDrawerNavbarMode=e.SchmancyDrawerNavbarMode,exports.SchmancyDrawerNavbarState=e.SchmancyDrawerNavbarState,Object.defineProperty(exports,"SchmancyNavigationDrawer",{enumerable:!0,get:()=>e.SchmancyNavigationDrawer}),Object.defineProperty(exports,"SchmancyNavigationDrawerContent",{enumerable:!0,get:()=>e.SchmancyNavigationDrawerContent}),Object.defineProperty(exports,"SchmancyNavigationDrawerSidebar",{enumerable:!0,get:()=>e.SchmancyNavigationDrawerSidebar}),exports.schmancyNavDrawer=e.schmancyNavDrawer;
2
2
  //# sourceMappingURL=nav-drawer.cjs.map
@@ -1,4 +1,4 @@
1
- import { $ as c, i as e, k as n, l as m, m as s, j as h, n as i, h as t } from "./teleport.component-a21lBq6W.js";
1
+ import { $ as c, i as e, k as n, l as m, m as s, j as h, n as i, h as t } from "./teleport.component-lGN5dIBu.js";
2
2
  export {
3
3
  c as $drawer,
4
4
  e as SchmancyDrawerAppbar,
@@ -1,4 +1,4 @@
1
- "use strict";const s=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const w=require("./tailwind.mixin-CJgIYh7g.cjs"),g=require("lit"),r=require("lit/decorators.js"),E=require("./litElement.mixin-RgeLRf4d.cjs");var S=Object.defineProperty,k=Object.getOwnPropertyDescriptor,f=(t,e,i,o)=>{for(var c,n=o>1?void 0:o?k(e,i):e,l=t.length-1;l>=0;l--)(c=t[l])&&(n=(o?c(e,i,n):c(n))||n);return o&&n&&S(e,i,n),n};let v=class extends w.TailwindElement(){render(){const t={absolute:this.title.length===0,relative:this.title.length>0};return g.html`
1
+ "use strict";const s=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const w=require("./tailwind.mixin-CJgIYh7g.cjs"),b=require("lit"),a=require("lit/decorators.js"),E=require("./litElement.mixin-RgeLRf4d.cjs"),S=require("lit/directives/when.js");var k=Object.defineProperty,x=Object.getOwnPropertyDescriptor,g=(t,e,i,o)=>{for(var c,n=o>1?void 0:o?x(e,i):e,l=t.length-1;l>=0;l--)(c=t[l])&&(n=(o?c(e,i,n):c(n))||n);return o&&n&&k(e,i,n),n};let v=class extends w.TailwindElement(){render(){const t={absolute:this.title.length===0,relative:this.title.length>0};return b.html`
2
2
  <schmancy-grid class="${this.classMap(t)}" align="center" justify="stretch" cols="auto 1fr auto">
3
3
  <slot name="back">
4
4
  <schmancy-button
@@ -16,24 +16,28 @@
16
16
  </schmancy-icon-button>
17
17
  </slot>
18
18
  </schmancy-grid>
19
- `}};f([r.property()],v.prototype,"title",2),v=f([r.customElement("schmancy-sheet-header")],v);var b=(t=>(t.Side="side",t.Bottom="bottom",t.BottomCenter="bottom-center",t.TopRight="top-right",t.BottomRight="bottom-right",t))(b||{});const m="are-you-there-sheet",y="yes-here",u=new class{constructor(){this.bottomSheet=new s.Subject,this.$dismiss=new s.Subject,this.bottomSheet.pipe(s.switchMap(t=>s.forkJoin([s.fromEvent(window,y).pipe(s.takeUntil(s.timer(0)),s.map(e=>e.detail.sheet),s.defaultIfEmpty(void 0)),s.of(t).pipe(s.tap(()=>{window.dispatchEvent(new CustomEvent(m,{detail:{uid:t.uid??t.component.tagName}}))}))])),s.map(([t,e])=>{t||(t=document.createElement("schmancy-sheet"),document.body.appendChild(t)),t.setAttribute("uid",e.uid??e.component.tagName);const i=e.position||(window.innerWidth>=768?"side":"bottom");return t.setAttribute("position",i),t.setAttribute("allowOverlyDismiss",e.allowOverlyDismiss===!1?"false":"true"),e.title&&t.setAttribute("title",e.title),e.persist&&t.setAttribute("persist",e.persist??!1),e.header&&t.setAttribute("header",e.header),document.body.style.overflow="hidden",{target:e,sheet:t}}),s.delay(20),s.filter(({target:t,sheet:e})=>{var i,o;return!t.persist||!((o=(i=e==null?void 0:e.shadowRoot)==null?void 0:i.querySelector("slot"))!=null&&o.assignedElements().find(c=>c.tagName===t.component.tagName))||(e==null||e.setAttribute("open","true"),!1)}),s.tap(({target:t,sheet:e})=>{e==null||e.appendChild(t.component)}),s.delay(1),s.tap(({sheet:t})=>{t==null||t.setAttribute("open","true")}),s.tap(({sheet:t})=>{s.fromEvent(t,"close").pipe(s.take(1)).pipe(s.delay(300)).subscribe(e=>{const i=e.target;i!=null&&i.persist||(i==null||i.remove()),document.body.style.overflow="auto"})})).subscribe(),this.$dismiss.pipe(s.mergeMap(t=>s.forkJoin([s.fromEvent(window,y).pipe(s.takeUntil(s.timer(100)),s.map(e=>e.detail.sheet),s.defaultIfEmpty(void 0)),s.of(t).pipe(s.tap(()=>{window.dispatchEvent(new CustomEvent(m,{detail:{uid:t}}))}))])),s.tap(([t])=>{t==null||t.closeSheet()})).subscribe()}dismiss(t){this.$dismiss.next(t)}open(t){this.bottomSheet.next(t)}};var x=Object.defineProperty,C=Object.getOwnPropertyDescriptor,h=(t,e,i,o)=>{for(var c,n=o>1?void 0:o?C(e,i):e,l=t.length-1;l>=0;l--)(c=t[l])&&(n=(o?c(e,i,n):c(n))||n);return o&&n&&x(e,i,n),n};let a=class extends E.$LitElement(":host{--overlay-color: var(--schmancy-sys-color-surface-dim);--transition-duration: .2s;--sheet-radius: 0;--max-height: 100vh}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;visibility:visible;transition:visibility var(--transition-duration) ease-in-out}.sheet[aria-hidden=true]{visibility:hidden;pointer-events:none}.sheet[aria-hidden=true] .content{transform:translateY(100%)}.sheet[aria-hidden=true] .content[data-position=side]{transform:translate(100%)}.sheet[aria-hidden=true] .overlay{opacity:0}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--overlay-color);opacity:.8;transition:opacity var(--transition-duration) ease-in-out}.content{z-index:1;transition:transform var(--transition-duration) ease-in-out;overflow:hidden}.content[data-position=side]{height:100vh;height:100%;min-width:320px;max-width:90vw;width:fit-content;margin-left:auto}.content[data-position=side] #body{max-height:100vh}.content[data-position=bottom]{width:100%;margin-top:auto;border-radius:16px 16px 0 0;max-height:100vh}.content[data-position=bottom] #body{max-height:90vh}"){constructor(){super(...arguments),this.open=!1,this.header="visible",this.position=b.Side,this.persist=!1,this.allowOverlayDismiss=!0,this.title="",this.focusAttribute="autofocus",this.lastFocusedElement=null,this.handleFocusIn=t=>{var e;(e=this.sheet)!=null&&e.contains(t.target)||this.focus()}}onOpenChange(t,e){var i;e?(this.lastFocusedElement=document.activeElement,this.addFocusTrap(),this.focus()):(this.removeFocusTrap(),(i=this.lastFocusedElement)==null||i.focus(),this.lastFocusedElement=null)}connectedCallback(){super.connectedCallback(),this.setupEventListeners()}disconnectedCallback(){super.disconnectedCallback(),this.disconnecting.next(!0)}setupEventListeners(){const t=s.fromEvent(window,"popstate").pipe(s.tap(o=>{o.preventDefault(),this.closeSheet()})),e=s.fromEvent(window,"keyup").pipe(s.tap(o=>{o.key!=="Escape"||this.sheetContainsFocus()||u.dismiss(this.uid)})),i=s.fromEvent(window,m).pipe(s.tap(o=>{o.detail.uid===this.uid&&this.announcePresence()}));s.merge(t,e,i).pipe(s.takeUntil(this.disconnecting)).subscribe()}sheetContainsFocus(){var t;return((t=this.sheet)==null?void 0:t.contains(document.activeElement))??!1}announcePresence(){this.dispatchEvent(new CustomEvent(y,{detail:{sheet:this},bubbles:!0,composed:!0}))}addFocusTrap(){document.addEventListener("focusin",this.handleFocusIn)}removeFocusTrap(){document.removeEventListener("focusin",this.handleFocusIn)}setIsSheetShown(t){var e,i;(e=this.sheet)==null||e.setAttribute("aria-hidden",String(!t)),(i=this.sheet)==null||i.setAttribute("aria-modal",String(t))}closeSheet(){this.open=!1,this.dispatchEvent(new CustomEvent("close"))}getFocusElement(){const t=`[${this.focusAttribute}]`;return this.assignedElements.find(e=>e.matches(t)||e.querySelector(t))??null}focus(){var t;(t=this.getFocusElement())==null||t.focus()}render(){return g.html`
19
+ `}};g([a.property()],v.prototype,"title",2),v=g([a.customElement("schmancy-sheet-header")],v);var f=(t=>(t.Side="side",t.Bottom="bottom",t.BottomCenter="bottom-center",t.TopRight="top-right",t.BottomRight="bottom-right",t))(f||{});const m="are-you-there-sheet",y="yes-here",u=new class{constructor(){this.bottomSheet=new s.Subject,this.$dismiss=new s.Subject,this.bottomSheet.pipe(s.switchMap(t=>s.forkJoin([s.fromEvent(window,y).pipe(s.takeUntil(s.timer(0)),s.map(e=>e.detail.sheet),s.defaultIfEmpty(void 0)),s.of(t).pipe(s.tap(()=>{window.dispatchEvent(new CustomEvent(m,{detail:{uid:t.uid??t.component.tagName}}))}))])),s.map(([t,e])=>{t||(t=document.createElement("schmancy-sheet"),document.body.appendChild(t)),t.setAttribute("uid",e.uid??e.component.tagName);const i=e.position||(window.innerWidth>=768?"side":"bottom");return t.setAttribute("position",i),t.setAttribute("allowOverlyDismiss",e.allowOverlyDismiss===!1?"false":"true"),e.title&&t.setAttribute("title",e.title),e.persist&&t.setAttribute("persist",e.persist??!1),e.header&&t.setAttribute("header",e.header),document.body.style.overflow="hidden",{target:e,sheet:t}}),s.delay(20),s.filter(({target:t,sheet:e})=>{var i,o;return!t.persist||!((o=(i=e==null?void 0:e.shadowRoot)==null?void 0:i.querySelector("slot"))!=null&&o.assignedElements().find(c=>c.tagName===t.component.tagName))||(e==null||e.setAttribute("open","true"),!1)}),s.tap(({target:t,sheet:e})=>{e==null||e.appendChild(t.component)}),s.delay(1),s.tap(({sheet:t})=>{t==null||t.setAttribute("open","true")}),s.tap(({sheet:t})=>{s.fromEvent(t,"close").pipe(s.take(1)).pipe(s.delay(300)).subscribe(e=>{const i=e.target;i!=null&&i.persist||(i==null||i.remove()),document.body.style.overflow="auto"})})).subscribe(),this.$dismiss.pipe(s.mergeMap(t=>s.forkJoin([s.fromEvent(window,y).pipe(s.takeUntil(s.timer(100)),s.map(e=>e.detail.sheet),s.defaultIfEmpty(void 0)),s.of(t).pipe(s.tap(()=>{window.dispatchEvent(new CustomEvent(m,{detail:{uid:t}}))}))])),s.tap(([t])=>{t==null||t.closeSheet()})).subscribe()}dismiss(t){this.$dismiss.next(t)}open(t){this.bottomSheet.next(t)}};var C=Object.defineProperty,F=Object.getOwnPropertyDescriptor,h=(t,e,i,o)=>{for(var c,n=o>1?void 0:o?F(e,i):e,l=t.length-1;l>=0;l--)(c=t[l])&&(n=(o?c(e,i,n):c(n))||n);return o&&n&&C(e,i,n),n};let r=class extends E.$LitElement(":host{--overlay-color: var(--schmancy-sys-color-surface-dim);--transition-duration: .2s;--sheet-radius: 0;--max-height: 100vh}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;visibility:visible;transition:visibility var(--transition-duration) ease-in-out}.sheet[aria-hidden=true]{visibility:hidden;pointer-events:none}.sheet[aria-hidden=true] .content{transform:translateY(100%)}.sheet[aria-hidden=true] .content[data-position=side]{transform:translate(100%)}.sheet[aria-hidden=true] .overlay{opacity:0}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--overlay-color);opacity:.8;transition:opacity var(--transition-duration) ease-in-out}.content{z-index:1;transition:transform var(--transition-duration) ease-in-out;overflow:hidden}.content[data-position=side]{height:100vh;height:100%;min-width:320px;max-width:90vw;width:fit-content;margin-left:auto}.content[data-position=side] #body{max-height:100vh}.content[data-position=bottom]{width:100%;margin-top:auto;border-radius:16px 16px 0 0;max-height:100vh}.content[data-position=bottom] #body{max-height:90vh}"){constructor(){super(...arguments),this.open=!1,this.header="visible",this.position=f.Side,this.persist=!1,this.allowOverlayDismiss=!0,this.title="",this.focusAttribute="autofocus",this.lastFocusedElement=null,this.handleFocusIn=t=>{var e;(e=this.sheet)!=null&&e.contains(t.target)||this.focus()}}onOpenChange(t,e){var i;e?(this.lastFocusedElement=document.activeElement,this.addFocusTrap(),this.focus()):(this.removeFocusTrap(),(i=this.lastFocusedElement)==null||i.focus(),this.lastFocusedElement=null)}connectedCallback(){super.connectedCallback(),this.setupEventListeners()}disconnectedCallback(){super.disconnectedCallback(),this.disconnecting.next(!0)}setupEventListeners(){const t=s.fromEvent(window,"popstate").pipe(s.tap(o=>{o.preventDefault(),this.closeSheet()})),e=s.fromEvent(window,"keyup").pipe(s.tap(o=>{o.key!=="Escape"||this.sheetContainsFocus()||u.dismiss(this.uid)})),i=s.fromEvent(window,m).pipe(s.tap(o=>{o.detail.uid===this.uid&&this.announcePresence()}));s.merge(t,e,i).pipe(s.takeUntil(this.disconnecting)).subscribe()}sheetContainsFocus(){var t;return((t=this.sheet)==null?void 0:t.contains(document.activeElement))??!1}announcePresence(){this.dispatchEvent(new CustomEvent(y,{detail:{sheet:this},bubbles:!0,composed:!0}))}addFocusTrap(){document.addEventListener("focusin",this.handleFocusIn)}removeFocusTrap(){document.removeEventListener("focusin",this.handleFocusIn)}setIsSheetShown(t){var e,i;(e=this.sheet)==null||e.setAttribute("aria-hidden",String(!t)),(i=this.sheet)==null||i.setAttribute("aria-modal",String(t))}closeSheet(){this.open=!1,this.dispatchEvent(new CustomEvent("close"))}getFocusElement(){const t=`[${this.focusAttribute}]`;return this.assignedElements.find(e=>e.matches(t)||e.querySelector(t))??null}focus(){var t;(t=this.getFocusElement())==null||t.focus()}render(){return b.html`
20
20
  <div class="sheet" role="dialog" aria-labelledby="sheet-title" aria-hidden=${!this.open} aria-modal=${this.open}>
21
21
  <div
22
22
  class="overlay"
23
23
  @click=${t=>{t.stopPropagation(),this.allowOverlayDismiss&&u.dismiss(this.uid)}}
24
24
  ></div>
25
- <schmancy-grid rows="auto 1fr" class="content w-full" data-position=${this.position}>
26
- <schmancy-sheet-header
27
- class="sticky top-0 z-50 w-full"
28
- @dismiss=${t=>{t.stopPropagation(),u.dismiss(this.uid)}}
29
- id="sheet-title"
30
- .hidden=${this.header==="hidden"}
31
- title=${this.title}
32
- ></schmancy-sheet-header>
25
+ <schmancy-grid
26
+ rows=${this.header==="hidden"?"1fr":"auto 1fr"}
27
+ class="content w-full"
28
+ data-position=${this.position}
29
+ >
30
+ ${S.when(this.header!=="hidden",()=>b.html`<schmancy-sheet-header
31
+ class="sticky top-0 z-50 w-full"
32
+ @dismiss=${t=>{t.stopPropagation(),u.dismiss(this.uid)}}
33
+ id="sheet-title"
34
+ title=${this.title}
35
+ ></schmancy-sheet-header>`)}
36
+
33
37
  <schmancy-surface rounded="left" fill="all" id="body" class="overflow-auto" type="surface">
34
38
  <schmancy-scroll> <slot></slot></schmancy-scroll>
35
39
  </schmancy-surface>
36
40
  </schmancy-grid>
37
41
  </div>
38
- `}};var p,d;h([r.property({type:String,reflect:!0})],a.prototype,"uid",2),h([r.property({type:Boolean,reflect:!0})],a.prototype,"open",2),h([r.property({type:String,reflect:!0})],a.prototype,"header",2),h([r.property({type:String,reflect:!0})],a.prototype,"position",2),h([r.property({type:Boolean,reflect:!0})],a.prototype,"persist",2),h([r.property({type:Boolean,reflect:!0})],a.prototype,"allowOverlayDismiss",2),h([r.property({type:String,reflect:!0})],a.prototype,"title",2),h([r.query(".sheet")],a.prototype,"sheet",2),h([r.queryAssignedElements({flatten:!0})],a.prototype,"assignedElements",2),h([r.property()],a.prototype,"focusAttribute",2),h([(p="open",(t,e)=>{const{willUpdate:i}=t;d=Object.assign({waitUntilFirstUpdate:!1},d),t.willUpdate=function(o){if(i.call(this,o),o.has(p)){const c=o.get(p),n=this[p];c!==n&&(d!=null&&d.waitUntilFirstUpdate&&!this.hasUpdated||this[e].call(this,c,n))}}})],a.prototype,"onOpenChange",1),a=h([r.customElement("schmancy-sheet")],a),exports.SchmancySheetPosition=b,exports.SheetHereMorty=y,exports.SheetWhereAreYouRicky=m,exports.sheet=u;
39
- //# sourceMappingURL=sheet-DuEDOgLy.cjs.map
42
+ `}};var p,d;h([a.property({type:String,reflect:!0})],r.prototype,"uid",2),h([a.property({type:Boolean,reflect:!0})],r.prototype,"open",2),h([a.property({type:String,reflect:!0})],r.prototype,"header",2),h([a.property({type:String,reflect:!0})],r.prototype,"position",2),h([a.property({type:Boolean,reflect:!0})],r.prototype,"persist",2),h([a.property({type:Boolean,reflect:!0})],r.prototype,"allowOverlayDismiss",2),h([a.property({type:String,reflect:!0})],r.prototype,"title",2),h([a.query(".sheet")],r.prototype,"sheet",2),h([a.queryAssignedElements({flatten:!0})],r.prototype,"assignedElements",2),h([a.property()],r.prototype,"focusAttribute",2),h([(p="open",(t,e)=>{const{willUpdate:i}=t;d=Object.assign({waitUntilFirstUpdate:!1},d),t.willUpdate=function(o){if(i.call(this,o),o.has(p)){const c=o.get(p),n=this[p];c!==n&&(d!=null&&d.waitUntilFirstUpdate&&!this.hasUpdated||this[e].call(this,c,n))}}})],r.prototype,"onOpenChange",1),r=h([a.customElement("schmancy-sheet")],r),exports.SchmancySheetPosition=f,exports.SheetHereMorty=y,exports.SheetWhereAreYouRicky=m,exports.sheet=u;
43
+ //# sourceMappingURL=sheet-BS8CLge_.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet-BS8CLge_.cjs","sources":["../src/sheet/header.ts","../src/sheet/sheet.service.ts","../src/sheet/sheet.ts","../src/sheet/hook.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n@customElement('schmancy-sheet-header')\nexport default class SchmancySheetHeader extends TailwindElement() {\n\t@property() title: string\n\trender() {\n\t\tconst classes = {\n\t\t\tabsolute: this.title.length === 0,\n\t\t\trelative: this.title.length > 0,\n\t\t}\n\t\treturn html`\n\t\t\t<schmancy-grid class=\"${this.classMap(classes)}\" align=\"center\" justify=\"stretch\" cols=\"auto 1fr auto\">\n\t\t\t\t<slot name=\"back\">\n\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"text-[24px]\">&#8592; </span>\n\t\t\t\t\t</schmancy-button>\n\t\t\t\t</slot>\n\t\t\t\t<schmancy-typography transform=\"capitalize\" type=\"headline\" token=\"lg\"> ${this.title} </schmancy-typography>\n\t\t\t\t<slot name=\"actions\">\n\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tclose\n\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t</slot>\n\t\t\t</schmancy-grid>\n\t\t`\n\t}\n}\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet-header': SchmancySheetHeader\n\t}\n}\n","import {\n\tdefaultIfEmpty,\n\tdelay,\n\tfilter,\n\tforkJoin,\n\tfromEvent,\n\tmap,\n\tmergeMap,\n\tof,\n\tSubject,\n\tswitchMap,\n\ttake,\n\ttakeUntil,\n\ttap,\n\ttimer,\n} from 'rxjs'\nimport SchmancySheet from './sheet'\n\nexport enum SchmancySheetPosition {\n\tSide = 'side',\n\tBottom = 'bottom',\n\t/**\n\t * @deprecated use bottom instead\n\t */\n\tBottomCenter = 'bottom-center',\n\t/**\n\t * @deprecated use side instead\n\t */\n\tTopRight = 'top-right',\n\t/**\n\t * @deprecated use side instead\n\t */\n\tBottomRight = 'bottom-right',\n}\n\ntype BottomSheeetTarget = {\n\tcomponent: HTMLElement\n\tuid?: string\n\tposition?: SchmancySheetPosition\n\tpersist?: boolean\n\tclose?: () => void\n\tallowOverlyDismiss?: boolean\n\ttitle?: string\n\theader?: 'hidden' | 'visible'\n}\n\n// Events for communication between bottom-sheet component and bottom-sheet.service\nexport type SheetWhereAreYouRickyEvent = CustomEvent<{\n\tuid: string\n}>\nexport const SheetWhereAreYouRicky = 'are-you-there-sheet'\n\nexport type SheetHereMortyEvent = CustomEvent<{\n\tsheet: SchmancySheet\n}>\nexport const SheetHereMorty = 'yes-here'\n\n// Function to determine the position based on screen size\nconst getPosition = (): SchmancySheetPosition => {\n\treturn window.innerWidth >= 768 ? SchmancySheetPosition.Side : SchmancySheetPosition.Bottom // Adjust 768 as needed for your breakpoint\n}\n\nclass BottomSheetService {\n\tbottomSheet = new Subject<BottomSheeetTarget>()\n\t$dismiss = new Subject<string>()\n\tconstructor() {\n\t\tthis.bottomSheet\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<SheetHereMortyEvent>(window, SheetHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(0)),\n\t\t\t\t\t\t\tmap(e => e.detail.sheet),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(target).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(SheetWhereAreYouRicky, {\n\t\t\t\t\t\t\t\t\t\tdetail: { uid: target.uid ?? target.component.tagName },\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\tmap(([sheet, target]) => {\n\t\t\t\t\tconsole.log(sheet, target)\n\t\t\t\t\tif (!sheet) {\n\t\t\t\t\t\t// if sheet is not found, create it\n\t\t\t\t\t\tsheet = document.createElement('schmancy-sheet')\n\t\t\t\t\t\tdocument.body.appendChild(sheet)\n\t\t\t\t\t}\n\t\t\t\t\tsheet.setAttribute('uid', target.uid ?? target.component.tagName)\n\n\t\t\t\t\t// **Use the dynamic position function here**\n\t\t\t\t\tconst position = target.position || getPosition() // Use target.position if it's set, otherwise determine based on screen size\n\t\t\t\t\tsheet.setAttribute('position', position)\n\n\t\t\t\t\tsheet.setAttribute('allowOverlyDismiss', target.allowOverlyDismiss === false ? 'false' : 'true')\n\t\t\t\t\ttarget.title && sheet.setAttribute('title', target.title)\n\t\t\t\t\ttarget.persist && sheet.setAttribute('persist', target.persist ?? false)\n\t\t\t\t\ttarget.header && sheet.setAttribute('header', target.header)\n\t\t\t\t\tdocument.body.style.overflow = 'hidden' // lock the scroll of the host\n\t\t\t\t\treturn { target, sheet }\n\t\t\t\t}),\n\t\t\t\tdelay(20),\n\t\t\t\tfilter(({ target, sheet }) => {\n\t\t\t\t\t// if the sheet has already the component, just show it\n\t\t\t\t\tif (\n\t\t\t\t\t\ttarget.persist &&\n\t\t\t\t\t\tsheet?.shadowRoot\n\t\t\t\t\t\t\t?.querySelector('slot')\n\t\t\t\t\t\t\t?.assignedElements()\n\t\t\t\t\t\t\t.find(e => e.tagName === target.component.tagName)\n\t\t\t\t\t) {\n\t\t\t\t\t\tsheet?.setAttribute('open', 'true')\n\t\t\t\t\t\treturn false\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true // if the sheet does not have the component, continue to the next step\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\tsheet?.appendChild(target.component)\n\t\t\t\t}),\n\t\t\t\tdelay(1),\n\t\t\t\ttap(({ sheet }) => {\n\t\t\t\t\tsheet?.setAttribute('open', 'true')\n\t\t\t\t}),\n\t\t\t\ttap(({ sheet }) => {\n\t\t\t\t\tfromEvent<CustomEvent>(sheet, 'close')\n\t\t\t\t\t\t.pipe(take(1))\n\t\t\t\t\t\t.pipe(delay(300))\n\t\t\t\t\t\t.subscribe(e => {\n\t\t\t\t\t\t\tconst target = e.target as SchmancySheet\n\t\t\t\t\t\t\tconsole.log(target)\n\n\t\t\t\t\t\t\tif (!target?.persist) target?.remove()\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'auto' // unlock the scroll of the host\n\t\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\tthis.$dismiss\n\t\t\t.pipe(\n\t\t\t\tmergeMap(uid =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<SheetHereMortyEvent>(window, SheetHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(100)), // Some people say why 10? I say why not?\n\t\t\t\t\t\t\tmap(e => e.detail.sheet),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(uid).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\twindow.dispatchEvent(new CustomEvent(SheetWhereAreYouRicky, { detail: { uid } }))\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\ttap(([sheet]) => {\n\t\t\t\t\tsheet?.closeSheet()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tdismiss(uid: string) {\n\t\tthis.$dismiss.next(uid)\n\t}\n\n\topen(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n}\nexport const sheet = new BottomSheetService()\n","import { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { fromEvent, merge, takeUntil, tap } from 'rxjs'\nimport { on } from './hook'\nimport style from './sheet.scss?inline'\nimport {\n\tSchmancySheetPosition,\n\tSheetHereMorty,\n\tSheetWhereAreYouRicky,\n\tSheetWhereAreYouRickyEvent,\n\tsheet,\n} from './sheet.service'\n\n@customElement('schmancy-sheet')\nexport default class SchmancySheet extends $LitElement(style) {\n\t@property({ type: String, reflect: true }) uid!: string\n\t@property({ type: Boolean, reflect: true }) open = false\n\t@property({ type: String, reflect: true }) header: 'hidden' | 'visible' = 'visible'\n\t@property({ type: String, reflect: true }) position: SchmancySheetPosition = SchmancySheetPosition.Side\n\t@property({ type: Boolean, reflect: true }) persist = false\n\t@property({ type: Boolean, reflect: true }) allowOverlayDismiss = true\n\t@property({ type: String, reflect: true }) title = ''\n\n\t@query('.sheet') private sheet!: HTMLElement\n\t@queryAssignedElements({ flatten: true }) private assignedElements!: HTMLElement[]\n\n\t@property() focusAttribute = 'autofocus'\n\tprivate lastFocusedElement: HTMLElement | null = null\n\n\t@on('open')\n\tonOpenChange(_oldValue: boolean, newValue: boolean) {\n\t\tif (newValue) {\n\t\t\tthis.lastFocusedElement = document.activeElement as HTMLElement\n\t\t\tthis.addFocusTrap()\n\t\t\tthis.focus()\n\t\t} else {\n\t\t\tthis.removeFocusTrap()\n\t\t\tthis.lastFocusedElement?.focus()\n\t\t\tthis.lastFocusedElement = null\n\t\t}\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupEventListeners()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\tprivate setupEventListeners() {\n\t\t// Handle browser back button\n\t\tconst popState$ = fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.closeSheet()\n\t\t\t}),\n\t\t)\n\n\t\t// Handle ESC key\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(window, 'keyup').pipe(\n\t\t\ttap(event => {\n\t\t\t\tif (event.key === 'Escape' && !this.sheetContainsFocus()) {\n\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\t// Handle inter-component communication\n\t\tconst rickyComm$ = fromEvent<SheetWhereAreYouRickyEvent>(window, SheetWhereAreYouRicky).pipe(\n\t\t\ttap(e => {\n\t\t\t\tif (e.detail.uid === this.uid) this.announcePresence()\n\t\t\t}),\n\t\t)\n\n\t\tmerge(popState$, keyUp$, rickyComm$).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\tprivate sheetContainsFocus(): boolean {\n\t\treturn this.sheet?.contains(document.activeElement) ?? false\n\t}\n\n\tprivate announcePresence() {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(SheetHereMorty, {\n\t\t\t\tdetail: { sheet: this },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate addFocusTrap() {\n\t\tdocument.addEventListener('focusin', this.handleFocusIn)\n\t}\n\n\tprivate removeFocusTrap() {\n\t\tdocument.removeEventListener('focusin', this.handleFocusIn)\n\t}\n\n\tprivate handleFocusIn = (e: Event) => {\n\t\tif (!this.sheet?.contains(e.target as Node)) {\n\t\t\tthis.focus()\n\t\t}\n\t}\n\n\tsetIsSheetShown(isShown: boolean) {\n\t\tthis.sheet?.setAttribute('aria-hidden', String(!isShown))\n\t\tthis.sheet?.setAttribute('aria-modal', String(isShown))\n\t}\n\n\tcloseSheet() {\n\t\tthis.open = false\n\t\tthis.dispatchEvent(new CustomEvent('close'))\n\t}\n\n\tprivate getFocusElement(): HTMLElement | null {\n\t\tconst selector = `[${this.focusAttribute}]`\n\t\treturn (this.assignedElements.find(el => el.matches(selector) || el.querySelector(selector)) as HTMLElement) ?? null\n\t}\n\n\toverride focus() {\n\t\tthis.getFocusElement()?.focus()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"sheet\" role=\"dialog\" aria-labelledby=\"sheet-title\" aria-hidden=${!this.open} aria-modal=${this.open}>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"overlay\"\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tif (this.allowOverlayDismiss) sheet.dismiss(this.uid)\n\t\t\t\t\t}}\n\t\t\t\t></div>\n\t\t\t\t<schmancy-grid\n\t\t\t\t\trows=${this.header === 'hidden' ? '1fr' : 'auto 1fr'}\n\t\t\t\t\tclass=\"content w-full\"\n\t\t\t\t\tdata-position=${this.position}\n\t\t\t\t>\n\t\t\t\t\t${when(\n\t\t\t\t\t\tthis.header !== 'hidden',\n\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\thtml`<schmancy-sheet-header\n\t\t\t\t\t\t\t\tclass=\"sticky top-0 z-50 w-full\"\n\t\t\t\t\t\t\t\t@dismiss=${(e: CustomEvent) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tid=\"sheet-title\"\n\t\t\t\t\t\t\t\ttitle=${this.title}\n\t\t\t\t\t\t\t></schmancy-sheet-header>`,\n\t\t\t\t\t)}\n\n\t\t\t\t\t<schmancy-surface rounded=\"left\" fill=\"all\" id=\"body\" class=\"overflow-auto\" type=\"surface\">\n\t\t\t\t\t\t<schmancy-scroll> <slot></slot></schmancy-scroll>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</schmancy-grid>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet': SchmancySheet\n\t}\n}\n","// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n//\ninterface WatchOptions {\n\twaitUntilFirstUpdate?: boolean\n}\n\nexport function on(propName: string, options?: WatchOptions) {\n\treturn (protoOrDescriptor: any, name: string): any => {\n\t\tconst { willUpdate } = protoOrDescriptor\n\n\t\toptions = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions\n\n\t\tprotoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {\n\t\t\twillUpdate.call(this, changedProps)\n\n\t\t\tif (changedProps.has(propName)) {\n\t\t\t\tconst oldValue = changedProps.get(propName)\n\t\t\t\tconst newValue = this[propName]\n\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tif (!options?.waitUntilFirstUpdate || this.hasUpdated) {\n\t\t\t\t\t\tthis[name].call(this, oldValue, newValue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["SchmancySheetHeader","TailwindElement","render","classes","absolute","this","title","length","relative","html","classMap","dispatchEvent","CustomEvent","bubbles","composed","__decorateClass","property","prototype","customElement","SchmancySheetPosition","SheetWhereAreYouRicky","SheetHereMorty","sheet","constructor","bottomSheet","Subject","$dismiss","pipe","switchMap","forkJoin","fromEvent","window","takeUntil","timer","map","e","detail","defaultIfEmpty","of","target","tap","uid","component","tagName","document","createElement","body","appendChild","setAttribute","position","innerWidth","allowOverlyDismiss","persist","header","style","overflow","delay","filter","shadowRoot","querySelector","assignedElements","find","take","subscribe","remove","mergeMap","closeSheet","next","SchmancySheet","$LitElement","super","arguments","open","Side","allowOverlayDismiss","focusAttribute","lastFocusedElement","handleFocusIn","contains","focus","_oldValue","newValue","activeElement","addFocusTrap","removeFocusTrap","connectedCallback","setupEventListeners","disconnectedCallback","disconnecting","popState$","preventDefault","keyUp$","event","key","sheetContainsFocus","dismiss","rickyComm$","announcePresence","merge","addEventListener","removeEventListener","isShown","String","selector","el","matches","getFocusElement","stopPropagation","when","propName","options","type","reflect","Boolean","query","queryAssignedElements","flatten","protoOrDescriptor","name","willUpdate","Object","assign","waitUntilFirstUpdate","changedProps","call","has","oldValue","get","hasUpdated"],"mappings":"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"}
@@ -1,18 +1,19 @@
1
- import { Subject as E, switchMap as D, forkJoin as x, fromEvent as d, of as S, takeUntil as f, timer as C, map as m, defaultIfEmpty as F, tap as h, delay as y, filter as U, take as j, mergeMap as P, merge as B } from "rxjs";
1
+ import { Subject as x, switchMap as D, forkJoin as S, fromEvent as d, of as C, takeUntil as f, timer as F, map as m, defaultIfEmpty as $, tap as h, delay as y, filter as U, take as j, mergeMap as P, merge as B } from "rxjs";
2
2
  import "lit/directives/class-map.js";
3
3
  import "lit/directives/style-map.js";
4
4
  import { T } from "./tailwind.mixin-D4STgS5j.js";
5
- import { html as $ } from "lit";
6
- import { property as c, customElement as O, query as z, queryAssignedElements as I } from "lit/decorators.js";
7
- import { $ as q } from "./litElement.mixin-pfcnUcRO.js";
8
- var L = Object.defineProperty, N = Object.getOwnPropertyDescriptor, k = (t, e, s, i) => {
9
- for (var a, o = i > 1 ? void 0 : i ? N(e, s) : e, l = t.length - 1; l >= 0; l--) (a = t[l]) && (o = (i ? a(e, s, o) : a(o)) || o);
10
- return i && o && L(e, s, o), o;
5
+ import { html as g } from "lit";
6
+ import { property as c, customElement as A, query as z, queryAssignedElements as q } from "lit/decorators.js";
7
+ import { $ as I } from "./litElement.mixin-pfcnUcRO.js";
8
+ import { when as L } from "lit/directives/when.js";
9
+ var N = Object.defineProperty, M = Object.getOwnPropertyDescriptor, k = (t, e, s, i) => {
10
+ for (var a, o = i > 1 ? void 0 : i ? M(e, s) : e, l = t.length - 1; l >= 0; l--) (a = t[l]) && (o = (i ? a(e, s, o) : a(o)) || o);
11
+ return i && o && N(e, s, o), o;
11
12
  };
12
13
  let b = class extends T() {
13
14
  render() {
14
15
  const t = { absolute: this.title.length === 0, relative: this.title.length > 0 };
15
- return $`
16
+ return g`
16
17
  <schmancy-grid class="${this.classMap(t)}" align="center" justify="stretch" cols="auto 1fr auto">
17
18
  <slot name="back">
18
19
  <schmancy-button
@@ -37,12 +38,12 @@ let b = class extends T() {
37
38
  `;
38
39
  }
39
40
  };
40
- k([c()], b.prototype, "title", 2), b = k([O("schmancy-sheet-header")], b);
41
- var A = ((t) => (t.Side = "side", t.Bottom = "bottom", t.BottomCenter = "bottom-center", t.TopRight = "top-right", t.BottomRight = "bottom-right", t))(A || {});
42
- const g = "are-you-there-sheet", w = "yes-here", v = new class {
41
+ k([c()], b.prototype, "title", 2), b = k([A("schmancy-sheet-header")], b);
42
+ var O = ((t) => (t.Side = "side", t.Bottom = "bottom", t.BottomCenter = "bottom-center", t.TopRight = "top-right", t.BottomRight = "bottom-right", t))(O || {});
43
+ const w = "are-you-there-sheet", E = "yes-here", v = new class {
43
44
  constructor() {
44
- this.bottomSheet = new E(), this.$dismiss = new E(), this.bottomSheet.pipe(D((t) => x([d(window, w).pipe(f(C(0)), m((e) => e.detail.sheet), F(void 0)), S(t).pipe(h(() => {
45
- window.dispatchEvent(new CustomEvent(g, { detail: { uid: t.uid ?? t.component.tagName } }));
45
+ this.bottomSheet = new x(), this.$dismiss = new x(), this.bottomSheet.pipe(D((t) => S([d(window, E).pipe(f(F(0)), m((e) => e.detail.sheet), $(void 0)), C(t).pipe(h(() => {
46
+ window.dispatchEvent(new CustomEvent(w, { detail: { uid: t.uid ?? t.component.tagName } }));
46
47
  }))])), m(([t, e]) => {
47
48
  t || (t = document.createElement("schmancy-sheet"), document.body.appendChild(t)), t.setAttribute("uid", e.uid ?? e.component.tagName);
48
49
  const s = e.position || (window.innerWidth >= 768 ? "side" : "bottom");
@@ -59,8 +60,8 @@ const g = "are-you-there-sheet", w = "yes-here", v = new class {
59
60
  const s = e.target;
60
61
  s != null && s.persist || (s == null || s.remove()), document.body.style.overflow = "auto";
61
62
  });
62
- })).subscribe(), this.$dismiss.pipe(P((t) => x([d(window, w).pipe(f(C(100)), m((e) => e.detail.sheet), F(void 0)), S(t).pipe(h(() => {
63
- window.dispatchEvent(new CustomEvent(g, { detail: { uid: t } }));
63
+ })).subscribe(), this.$dismiss.pipe(P((t) => S([d(window, E).pipe(f(F(100)), m((e) => e.detail.sheet), $(void 0)), C(t).pipe(h(() => {
64
+ window.dispatchEvent(new CustomEvent(w, { detail: { uid: t } }));
64
65
  }))])), h(([t]) => {
65
66
  t == null || t.closeSheet();
66
67
  })).subscribe();
@@ -72,13 +73,13 @@ const g = "are-you-there-sheet", w = "yes-here", v = new class {
72
73
  this.bottomSheet.next(t);
73
74
  }
74
75
  }();
75
- var M = Object.defineProperty, R = Object.getOwnPropertyDescriptor, r = (t, e, s, i) => {
76
- for (var a, o = i > 1 ? void 0 : i ? R(e, s) : e, l = t.length - 1; l >= 0; l--) (a = t[l]) && (o = (i ? a(e, s, o) : a(o)) || o);
77
- return i && o && M(e, s, o), o;
76
+ var R = Object.defineProperty, J = Object.getOwnPropertyDescriptor, r = (t, e, s, i) => {
77
+ for (var a, o = i > 1 ? void 0 : i ? J(e, s) : e, l = t.length - 1; l >= 0; l--) (a = t[l]) && (o = (i ? a(e, s, o) : a(o)) || o);
78
+ return i && o && R(e, s, o), o;
78
79
  };
79
- let n = class extends q(":host{--overlay-color: var(--schmancy-sys-color-surface-dim);--transition-duration: .2s;--sheet-radius: 0;--max-height: 100vh}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;visibility:visible;transition:visibility var(--transition-duration) ease-in-out}.sheet[aria-hidden=true]{visibility:hidden;pointer-events:none}.sheet[aria-hidden=true] .content{transform:translateY(100%)}.sheet[aria-hidden=true] .content[data-position=side]{transform:translate(100%)}.sheet[aria-hidden=true] .overlay{opacity:0}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--overlay-color);opacity:.8;transition:opacity var(--transition-duration) ease-in-out}.content{z-index:1;transition:transform var(--transition-duration) ease-in-out;overflow:hidden}.content[data-position=side]{height:100vh;height:100%;min-width:320px;max-width:90vw;width:fit-content;margin-left:auto}.content[data-position=side] #body{max-height:100vh}.content[data-position=bottom]{width:100%;margin-top:auto;border-radius:16px 16px 0 0;max-height:100vh}.content[data-position=bottom] #body{max-height:90vh}") {
80
+ let n = class extends I(":host{--overlay-color: var(--schmancy-sys-color-surface-dim);--transition-duration: .2s;--sheet-radius: 0;--max-height: 100vh}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;visibility:visible;transition:visibility var(--transition-duration) ease-in-out}.sheet[aria-hidden=true]{visibility:hidden;pointer-events:none}.sheet[aria-hidden=true] .content{transform:translateY(100%)}.sheet[aria-hidden=true] .content[data-position=side]{transform:translate(100%)}.sheet[aria-hidden=true] .overlay{opacity:0}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--overlay-color);opacity:.8;transition:opacity var(--transition-duration) ease-in-out}.content{z-index:1;transition:transform var(--transition-duration) ease-in-out;overflow:hidden}.content[data-position=side]{height:100vh;height:100%;min-width:320px;max-width:90vw;width:fit-content;margin-left:auto}.content[data-position=side] #body{max-height:100vh}.content[data-position=bottom]{width:100%;margin-top:auto;border-radius:16px 16px 0 0;max-height:100vh}.content[data-position=bottom] #body{max-height:90vh}") {
80
81
  constructor() {
81
- super(...arguments), this.open = !1, this.header = "visible", this.position = A.Side, this.persist = !1, this.allowOverlayDismiss = !0, this.title = "", this.focusAttribute = "autofocus", this.lastFocusedElement = null, this.handleFocusIn = (t) => {
82
+ super(...arguments), this.open = !1, this.header = "visible", this.position = O.Side, this.persist = !1, this.allowOverlayDismiss = !0, this.title = "", this.focusAttribute = "autofocus", this.lastFocusedElement = null, this.handleFocusIn = (t) => {
82
83
  var e;
83
84
  (e = this.sheet) != null && e.contains(t.target) || this.focus();
84
85
  };
@@ -98,7 +99,7 @@ let n = class extends q(":host{--overlay-color: var(--schmancy-sys-color-surface
98
99
  i.preventDefault(), this.closeSheet();
99
100
  })), e = d(window, "keyup").pipe(h((i) => {
100
101
  i.key !== "Escape" || this.sheetContainsFocus() || v.dismiss(this.uid);
101
- })), s = d(window, g).pipe(h((i) => {
102
+ })), s = d(window, w).pipe(h((i) => {
102
103
  i.detail.uid === this.uid && this.announcePresence();
103
104
  }));
104
105
  B(t, e, s).pipe(f(this.disconnecting)).subscribe();
@@ -108,7 +109,7 @@ let n = class extends q(":host{--overlay-color: var(--schmancy-sys-color-surface
108
109
  return ((t = this.sheet) == null ? void 0 : t.contains(document.activeElement)) ?? !1;
109
110
  }
110
111
  announcePresence() {
111
- this.dispatchEvent(new CustomEvent(w, { detail: { sheet: this }, bubbles: !0, composed: !0 }));
112
+ this.dispatchEvent(new CustomEvent(E, { detail: { sheet: this }, bubbles: !0, composed: !0 }));
112
113
  }
113
114
  addFocusTrap() {
114
115
  document.addEventListener("focusin", this.handleFocusIn);
@@ -132,7 +133,7 @@ let n = class extends q(":host{--overlay-color: var(--schmancy-sys-color-surface
132
133
  (t = this.getFocusElement()) == null || t.focus();
133
134
  }
134
135
  render() {
135
- return $`
136
+ return g`
136
137
  <div class="sheet" role="dialog" aria-labelledby="sheet-title" aria-hidden=${!this.open} aria-modal=${this.open}>
137
138
  <div
138
139
  class="overlay"
@@ -140,16 +141,20 @@ let n = class extends q(":host{--overlay-color: var(--schmancy-sys-color-surface
140
141
  t.stopPropagation(), this.allowOverlayDismiss && v.dismiss(this.uid);
141
142
  }}
142
143
  ></div>
143
- <schmancy-grid rows="auto 1fr" class="content w-full" data-position=${this.position}>
144
- <schmancy-sheet-header
145
- class="sticky top-0 z-50 w-full"
146
- @dismiss=${(t) => {
144
+ <schmancy-grid
145
+ rows=${this.header === "hidden" ? "1fr" : "auto 1fr"}
146
+ class="content w-full"
147
+ data-position=${this.position}
148
+ >
149
+ ${L(this.header !== "hidden", () => g`<schmancy-sheet-header
150
+ class="sticky top-0 z-50 w-full"
151
+ @dismiss=${(t) => {
147
152
  t.stopPropagation(), v.dismiss(this.uid);
148
153
  }}
149
- id="sheet-title"
150
- .hidden=${this.header === "hidden"}
151
- title=${this.title}
152
- ></schmancy-sheet-header>
154
+ id="sheet-title"
155
+ title=${this.title}
156
+ ></schmancy-sheet-header>`)}
157
+
153
158
  <schmancy-surface rounded="left" fill="all" id="body" class="overflow-auto" type="surface">
154
159
  <schmancy-scroll> <slot></slot></schmancy-scroll>
155
160
  </schmancy-surface>
@@ -159,7 +164,7 @@ let n = class extends q(":host{--overlay-color: var(--schmancy-sys-color-surface
159
164
  }
160
165
  };
161
166
  var u, p;
162
- r([c({ type: String, reflect: !0 })], n.prototype, "uid", 2), r([c({ type: Boolean, reflect: !0 })], n.prototype, "open", 2), r([c({ type: String, reflect: !0 })], n.prototype, "header", 2), r([c({ type: String, reflect: !0 })], n.prototype, "position", 2), r([c({ type: Boolean, reflect: !0 })], n.prototype, "persist", 2), r([c({ type: Boolean, reflect: !0 })], n.prototype, "allowOverlayDismiss", 2), r([c({ type: String, reflect: !0 })], n.prototype, "title", 2), r([z(".sheet")], n.prototype, "sheet", 2), r([I({ flatten: !0 })], n.prototype, "assignedElements", 2), r([c()], n.prototype, "focusAttribute", 2), r([(u = "open", (t, e) => {
167
+ r([c({ type: String, reflect: !0 })], n.prototype, "uid", 2), r([c({ type: Boolean, reflect: !0 })], n.prototype, "open", 2), r([c({ type: String, reflect: !0 })], n.prototype, "header", 2), r([c({ type: String, reflect: !0 })], n.prototype, "position", 2), r([c({ type: Boolean, reflect: !0 })], n.prototype, "persist", 2), r([c({ type: Boolean, reflect: !0 })], n.prototype, "allowOverlayDismiss", 2), r([c({ type: String, reflect: !0 })], n.prototype, "title", 2), r([z(".sheet")], n.prototype, "sheet", 2), r([q({ flatten: !0 })], n.prototype, "assignedElements", 2), r([c()], n.prototype, "focusAttribute", 2), r([(u = "open", (t, e) => {
163
168
  const { willUpdate: s } = t;
164
169
  p = Object.assign({ waitUntilFirstUpdate: !1 }, p), t.willUpdate = function(i) {
165
170
  if (s.call(this, i), i.has(u)) {
@@ -167,11 +172,11 @@ r([c({ type: String, reflect: !0 })], n.prototype, "uid", 2), r([c({ type: Boole
167
172
  a !== o && (p != null && p.waitUntilFirstUpdate && !this.hasUpdated || this[e].call(this, a, o));
168
173
  }
169
174
  };
170
- })], n.prototype, "onOpenChange", 1), n = r([O("schmancy-sheet")], n);
175
+ })], n.prototype, "onOpenChange", 1), n = r([A("schmancy-sheet")], n);
171
176
  export {
172
- A as S,
173
- g as a,
174
- w as b,
177
+ O as S,
178
+ w as a,
179
+ E as b,
175
180
  v as s
176
181
  };
177
- //# sourceMappingURL=sheet-X4wSUqXf.js.map
182
+ //# sourceMappingURL=sheet-QdCPv8wr.js.map