@jsekulowicz/ds-components 0.9.13 → 0.11.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.
- package/custom-elements.json +323 -10
- package/dist/define.d.ts +1 -0
- package/dist/define.d.ts.map +1 -1
- package/dist/define.js +1 -0
- package/dist/define.js.map +1 -1
- package/dist/molecules/dialog/dialog.styles.d.ts.map +1 -1
- package/dist/molecules/dialog/dialog.styles.js +64 -13
- package/dist/molecules/dialog/dialog.styles.js.map +1 -1
- package/dist/molecules/drawer/define.d.ts +8 -0
- package/dist/molecules/drawer/define.d.ts.map +1 -0
- package/dist/molecules/drawer/define.js +6 -0
- package/dist/molecules/drawer/define.js.map +1 -0
- package/dist/molecules/drawer/drawer.d.ts +37 -0
- package/dist/molecules/drawer/drawer.d.ts.map +1 -0
- package/dist/molecules/drawer/drawer.js +144 -0
- package/dist/molecules/drawer/drawer.js.map +1 -0
- package/dist/molecules/drawer/drawer.styles.d.ts +2 -0
- package/dist/molecules/drawer/drawer.styles.d.ts.map +1 -0
- package/dist/molecules/drawer/drawer.styles.js +165 -0
- package/dist/molecules/drawer/drawer.styles.js.map +1 -0
- package/dist/molecules/drawer/index.d.ts +2 -0
- package/dist/molecules/drawer/index.d.ts.map +1 -0
- package/dist/molecules/drawer/index.js +2 -0
- package/dist/molecules/drawer/index.js.map +1 -0
- package/dist/templates/page-shell/page-shell.d.ts +6 -5
- package/dist/templates/page-shell/page-shell.d.ts.map +1 -1
- package/dist/templates/page-shell/page-shell.js +40 -47
- package/dist/templates/page-shell/page-shell.js.map +1 -1
- package/dist/templates/page-shell/page-shell.styles.d.ts.map +1 -1
- package/dist/templates/page-shell/page-shell.styles.js +12 -73
- package/dist/templates/page-shell/page-shell.styles.js.map +1 -1
- package/package.json +8 -1
package/custom-elements.json
CHANGED
|
@@ -12289,7 +12289,7 @@
|
|
|
12289
12289
|
{
|
|
12290
12290
|
"kind": "variable",
|
|
12291
12291
|
"name": "dialogStyles",
|
|
12292
|
-
"default": "css` :host { display: contents; } dialog { padding: 0; border: 0; background: transparent; color: inherit; width: 100
|
|
12292
|
+
"default": "css` /* @property registration so the scroll-driven keyframes can interpolate these as colors. */ @property --ds-dialog-body-top-fade { syntax: '<color>'; inherits: false; initial-value: rgb(0 0 0); } @property --ds-dialog-body-bottom-fade { syntax: '<color>'; inherits: false; initial-value: rgb(0 0 0); } :host { display: contents; } dialog { padding: 0; border: 0; background: transparent; color: inherit; width: calc(100% - var(--ds-space-4)); max-height: min(90vh, 720px); border-radius: var(--ds-radius-sm); box-shadow: var(--ds-shadow-md); overflow: visible; } /* Scope to [open] so closed dialogs stay display:none per UA. */ dialog[open] { display: flex; flex-direction: column; } :host([size='sm']) dialog { max-width: 400px; } :host([size='md']) dialog { max-width: 560px; } :host([size='lg']) dialog { max-width: 800px; } dialog::backdrop { background: rgb(15 23 42 / 0.55); } ds-card { flex: 1; min-height: 0; min-width: 0; } ds-card::part(card) { /* Match the dialog's cap explicitly; percentage heights don't resolve reliably through ds-card's display:block host, so body scroll breaks when content overflows. */ max-height: min(90vh, 720px); box-shadow: none; border-color: transparent; gap: var(--ds-space-3); } ds-card::part(body) { flex: 1; min-height: 0; overflow-x: clip; overflow-y: auto; overscroll-behavior: contain; /* Inline padding + negative margin lets focus rings on full-width children paint outside the body's clip box. */ padding-inline: var(--ds-space-2); margin-inline: calc(var(--ds-space-2) * -1); /* Scrollbar hidden; overflow is signalled by the scroll-driven fade mask defined in the keyframes below. */ scrollbar-width: none; mask-image: linear-gradient( to bottom, var(--ds-dialog-body-top-fade, rgb(0 0 0)) 0, rgb(0 0 0) var(--ds-space-6), rgb(0 0 0) calc(100% - var(--ds-space-6)), var(--ds-dialog-body-bottom-fade, rgb(0 0 0)) 100% ); animation: ds-dialog-body-scroll-fade linear; animation-timeline: scroll(self); } ds-card::part(body)::-webkit-scrollbar { display: none; } /* Top fade hidden at scroll-top, bottom fade hidden at scroll-end. Near-instant flips at 0.001% / 99.999% keep the transitions binary instead of interpolating across the scroll range. */ @keyframes ds-dialog-body-scroll-fade { 0% { --ds-dialog-body-top-fade: rgb(0 0 0); --ds-dialog-body-bottom-fade: rgb(0 0 0 / 0); } 0.001%, 99.999% { --ds-dialog-body-top-fade: rgb(0 0 0 / 0); --ds-dialog-body-bottom-fade: rgb(0 0 0 / 0); } 100% { --ds-dialog-body-top-fade: rgb(0 0 0 / 0); --ds-dialog-body-bottom-fade: rgb(0 0 0); } } .title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--ds-space-3); } .title-text { margin: 0; flex: 1; font-family: var(--ds-font-display); font-size: var(--ds-font-size-xl); font-weight: var(--ds-font-weight-semibold); letter-spacing: var(--ds-letter-spacing-display); } /* Normalise slotted headings (h1-h6) so UA defaults don't compound with .title-text styles. */ .title-text ::slotted(*) { font: inherit; margin: 0; letter-spacing: inherit; } /* Pull the close button toward the card's top-right corner; the card's own padding would otherwise indent it. */ .close-btn { margin-block-start: calc(var(--ds-space-3) * -1); margin-inline-end: calc(var(--ds-space-3) * -1); } .footer { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--ds-space-2); } `"
|
|
12293
12293
|
}
|
|
12294
12294
|
],
|
|
12295
12295
|
"exports": [
|
|
@@ -12530,6 +12530,295 @@
|
|
|
12530
12530
|
}
|
|
12531
12531
|
]
|
|
12532
12532
|
},
|
|
12533
|
+
{
|
|
12534
|
+
"kind": "javascript-module",
|
|
12535
|
+
"path": "src/molecules/drawer/define.ts",
|
|
12536
|
+
"declarations": [],
|
|
12537
|
+
"exports": [
|
|
12538
|
+
{
|
|
12539
|
+
"kind": "custom-element-definition",
|
|
12540
|
+
"name": "ds-drawer",
|
|
12541
|
+
"declaration": {
|
|
12542
|
+
"name": "DsDrawer",
|
|
12543
|
+
"module": "/src/molecules/drawer/drawer.js"
|
|
12544
|
+
}
|
|
12545
|
+
}
|
|
12546
|
+
]
|
|
12547
|
+
},
|
|
12548
|
+
{
|
|
12549
|
+
"kind": "javascript-module",
|
|
12550
|
+
"path": "src/molecules/drawer/drawer.styles.ts",
|
|
12551
|
+
"declarations": [
|
|
12552
|
+
{
|
|
12553
|
+
"kind": "variable",
|
|
12554
|
+
"name": "drawerStyles",
|
|
12555
|
+
"default": "css` /* @property registration so the scroll-driven keyframes can interpolate these as colors. */ @property --ds-drawer-body-top-fade { syntax: '<color>'; inherits: false; initial-value: rgb(0 0 0); } @property --ds-drawer-body-bottom-fade { syntax: '<color>'; inherits: false; initial-value: rgb(0 0 0); } :host { display: contents; } dialog { padding: 0; border: 0; background: transparent; color: inherit; box-shadow: var(--ds-shadow-lg); overflow: visible; height: 100vh; height: 100dvh; max-height: 100%; /* allow-discrete lets display/overlay hold their open values for the slide-in / slide-out duration. */ transition: transform var(--ds-duration-slow) var(--ds-easing-standard), display var(--ds-duration-slow) allow-discrete, overlay var(--ds-duration-slow) allow-discrete; } /* Scope to [open] so closed dialogs stay display:none per UA. */ dialog[open] { display: flex; flex-direction: column; } :host([side='start']) dialog { margin: 0; margin-inline-end: auto; transform: translateX(-100%); } :host([side='end']) dialog { margin: 0; margin-inline-start: auto; transform: translateX(100%); } :host([side='start']) dialog[open], :host([side='end']) dialog[open] { transform: translateX(0); } @starting-style { :host([side='start']) dialog[open] { transform: translateX(-100%); } :host([side='end']) dialog[open] { transform: translateX(100%); } } :host([size='sm']) dialog { width: min(20rem, 90vw); } :host([size='md']) dialog { width: min(24rem, 90vw); } :host([size='lg']) dialog { width: min(28rem, 90vw); } dialog::backdrop { background: rgb(15 23 42 / 0.55); } ds-card { flex: 1; min-height: 0; min-width: 0; } ds-card::part(card) { /* Explicit cap; percentage heights don't resolve reliably through ds-card's display:block host. */ max-height: 100vh; max-height: 100dvh; box-shadow: none; border-color: transparent; border-radius: 0; gap: var(--ds-space-3); padding: var(--ds-drawer-card-padding, var(--ds-space-6)); } ds-card::part(body) { flex: 1; min-height: 0; overflow-x: clip; overflow-y: auto; overscroll-behavior: contain; /* Inline padding + negative margin lets focus rings on full-width children paint outside the body's clip box. */ padding-inline: var(--ds-space-2); margin-inline: calc(var(--ds-space-2) * -1); scrollbar-width: none; mask-image: linear-gradient( to bottom, var(--ds-drawer-body-top-fade, rgb(0 0 0)) 0, rgb(0 0 0) var(--ds-space-6), rgb(0 0 0) calc(100% - var(--ds-space-6)), var(--ds-drawer-body-bottom-fade, rgb(0 0 0)) 100% ); animation: ds-drawer-body-scroll-fade linear; animation-timeline: scroll(self); } ds-card::part(body)::-webkit-scrollbar { display: none; } @keyframes ds-drawer-body-scroll-fade { 0% { --ds-drawer-body-top-fade: rgb(0 0 0); --ds-drawer-body-bottom-fade: rgb(0 0 0 / 0); } 0.001%, 99.999% { --ds-drawer-body-top-fade: rgb(0 0 0 / 0); --ds-drawer-body-bottom-fade: rgb(0 0 0 / 0); } 100% { --ds-drawer-body-top-fade: rgb(0 0 0 / 0); --ds-drawer-body-bottom-fade: rgb(0 0 0); } } .title-row { display: flex; align-items: center; justify-content: space-between; gap: var(--ds-space-3); background: var(--ds-drawer-title-bg, transparent); color: var(--ds-drawer-title-fg, inherit); border-bottom: 1px solid var(--ds-drawer-title-border-color, transparent); padding: var(--ds-drawer-title-padding, 0); } .title-text { margin: 0; flex: 1; font-family: var(--ds-font-display); font-size: var(--ds-font-size-xl); font-weight: var(--ds-font-weight-semibold); letter-spacing: var(--ds-letter-spacing-display); } .title-text ::slotted(*) { font: inherit; margin: 0; letter-spacing: inherit; } .close-btn { margin-block-start: calc(var(--ds-space-3) * -1); margin-inline-end: calc(var(--ds-space-3) * -1); } .close-btn::part(button) { color: var(--ds-drawer-title-fg, inherit); } .footer { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--ds-space-2); } `"
|
|
12556
|
+
}
|
|
12557
|
+
],
|
|
12558
|
+
"exports": [
|
|
12559
|
+
{
|
|
12560
|
+
"kind": "js",
|
|
12561
|
+
"name": "drawerStyles",
|
|
12562
|
+
"declaration": {
|
|
12563
|
+
"name": "drawerStyles",
|
|
12564
|
+
"module": "src/molecules/drawer/drawer.styles.ts"
|
|
12565
|
+
}
|
|
12566
|
+
}
|
|
12567
|
+
]
|
|
12568
|
+
},
|
|
12569
|
+
{
|
|
12570
|
+
"kind": "javascript-module",
|
|
12571
|
+
"path": "src/molecules/drawer/drawer.ts",
|
|
12572
|
+
"declarations": [
|
|
12573
|
+
{
|
|
12574
|
+
"kind": "class",
|
|
12575
|
+
"description": "",
|
|
12576
|
+
"name": "DsDrawer",
|
|
12577
|
+
"cssParts": [
|
|
12578
|
+
{
|
|
12579
|
+
"description": "The native `<dialog>` element.",
|
|
12580
|
+
"name": "dialog"
|
|
12581
|
+
},
|
|
12582
|
+
{
|
|
12583
|
+
"description": "The inner `ds-card` container.",
|
|
12584
|
+
"name": "card"
|
|
12585
|
+
},
|
|
12586
|
+
{
|
|
12587
|
+
"description": "The scrolling body region (forwarded from `ds-card`).",
|
|
12588
|
+
"name": "body"
|
|
12589
|
+
},
|
|
12590
|
+
{
|
|
12591
|
+
"description": "The header close button.",
|
|
12592
|
+
"name": "close-button"
|
|
12593
|
+
}
|
|
12594
|
+
],
|
|
12595
|
+
"slots": [
|
|
12596
|
+
{
|
|
12597
|
+
"description": "Heading content rendered in the header row.",
|
|
12598
|
+
"name": "title"
|
|
12599
|
+
},
|
|
12600
|
+
{
|
|
12601
|
+
"description": "Body content. Scrolls when it overflows.",
|
|
12602
|
+
"name": "default"
|
|
12603
|
+
},
|
|
12604
|
+
{
|
|
12605
|
+
"description": "Footer content, typically `<ds-button>` actions.",
|
|
12606
|
+
"name": "footer"
|
|
12607
|
+
}
|
|
12608
|
+
],
|
|
12609
|
+
"members": [
|
|
12610
|
+
{
|
|
12611
|
+
"kind": "field",
|
|
12612
|
+
"name": "open",
|
|
12613
|
+
"type": {
|
|
12614
|
+
"text": "boolean"
|
|
12615
|
+
},
|
|
12616
|
+
"default": "false",
|
|
12617
|
+
"attribute": "open",
|
|
12618
|
+
"reflects": true
|
|
12619
|
+
},
|
|
12620
|
+
{
|
|
12621
|
+
"kind": "field",
|
|
12622
|
+
"name": "label",
|
|
12623
|
+
"type": {
|
|
12624
|
+
"text": "string"
|
|
12625
|
+
},
|
|
12626
|
+
"default": "''",
|
|
12627
|
+
"attribute": "label"
|
|
12628
|
+
},
|
|
12629
|
+
{
|
|
12630
|
+
"kind": "field",
|
|
12631
|
+
"name": "dismissible",
|
|
12632
|
+
"type": {
|
|
12633
|
+
"text": "boolean"
|
|
12634
|
+
},
|
|
12635
|
+
"default": "true",
|
|
12636
|
+
"attribute": "dismissible",
|
|
12637
|
+
"reflects": true
|
|
12638
|
+
},
|
|
12639
|
+
{
|
|
12640
|
+
"kind": "field",
|
|
12641
|
+
"name": "size",
|
|
12642
|
+
"type": {
|
|
12643
|
+
"text": "DrawerSize"
|
|
12644
|
+
},
|
|
12645
|
+
"default": "'sm'",
|
|
12646
|
+
"attribute": "size",
|
|
12647
|
+
"reflects": true
|
|
12648
|
+
},
|
|
12649
|
+
{
|
|
12650
|
+
"kind": "field",
|
|
12651
|
+
"name": "side",
|
|
12652
|
+
"type": {
|
|
12653
|
+
"text": "DrawerSide"
|
|
12654
|
+
},
|
|
12655
|
+
"default": "'start'",
|
|
12656
|
+
"attribute": "side",
|
|
12657
|
+
"reflects": true
|
|
12658
|
+
},
|
|
12659
|
+
{
|
|
12660
|
+
"kind": "field",
|
|
12661
|
+
"name": "_dialogEl",
|
|
12662
|
+
"type": {
|
|
12663
|
+
"text": "HTMLDialogElement | undefined"
|
|
12664
|
+
},
|
|
12665
|
+
"privacy": "private"
|
|
12666
|
+
},
|
|
12667
|
+
{
|
|
12668
|
+
"kind": "method",
|
|
12669
|
+
"name": "show",
|
|
12670
|
+
"return": {
|
|
12671
|
+
"type": {
|
|
12672
|
+
"text": "void"
|
|
12673
|
+
}
|
|
12674
|
+
}
|
|
12675
|
+
},
|
|
12676
|
+
{
|
|
12677
|
+
"kind": "method",
|
|
12678
|
+
"name": "close",
|
|
12679
|
+
"return": {
|
|
12680
|
+
"type": {
|
|
12681
|
+
"text": "void"
|
|
12682
|
+
}
|
|
12683
|
+
},
|
|
12684
|
+
"parameters": [
|
|
12685
|
+
{
|
|
12686
|
+
"name": "returnValue",
|
|
12687
|
+
"optional": true,
|
|
12688
|
+
"type": {
|
|
12689
|
+
"text": "string"
|
|
12690
|
+
}
|
|
12691
|
+
}
|
|
12692
|
+
]
|
|
12693
|
+
},
|
|
12694
|
+
{
|
|
12695
|
+
"kind": "field",
|
|
12696
|
+
"name": "#onBackdropClick",
|
|
12697
|
+
"privacy": "private"
|
|
12698
|
+
},
|
|
12699
|
+
{
|
|
12700
|
+
"kind": "field",
|
|
12701
|
+
"name": "#onCancel",
|
|
12702
|
+
"privacy": "private"
|
|
12703
|
+
},
|
|
12704
|
+
{
|
|
12705
|
+
"kind": "field",
|
|
12706
|
+
"name": "#onNativeClose",
|
|
12707
|
+
"privacy": "private"
|
|
12708
|
+
},
|
|
12709
|
+
{
|
|
12710
|
+
"kind": "field",
|
|
12711
|
+
"name": "#onCloseButtonClick",
|
|
12712
|
+
"privacy": "private"
|
|
12713
|
+
}
|
|
12714
|
+
],
|
|
12715
|
+
"events": [
|
|
12716
|
+
{
|
|
12717
|
+
"description": "Fires after the drawer opens.",
|
|
12718
|
+
"name": "ds-open"
|
|
12719
|
+
},
|
|
12720
|
+
{
|
|
12721
|
+
"description": "Fires after the drawer closes. Detail: `{ returnValue: string }`.",
|
|
12722
|
+
"name": "ds-close"
|
|
12723
|
+
},
|
|
12724
|
+
{
|
|
12725
|
+
"description": "Fires when the drawer is dismissed via Escape or backdrop click.",
|
|
12726
|
+
"name": "ds-cancel"
|
|
12727
|
+
}
|
|
12728
|
+
],
|
|
12729
|
+
"attributes": [
|
|
12730
|
+
{
|
|
12731
|
+
"name": "open",
|
|
12732
|
+
"type": {
|
|
12733
|
+
"text": "boolean"
|
|
12734
|
+
},
|
|
12735
|
+
"default": "false",
|
|
12736
|
+
"fieldName": "open"
|
|
12737
|
+
},
|
|
12738
|
+
{
|
|
12739
|
+
"name": "label",
|
|
12740
|
+
"type": {
|
|
12741
|
+
"text": "string"
|
|
12742
|
+
},
|
|
12743
|
+
"default": "''",
|
|
12744
|
+
"fieldName": "label"
|
|
12745
|
+
},
|
|
12746
|
+
{
|
|
12747
|
+
"name": "dismissible",
|
|
12748
|
+
"type": {
|
|
12749
|
+
"text": "boolean"
|
|
12750
|
+
},
|
|
12751
|
+
"default": "true",
|
|
12752
|
+
"fieldName": "dismissible"
|
|
12753
|
+
},
|
|
12754
|
+
{
|
|
12755
|
+
"name": "size",
|
|
12756
|
+
"type": {
|
|
12757
|
+
"text": "DrawerSize"
|
|
12758
|
+
},
|
|
12759
|
+
"default": "'sm'",
|
|
12760
|
+
"fieldName": "size"
|
|
12761
|
+
},
|
|
12762
|
+
{
|
|
12763
|
+
"name": "side",
|
|
12764
|
+
"type": {
|
|
12765
|
+
"text": "DrawerSide"
|
|
12766
|
+
},
|
|
12767
|
+
"default": "'start'",
|
|
12768
|
+
"fieldName": "side"
|
|
12769
|
+
}
|
|
12770
|
+
],
|
|
12771
|
+
"superclass": {
|
|
12772
|
+
"name": "DsElement",
|
|
12773
|
+
"package": "@jsekulowicz/ds-core"
|
|
12774
|
+
},
|
|
12775
|
+
"tagName": "ds-drawer",
|
|
12776
|
+
"customElement": true,
|
|
12777
|
+
"summary": "Edge-anchored modal panel built on the native `<dialog>` element. Slides in from the inline start or end with a sticky header (title + close) and a scrolling body."
|
|
12778
|
+
}
|
|
12779
|
+
],
|
|
12780
|
+
"exports": [
|
|
12781
|
+
{
|
|
12782
|
+
"kind": "js",
|
|
12783
|
+
"name": "DsDrawer",
|
|
12784
|
+
"declaration": {
|
|
12785
|
+
"name": "DsDrawer",
|
|
12786
|
+
"module": "src/molecules/drawer/drawer.ts"
|
|
12787
|
+
}
|
|
12788
|
+
}
|
|
12789
|
+
]
|
|
12790
|
+
},
|
|
12791
|
+
{
|
|
12792
|
+
"kind": "javascript-module",
|
|
12793
|
+
"path": "src/molecules/drawer/index.ts",
|
|
12794
|
+
"declarations": [],
|
|
12795
|
+
"exports": [
|
|
12796
|
+
{
|
|
12797
|
+
"kind": "js",
|
|
12798
|
+
"name": "DsDrawer",
|
|
12799
|
+
"declaration": {
|
|
12800
|
+
"name": "DsDrawer",
|
|
12801
|
+
"module": "./drawer.js"
|
|
12802
|
+
}
|
|
12803
|
+
},
|
|
12804
|
+
{
|
|
12805
|
+
"kind": "js",
|
|
12806
|
+
"name": "DrawerSize",
|
|
12807
|
+
"declaration": {
|
|
12808
|
+
"name": "DrawerSize",
|
|
12809
|
+
"module": "./drawer.js"
|
|
12810
|
+
}
|
|
12811
|
+
},
|
|
12812
|
+
{
|
|
12813
|
+
"kind": "js",
|
|
12814
|
+
"name": "DrawerSide",
|
|
12815
|
+
"declaration": {
|
|
12816
|
+
"name": "DrawerSide",
|
|
12817
|
+
"module": "./drawer.js"
|
|
12818
|
+
}
|
|
12819
|
+
}
|
|
12820
|
+
]
|
|
12821
|
+
},
|
|
12533
12822
|
{
|
|
12534
12823
|
"kind": "javascript-module",
|
|
12535
12824
|
"path": "src/molecules/menu-button/define.ts",
|
|
@@ -14462,7 +14751,7 @@
|
|
|
14462
14751
|
{
|
|
14463
14752
|
"kind": "variable",
|
|
14464
14753
|
"name": "pageShellStyles",
|
|
14465
|
-
"default": "css` :host { --ds-page-shell-max-width:
|
|
14754
|
+
"default": "css` :host { --ds-page-shell-max-width: none; display: flex; flex-direction: column; position: relative; height: 100vh; height: 100dvh; overflow-x: clip; background: var(--ds-color-bg); color: var(--ds-color-fg); font-family: var(--ds-font-body); } header { position: sticky; top: 0; background: color-mix(in oklab, var(--ds-color-bg) 92%, transparent); backdrop-filter: blur(12px); z-index: var(--ds-z-index-sticky); } /* The header composes ds-top-bar; let the top-bar own height, padding, border-bottom, and layout. We just (a) make its background transparent so the sticky header's blurred bg shows through, and (b) constrain its inner brand + actions content to the same max-width as the shell-body below so the bar's brand left-aligns with the aside, and its actions right-align with the aside-end (or the right edge of main when no aside-end is slotted). */ .chrome { --ds-top-bar-bg: transparent; --ds-top-bar-content-max-width: var(--ds-page-shell-max-width); } /* Same treatment for a slotted ds-footer: cap its inner content to the shell-body's max-width so footer content aligns with the column above. Consumers who slot a non-ds-footer custom element can override the property themselves. */ ::slotted(ds-footer) { --ds-footer-content-max-width: var(--ds-page-shell-max-width); } footer { display: block; } .shell-body { flex: 1; width: 100%; max-width: var(--ds-page-shell-max-width); margin-inline: auto; display: grid; grid-template-columns: auto 1fr auto; min-height: 0; } :host([aside-empty]) .shell-body { grid-template-columns: 1fr auto; } :host([aside-end-empty]) .shell-body { grid-template-columns: auto 1fr; } :host([aside-empty][aside-end-empty]) .shell-body { grid-template-columns: 1fr; } aside { display: flex; overflow-x: clip; overflow-y: auto; overflow-clip-margin-inline: var(--ds-space-2); min-height: 0; scrollbar-color: var(--ds-color-fg-subtle) transparent; scrollbar-width: thin; /* No scrollbar-gutter reservation: the aside sits flush with its column edge so the consumer's <main> solely owns the gap. The scrollbar appears on demand when the aside genuinely overflows. */ } :host([aside-empty]) aside[part=\"aside\"], :host([aside-empty]) ds-drawer[part=\"aside\"] { display: none; } :host([aside-end-empty]) aside[part=\"aside-end\"] { display: none; } main { padding: var(--ds-space-5); overflow-x: clip; overflow-y: auto; overflow-clip-margin-inline: var(--ds-space-2); min-width: 0; min-height: 0; scrollbar-color: var(--ds-color-fg-subtle) transparent; scrollbar-width: thin; /* Reserve scrollbar gutters on both inline sides so the inline-start and inline-end visible empty bands stay equal in width whether the vertical scrollbar is present or not. */ scrollbar-gutter: stable both-edges; } @media (max-width: ${belowDesktopBreakpoint}) { main { padding-block: var(--ds-space-4); padding-inline: var(--ds-space-4); } } .menu-toggle { display: none; } .menu-toggle::part(button) { min-width: var(--ds-size-sm); width: var(--ds-size-sm); padding: 0; } :host([mobile-layout]) .menu-toggle { display: inline-flex; } :host([mobile-layout]) .shell-body { grid-template-columns: 1fr; } :host([mobile-layout]) aside[part=\"aside-end\"] { display: none; } :host([mobile-layout]) ds-drawer[part=\"aside\"] { /* Top-layer modal; don't reserve a grid column when closed. */ display: contents; --ds-drawer-card-padding: 0; --ds-drawer-title-padding: var(--ds-space-3) var(--ds-space-4); --ds-drawer-title-bg: var(--ds-page-shell-drawer-header-bg, transparent); --ds-drawer-title-fg: var(--ds-page-shell-drawer-header-fg, inherit); --ds-drawer-title-border-color: var(--ds-page-shell-drawer-header-border-color, transparent); } :host([mobile-layout]) ds-drawer[part=\"aside\"] ::slotted(ds-sidenav) { width: 100% !important; max-width: 100% !important; flex: 1 1 auto; min-width: 0; min-height: 0; height: auto !important; } `"
|
|
14466
14755
|
}
|
|
14467
14756
|
],
|
|
14468
14757
|
"exports": [
|
|
@@ -14486,7 +14775,7 @@
|
|
|
14486
14775
|
"name": "DsPageShell",
|
|
14487
14776
|
"cssProperties": [
|
|
14488
14777
|
{
|
|
14489
|
-
"description": "Outer cap for the shell's content column. Header inner content and the aside + main row centre at this width and align vertically. Defaults to `
|
|
14778
|
+
"description": "Outer cap for the shell's content column. Header inner content and the aside + main row centre at this width and align vertically. Defaults to `none`. Header chrome remains full-bleed.",
|
|
14490
14779
|
"name": "--ds-page-shell-max-width"
|
|
14491
14780
|
}
|
|
14492
14781
|
],
|
|
@@ -14496,7 +14785,7 @@
|
|
|
14496
14785
|
"name": "brand"
|
|
14497
14786
|
},
|
|
14498
14787
|
{
|
|
14499
|
-
"description": "Brand/logo shown
|
|
14788
|
+
"description": "Brand/logo shown in the mobile navigation drawer's title row. Falls back to the `brand` prop.",
|
|
14500
14789
|
"name": "drawer-brand"
|
|
14501
14790
|
},
|
|
14502
14791
|
{
|
|
@@ -14504,7 +14793,7 @@
|
|
|
14504
14793
|
"name": "header-actions"
|
|
14505
14794
|
},
|
|
14506
14795
|
{
|
|
14507
|
-
"description": "Primary side navigation (inline-start). When empty, the column and hamburger toggle are not rendered.",
|
|
14796
|
+
"description": "Primary side navigation (inline-start). On mobile, rendered inside a `ds-drawer` opened by the hamburger toggle. When empty, the column and hamburger toggle are not rendered.",
|
|
14508
14797
|
"name": "aside"
|
|
14509
14798
|
},
|
|
14510
14799
|
{
|
|
@@ -14548,6 +14837,15 @@
|
|
|
14548
14837
|
"default": "'Secondary navigation'",
|
|
14549
14838
|
"attribute": "end-label"
|
|
14550
14839
|
},
|
|
14840
|
+
{
|
|
14841
|
+
"kind": "field",
|
|
14842
|
+
"name": "_mobileLayout",
|
|
14843
|
+
"type": {
|
|
14844
|
+
"text": "boolean"
|
|
14845
|
+
},
|
|
14846
|
+
"privacy": "private",
|
|
14847
|
+
"default": "false"
|
|
14848
|
+
},
|
|
14551
14849
|
{
|
|
14552
14850
|
"kind": "field",
|
|
14553
14851
|
"name": "_mobileNavOpen",
|
|
@@ -14612,11 +14910,6 @@
|
|
|
14612
14910
|
"name": "#syncLayout",
|
|
14613
14911
|
"privacy": "private"
|
|
14614
14912
|
},
|
|
14615
|
-
{
|
|
14616
|
-
"kind": "field",
|
|
14617
|
-
"name": "#onDocumentKeydown",
|
|
14618
|
-
"privacy": "private"
|
|
14619
|
-
},
|
|
14620
14913
|
{
|
|
14621
14914
|
"kind": "field",
|
|
14622
14915
|
"name": "#setMobileNav",
|
|
@@ -14651,6 +14944,26 @@
|
|
|
14651
14944
|
"kind": "field",
|
|
14652
14945
|
"name": "#onFooterSlotChange",
|
|
14653
14946
|
"privacy": "private"
|
|
14947
|
+
},
|
|
14948
|
+
{
|
|
14949
|
+
"kind": "method",
|
|
14950
|
+
"name": "#renderDesktopAside",
|
|
14951
|
+
"privacy": "private",
|
|
14952
|
+
"return": {
|
|
14953
|
+
"type": {
|
|
14954
|
+
"text": "TemplateResult"
|
|
14955
|
+
}
|
|
14956
|
+
}
|
|
14957
|
+
},
|
|
14958
|
+
{
|
|
14959
|
+
"kind": "method",
|
|
14960
|
+
"name": "#renderMobileAside",
|
|
14961
|
+
"privacy": "private",
|
|
14962
|
+
"return": {
|
|
14963
|
+
"type": {
|
|
14964
|
+
"text": "TemplateResult"
|
|
14965
|
+
}
|
|
14966
|
+
}
|
|
14654
14967
|
}
|
|
14655
14968
|
],
|
|
14656
14969
|
"attributes": [
|
package/dist/define.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ import './atoms/nav-item/define.js';
|
|
|
20
20
|
import './atoms/menu/define.js';
|
|
21
21
|
import './molecules/card/define.js';
|
|
22
22
|
import './molecules/dialog/define.js';
|
|
23
|
+
import './molecules/drawer/define.js';
|
|
23
24
|
import './molecules/toast/define.js';
|
|
24
25
|
import './molecules/color-picker/define.js';
|
|
25
26
|
import './molecules/menu-button/define.js';
|
package/dist/define.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAAA,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,yBAAyB,CAAC;AACjC,OAAO,4BAA4B,CAAC;AACpC,OAAO,2BAA2B,CAAC;AACnC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,0BAA0B,CAAC;AAClC,OAAO,qCAAqC,CAAC;AAC7C,OAAO,wBAAwB,CAAC;AAChC,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AACpC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,oCAAoC,CAAC;AAC5C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,iCAAiC,CAAC;AACzC,OAAO,6BAA6B,CAAC;AACrC,OAAO,4BAA4B,CAAC;AACpC,OAAO,+BAA+B,CAAC;AACvC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,iCAAiC,CAAC"}
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAAA,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,yBAAyB,CAAC;AACjC,OAAO,4BAA4B,CAAC;AACpC,OAAO,2BAA2B,CAAC;AACnC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,0BAA0B,CAAC;AAClC,OAAO,qCAAqC,CAAC;AAC7C,OAAO,wBAAwB,CAAC;AAChC,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AACpC,OAAO,8BAA8B,CAAC;AACtC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,oCAAoC,CAAC;AAC5C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,iCAAiC,CAAC;AACzC,OAAO,6BAA6B,CAAC;AACrC,OAAO,4BAA4B,CAAC;AACpC,OAAO,+BAA+B,CAAC;AACvC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,iCAAiC,CAAC"}
|
package/dist/define.js
CHANGED
|
@@ -20,6 +20,7 @@ import './atoms/nav-item/define.js';
|
|
|
20
20
|
import './atoms/menu/define.js';
|
|
21
21
|
import './molecules/card/define.js';
|
|
22
22
|
import './molecules/dialog/define.js';
|
|
23
|
+
import './molecules/drawer/define.js';
|
|
23
24
|
import './molecules/toast/define.js';
|
|
24
25
|
import './molecules/color-picker/define.js';
|
|
25
26
|
import './molecules/menu-button/define.js';
|
package/dist/define.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAAA,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,yBAAyB,CAAC;AACjC,OAAO,4BAA4B,CAAC;AACpC,OAAO,2BAA2B,CAAC;AACnC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,0BAA0B,CAAC;AAClC,OAAO,qCAAqC,CAAC;AAC7C,OAAO,wBAAwB,CAAC;AAChC,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AACpC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,oCAAoC,CAAC;AAC5C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,iCAAiC,CAAC;AACzC,OAAO,6BAA6B,CAAC;AACrC,OAAO,4BAA4B,CAAC;AACpC,OAAO,+BAA+B,CAAC;AACvC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,iCAAiC,CAAC"}
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAAA,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,yBAAyB,CAAC;AACjC,OAAO,4BAA4B,CAAC;AACpC,OAAO,2BAA2B,CAAC;AACnC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,0BAA0B,CAAC;AAClC,OAAO,qCAAqC,CAAC;AAC7C,OAAO,wBAAwB,CAAC;AAChC,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,4BAA4B,CAAC;AACpC,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AACpC,OAAO,8BAA8B,CAAC;AACtC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,oCAAoC,CAAC;AAC5C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,iCAAiC,CAAC;AACzC,OAAO,6BAA6B,CAAC;AACrC,OAAO,4BAA4B,CAAC;AACpC,OAAO,+BAA+B,CAAC;AACvC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,iCAAiC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.styles.d.ts","sourceRoot":"","sources":["../../../src/molecules/dialog/dialog.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"dialog.styles.d.ts","sourceRoot":"","sources":["../../../src/molecules/dialog/dialog.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,yBAsIxB,CAAC"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
2
|
export const dialogStyles = css `
|
|
3
|
+
/* @property registration so the scroll-driven keyframes can
|
|
4
|
+
interpolate these as colors. */
|
|
5
|
+
@property --ds-dialog-body-top-fade {
|
|
6
|
+
syntax: '<color>';
|
|
7
|
+
inherits: false;
|
|
8
|
+
initial-value: rgb(0 0 0);
|
|
9
|
+
}
|
|
10
|
+
@property --ds-dialog-body-bottom-fade {
|
|
11
|
+
syntax: '<color>';
|
|
12
|
+
inherits: false;
|
|
13
|
+
initial-value: rgb(0 0 0);
|
|
14
|
+
}
|
|
3
15
|
:host {
|
|
4
16
|
display: contents;
|
|
5
17
|
}
|
|
@@ -8,12 +20,17 @@ export const dialogStyles = css `
|
|
|
8
20
|
border: 0;
|
|
9
21
|
background: transparent;
|
|
10
22
|
color: inherit;
|
|
11
|
-
width: 100
|
|
23
|
+
width: calc(100% - var(--ds-space-4));
|
|
12
24
|
max-height: min(90vh, 720px);
|
|
13
25
|
border-radius: var(--ds-radius-sm);
|
|
14
26
|
box-shadow: var(--ds-shadow-md);
|
|
15
27
|
overflow: visible;
|
|
16
28
|
}
|
|
29
|
+
/* Scope to [open] so closed dialogs stay display:none per UA. */
|
|
30
|
+
dialog[open] {
|
|
31
|
+
display: flex;
|
|
32
|
+
flex-direction: column;
|
|
33
|
+
}
|
|
17
34
|
:host([size='sm']) dialog {
|
|
18
35
|
max-width: 400px;
|
|
19
36
|
}
|
|
@@ -25,14 +42,17 @@ export const dialogStyles = css `
|
|
|
25
42
|
}
|
|
26
43
|
dialog::backdrop {
|
|
27
44
|
background: rgb(15 23 42 / 0.55);
|
|
28
|
-
backdrop-filter: blur(2px);
|
|
29
45
|
}
|
|
30
46
|
ds-card {
|
|
31
|
-
|
|
47
|
+
flex: 1;
|
|
48
|
+
min-height: 0;
|
|
49
|
+
min-width: 0;
|
|
32
50
|
}
|
|
33
51
|
ds-card::part(card) {
|
|
34
|
-
|
|
35
|
-
|
|
52
|
+
/* Match the dialog's cap explicitly; percentage heights don't
|
|
53
|
+
resolve reliably through ds-card's display:block host, so body
|
|
54
|
+
scroll breaks when content overflows. */
|
|
55
|
+
max-height: min(90vh, 720px);
|
|
36
56
|
box-shadow: none;
|
|
37
57
|
border-color: transparent;
|
|
38
58
|
gap: var(--ds-space-3);
|
|
@@ -42,8 +62,43 @@ export const dialogStyles = css `
|
|
|
42
62
|
min-height: 0;
|
|
43
63
|
overflow-x: clip;
|
|
44
64
|
overflow-y: auto;
|
|
65
|
+
overscroll-behavior: contain;
|
|
66
|
+
/* Inline padding + negative margin lets focus rings on full-width
|
|
67
|
+
children paint outside the body's clip box. */
|
|
45
68
|
padding-inline: var(--ds-space-2);
|
|
46
69
|
margin-inline: calc(var(--ds-space-2) * -1);
|
|
70
|
+
/* Scrollbar hidden; overflow is signalled by the scroll-driven
|
|
71
|
+
fade mask defined in the keyframes below. */
|
|
72
|
+
scrollbar-width: none;
|
|
73
|
+
mask-image: linear-gradient(
|
|
74
|
+
to bottom,
|
|
75
|
+
var(--ds-dialog-body-top-fade, rgb(0 0 0)) 0,
|
|
76
|
+
rgb(0 0 0) var(--ds-space-6),
|
|
77
|
+
rgb(0 0 0) calc(100% - var(--ds-space-6)),
|
|
78
|
+
var(--ds-dialog-body-bottom-fade, rgb(0 0 0)) 100%
|
|
79
|
+
);
|
|
80
|
+
animation: ds-dialog-body-scroll-fade linear;
|
|
81
|
+
animation-timeline: scroll(self);
|
|
82
|
+
}
|
|
83
|
+
ds-card::part(body)::-webkit-scrollbar {
|
|
84
|
+
display: none;
|
|
85
|
+
}
|
|
86
|
+
/* Top fade hidden at scroll-top, bottom fade hidden at scroll-end.
|
|
87
|
+
Near-instant flips at 0.001% / 99.999% keep the transitions
|
|
88
|
+
binary instead of interpolating across the scroll range. */
|
|
89
|
+
@keyframes ds-dialog-body-scroll-fade {
|
|
90
|
+
0% {
|
|
91
|
+
--ds-dialog-body-top-fade: rgb(0 0 0);
|
|
92
|
+
--ds-dialog-body-bottom-fade: rgb(0 0 0 / 0);
|
|
93
|
+
}
|
|
94
|
+
0.001%, 99.999% {
|
|
95
|
+
--ds-dialog-body-top-fade: rgb(0 0 0 / 0);
|
|
96
|
+
--ds-dialog-body-bottom-fade: rgb(0 0 0 / 0);
|
|
97
|
+
}
|
|
98
|
+
100% {
|
|
99
|
+
--ds-dialog-body-top-fade: rgb(0 0 0 / 0);
|
|
100
|
+
--ds-dialog-body-bottom-fade: rgb(0 0 0);
|
|
101
|
+
}
|
|
47
102
|
}
|
|
48
103
|
.title-row {
|
|
49
104
|
display: flex;
|
|
@@ -59,19 +114,15 @@ export const dialogStyles = css `
|
|
|
59
114
|
font-weight: var(--ds-font-weight-semibold);
|
|
60
115
|
letter-spacing: var(--ds-letter-spacing-display);
|
|
61
116
|
}
|
|
62
|
-
/*
|
|
63
|
-
|
|
64
|
-
vertical margins. Normalise them so 'Foo', '<h2 slot="title">Foo</h2>'
|
|
65
|
-
and '<span slot="title">Foo</span>' all render identically. */
|
|
117
|
+
/* Normalise slotted headings (h1-h6) so UA defaults don't compound
|
|
118
|
+
with .title-text styles. */
|
|
66
119
|
.title-text ::slotted(*) {
|
|
67
120
|
font: inherit;
|
|
68
121
|
margin: 0;
|
|
69
122
|
letter-spacing: inherit;
|
|
70
123
|
}
|
|
71
|
-
/* Pull the close button
|
|
72
|
-
card's
|
|
73
|
-
ds-space-6 padding. Its own visual chrome (size, hover, focus
|
|
74
|
-
ring, square shape) comes from ds-button. */
|
|
124
|
+
/* Pull the close button toward the card's top-right corner; the
|
|
125
|
+
card's own padding would otherwise indent it. */
|
|
75
126
|
.close-btn {
|
|
76
127
|
margin-block-start: calc(var(--ds-space-3) * -1);
|
|
77
128
|
margin-inline-end: calc(var(--ds-space-3) * -1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.styles.js","sourceRoot":"","sources":["../../../src/molecules/dialog/dialog.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"dialog.styles.js","sourceRoot":"","sources":["../../../src/molecules/dialog/dialog.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsI9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/molecules/drawer/define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,mBAAmB,CAAC;AAM3B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/molecules/drawer/define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,mBAAmB,CAAC;AAE3B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;IACrC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type PropertyValues, type TemplateResult } from 'lit';
|
|
2
|
+
import { DsElement } from '@jsekulowicz/ds-core';
|
|
3
|
+
import '../card/define.js';
|
|
4
|
+
import '../../atoms/button/define.js';
|
|
5
|
+
import '../../atoms/icon/icons/x-mark.js';
|
|
6
|
+
export type DrawerSize = 'sm' | 'md' | 'lg';
|
|
7
|
+
export type DrawerSide = 'start' | 'end';
|
|
8
|
+
/**
|
|
9
|
+
* @tag ds-drawer
|
|
10
|
+
* @summary Edge-anchored modal panel built on the native `<dialog>` element. Slides in from the inline start or end with a sticky header (title + close) and a scrolling body.
|
|
11
|
+
* @slot title - Heading content rendered in the header row.
|
|
12
|
+
* @slot default - Body content. Scrolls when it overflows.
|
|
13
|
+
* @slot footer - Footer content, typically `<ds-button>` actions.
|
|
14
|
+
* @csspart dialog - The native `<dialog>` element.
|
|
15
|
+
* @csspart card - The inner `ds-card` container.
|
|
16
|
+
* @csspart body - The scrolling body region (forwarded from `ds-card`).
|
|
17
|
+
* @csspart close-button - The header close button.
|
|
18
|
+
* @event ds-open - Fires after the drawer opens.
|
|
19
|
+
* @event ds-close - Fires after the drawer closes. Detail: `{ returnValue: string }`.
|
|
20
|
+
* @event ds-cancel - Fires when the drawer is dismissed via Escape or backdrop click.
|
|
21
|
+
*/
|
|
22
|
+
export declare class DsDrawer extends DsElement {
|
|
23
|
+
#private;
|
|
24
|
+
static styles: import("lit").CSSResult[];
|
|
25
|
+
open: boolean;
|
|
26
|
+
label: string;
|
|
27
|
+
dismissible: boolean;
|
|
28
|
+
size: DrawerSize;
|
|
29
|
+
side: DrawerSide;
|
|
30
|
+
private _dialogEl?;
|
|
31
|
+
show(): void;
|
|
32
|
+
close(returnValue?: string): void;
|
|
33
|
+
updated(changed: PropertyValues): void;
|
|
34
|
+
disconnectedCallback(): void;
|
|
35
|
+
render(): TemplateResult;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=drawer.d.ts.map
|