@jsekulowicz/ds-components 0.9.13 → 0.10.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 +72 -2
- 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 +164 -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 +10 -3
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%; max-height: min(90vh, 720px); border-radius: var(--ds-radius-sm); box-shadow: var(--ds-shadow-md); overflow: visible; } :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);
|
|
12292
|
+
"default": "css` /* Interpolatable colors so the scroll-driven keyframes can crossfade the gradient stops instead of jumping between values. */ @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: 100%; max-height: min(90vh, 720px); border-radius: var(--ds-radius-sm); box-shadow: var(--ds-shadow-md); overflow: visible; } /* Scope flex-column to the open state so the UA's display:none keeps the closed dialog out of layout. Without this scope, our display:flex wins unconditionally and the closed dialog renders inline alongside its opener. The flex column itself is needed so ds-card resolves a definite height from the dialog's max-height cap (percentages only resolve against an explicit parent height, not max-height) — otherwise the body never gets a height to scroll against on short viewports. */ 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) { height: 100%; max-height: 100%; 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; /* Don't chain scroll up to the page when the body reaches its top/bottom boundary or has no overflow. The dialog/drawer is modal — the page behind it shouldn't twitch when the user wheel-scrolls inside the modal. */ overscroll-behavior: contain; padding-inline: var(--ds-space-2); margin-inline: calc(var(--ds-space-2) * -1); /* Hide the native scrollbar. Overflow is indicated by a fade mask at the top and bottom of the scrollport, driven by an actual scroll-progress timeline so the fades only appear when there's content to scroll into / out of view. No padding-block buffer is needed — the top fade stays opaque (no fade) at scroll-top and only switches to transparent (fade visible) once the user has scrolled even one pixel; mirror for the bottom. */ 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; } @keyframes ds-dialog-body-scroll-fade { /* At scroll-top: keep the top stop opaque (no fade above), reveal the bottom fade so the user knows there's more below. The two near-instant transitions at 0.001% and 99.999% flip each stop on / off as soon as scroll actually progresses, so the fades are binary (present / absent), not interpolated as the user drags through the range. */ 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); } /* Slotted heading tags (h1-h6, etc.) carry UA defaults that compound on top of .title-text — a bigger font-size and large vertical margins. Normalise them so 'Foo', '<h2 slot=\"title\">Foo</h2>' and '<span slot=\"title\">Foo</span>' all render identically. */ .title-text ::slotted(*) { font: inherit; margin: 0; letter-spacing: inherit; } /* Pull the close button up and to the right so it sits near the card's top-right corner instead of indented by ds-card's full ds-space-6 padding. Its own visual chrome (size, hover, focus ring, square shape) comes from ds-button. */ .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` /* Interpolatable colors so the scroll-driven keyframes can crossfade the gradient stops instead of jumping between values. */ @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%; /* Slide in on open, slide out on close. allow-discrete lets the display/overlay properties (which can't normally transition) hold their open values for the 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 flex-column to the open state so the UA's display:none keeps the closed dialog out of layout. Same fix and rationale as ds-dialog — the flex column is needed for the body's height cap to propagate, but unscoped it makes the closed drawer render inline alongside its opener. */ 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) { height: 100%; max-height: 100%; box-shadow: none; border-color: transparent; border-radius: 0; gap: var(--ds-space-3); } ds-card::part(body) { flex: 1; min-height: 0; overflow-x: clip; overflow-y: auto; /* Don't chain scroll up to the page when the body reaches its top/bottom boundary or has no overflow. Same rationale as ds-dialog — modal surfaces shouldn't let scroll leak through. */ overscroll-behavior: contain; padding-inline: var(--ds-space-2); margin-inline: calc(var(--ds-space-2) * -1); /* Same scroll-driven fade trick as ds-dialog — see comments there. No padding-block buffer; the fades only kick in once there's actual scroll progress to drive them. */ 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: 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); } .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); } .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; } /* In mobile layout the inline-start column collapses — the drawer overlays in the top layer (via ds-drawer's native <dialog>) so it doesn't take grid space — and the inline-end column hides since v1 doesn't surface it in the drawer. */ :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\"] { /* ds-drawer is a top-layer modal; remove it from the grid so it doesn't reserve a column when closed. */ display: contents; } :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,yBAyJxB,CAAC"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
2
|
export const dialogStyles = css `
|
|
3
|
+
/* Interpolatable colors so the scroll-driven keyframes can crossfade
|
|
4
|
+
the gradient stops instead of jumping between values. */
|
|
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
|
}
|
|
@@ -14,6 +26,18 @@ export const dialogStyles = css `
|
|
|
14
26
|
box-shadow: var(--ds-shadow-md);
|
|
15
27
|
overflow: visible;
|
|
16
28
|
}
|
|
29
|
+
/* Scope flex-column to the open state so the UA's display:none
|
|
30
|
+
keeps the closed dialog out of layout. Without this scope, our
|
|
31
|
+
display:flex wins unconditionally and the closed dialog renders
|
|
32
|
+
inline alongside its opener. The flex column itself is needed so
|
|
33
|
+
ds-card resolves a definite height from the dialog's max-height
|
|
34
|
+
cap (percentages only resolve against an explicit parent height,
|
|
35
|
+
not max-height) — otherwise the body never gets a height to
|
|
36
|
+
scroll against on short viewports. */
|
|
37
|
+
dialog[open] {
|
|
38
|
+
display: flex;
|
|
39
|
+
flex-direction: column;
|
|
40
|
+
}
|
|
17
41
|
:host([size='sm']) dialog {
|
|
18
42
|
max-width: 400px;
|
|
19
43
|
}
|
|
@@ -25,10 +49,11 @@ export const dialogStyles = css `
|
|
|
25
49
|
}
|
|
26
50
|
dialog::backdrop {
|
|
27
51
|
background: rgb(15 23 42 / 0.55);
|
|
28
|
-
backdrop-filter: blur(2px);
|
|
29
52
|
}
|
|
30
53
|
ds-card {
|
|
31
|
-
|
|
54
|
+
flex: 1;
|
|
55
|
+
min-height: 0;
|
|
56
|
+
min-width: 0;
|
|
32
57
|
}
|
|
33
58
|
ds-card::part(card) {
|
|
34
59
|
height: 100%;
|
|
@@ -42,8 +67,53 @@ export const dialogStyles = css `
|
|
|
42
67
|
min-height: 0;
|
|
43
68
|
overflow-x: clip;
|
|
44
69
|
overflow-y: auto;
|
|
70
|
+
/* Don't chain scroll up to the page when the body reaches its
|
|
71
|
+
top/bottom boundary or has no overflow. The dialog/drawer is
|
|
72
|
+
modal — the page behind it shouldn't twitch when the user
|
|
73
|
+
wheel-scrolls inside the modal. */
|
|
74
|
+
overscroll-behavior: contain;
|
|
45
75
|
padding-inline: var(--ds-space-2);
|
|
46
76
|
margin-inline: calc(var(--ds-space-2) * -1);
|
|
77
|
+
/* Hide the native scrollbar. Overflow is indicated by a fade mask
|
|
78
|
+
at the top and bottom of the scrollport, driven by an actual
|
|
79
|
+
scroll-progress timeline so the fades only appear when there's
|
|
80
|
+
content to scroll into / out of view. No padding-block buffer
|
|
81
|
+
is needed — the top fade stays opaque (no fade) at scroll-top
|
|
82
|
+
and only switches to transparent (fade visible) once the user
|
|
83
|
+
has scrolled even one pixel; mirror for the bottom. */
|
|
84
|
+
scrollbar-width: none;
|
|
85
|
+
mask-image: linear-gradient(
|
|
86
|
+
to bottom,
|
|
87
|
+
var(--ds-dialog-body-top-fade, rgb(0 0 0)) 0,
|
|
88
|
+
rgb(0 0 0) var(--ds-space-6),
|
|
89
|
+
rgb(0 0 0) calc(100% - var(--ds-space-6)),
|
|
90
|
+
var(--ds-dialog-body-bottom-fade, rgb(0 0 0)) 100%
|
|
91
|
+
);
|
|
92
|
+
animation: ds-dialog-body-scroll-fade linear;
|
|
93
|
+
animation-timeline: scroll(self);
|
|
94
|
+
}
|
|
95
|
+
ds-card::part(body)::-webkit-scrollbar {
|
|
96
|
+
display: none;
|
|
97
|
+
}
|
|
98
|
+
@keyframes ds-dialog-body-scroll-fade {
|
|
99
|
+
/* At scroll-top: keep the top stop opaque (no fade above), reveal
|
|
100
|
+
the bottom fade so the user knows there's more below. The two
|
|
101
|
+
near-instant transitions at 0.001% and 99.999% flip each stop
|
|
102
|
+
on / off as soon as scroll actually progresses, so the fades
|
|
103
|
+
are binary (present / absent), not interpolated as the user
|
|
104
|
+
drags through the range. */
|
|
105
|
+
0% {
|
|
106
|
+
--ds-dialog-body-top-fade: rgb(0 0 0);
|
|
107
|
+
--ds-dialog-body-bottom-fade: rgb(0 0 0 / 0);
|
|
108
|
+
}
|
|
109
|
+
0.001%, 99.999% {
|
|
110
|
+
--ds-dialog-body-top-fade: rgb(0 0 0 / 0);
|
|
111
|
+
--ds-dialog-body-bottom-fade: rgb(0 0 0 / 0);
|
|
112
|
+
}
|
|
113
|
+
100% {
|
|
114
|
+
--ds-dialog-body-top-fade: rgb(0 0 0 / 0);
|
|
115
|
+
--ds-dialog-body-bottom-fade: rgb(0 0 0);
|
|
116
|
+
}
|
|
47
117
|
}
|
|
48
118
|
.title-row {
|
|
49
119
|
display: flex;
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyJ9B,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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../../src/molecules/drawer/drawer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGrE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,mBAAmB,CAAC;AAC3B,OAAO,8BAA8B,CAAC;AACtC,OAAO,kCAAkC,CAAC;AAG1C,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5C,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;AAEzC;;;;;;;;;;;;;GAaG;AACH,qBAAa,QAAS,SAAQ,SAAS;;IACrC,OAAgB,MAAM,4BAAuC;IAEjB,IAAI,UAAS;IAC7C,KAAK,SAAM;IACqB,WAAW,UAAQ;IAClC,IAAI,EAAE,UAAU,CAAQ;IACxB,IAAI,EAAE,UAAU,CAAW;IAEvC,OAAO,CAAC,SAAS,CAAC,CAAoB;IAEvD,IAAI,IAAI,IAAI;IAIZ,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAOxB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAUtC,oBAAoB,IAAI,IAAI;IA6B5B,MAAM,IAAI,cAAc;CAmClC"}
|