@jsekulowicz/ds-components 0.13.1 → 0.13.3
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 +182 -4
- package/dist/atoms/table/table-scroll-body.styles.d.ts.map +1 -1
- package/dist/atoms/table/table-scroll-body.styles.js +11 -24
- package/dist/atoms/table/table-scroll-body.styles.js.map +1 -1
- package/dist/atoms/table/table.d.ts +1 -0
- package/dist/atoms/table/table.d.ts.map +1 -1
- package/dist/atoms/table/table.js +2 -0
- package/dist/atoms/table/table.js.map +1 -1
- package/dist/molecules/dialog/dialog.d.ts +1 -0
- package/dist/molecules/dialog/dialog.d.ts.map +1 -1
- package/dist/molecules/dialog/dialog.js +11 -2
- package/dist/molecules/dialog/dialog.js.map +1 -1
- package/dist/molecules/dialog/dialog.styles.d.ts.map +1 -1
- package/dist/molecules/dialog/dialog.styles.js +2 -26
- package/dist/molecules/dialog/dialog.styles.js.map +1 -1
- package/dist/molecules/drawer/drawer.d.ts +1 -0
- package/dist/molecules/drawer/drawer.d.ts.map +1 -1
- package/dist/molecules/drawer/drawer.js +11 -2
- package/dist/molecules/drawer/drawer.js.map +1 -1
- package/dist/molecules/drawer/drawer.styles.d.ts.map +1 -1
- package/dist/molecules/drawer/drawer.styles.js +2 -24
- package/dist/molecules/drawer/drawer.styles.js.map +1 -1
- package/dist/shared/scroll-fade-controller.d.ts +9 -0
- package/dist/shared/scroll-fade-controller.d.ts.map +1 -0
- package/dist/shared/scroll-fade-controller.js +92 -0
- package/dist/shared/scroll-fade-controller.js.map +1 -0
- package/dist/shared/scroll-fade.styles.d.ts +1 -0
- package/dist/shared/scroll-fade.styles.d.ts.map +1 -1
- package/dist/shared/scroll-fade.styles.js +42 -40
- package/dist/shared/scroll-fade.styles.js.map +1 -1
- package/package.json +1 -1
package/custom-elements.json
CHANGED
|
@@ -845,6 +845,150 @@
|
|
|
845
845
|
}
|
|
846
846
|
]
|
|
847
847
|
},
|
|
848
|
+
{
|
|
849
|
+
"kind": "javascript-module",
|
|
850
|
+
"path": "src/shared/scroll-fade-controller.ts",
|
|
851
|
+
"declarations": [
|
|
852
|
+
{
|
|
853
|
+
"kind": "class",
|
|
854
|
+
"description": "",
|
|
855
|
+
"name": "ScrollFadeController",
|
|
856
|
+
"members": [
|
|
857
|
+
{
|
|
858
|
+
"kind": "field",
|
|
859
|
+
"name": "#getScroller",
|
|
860
|
+
"privacy": "private",
|
|
861
|
+
"type": {
|
|
862
|
+
"text": "() => HTMLElement | null | undefined"
|
|
863
|
+
},
|
|
864
|
+
"default": "getScroller"
|
|
865
|
+
},
|
|
866
|
+
{
|
|
867
|
+
"kind": "field",
|
|
868
|
+
"name": "#scroller",
|
|
869
|
+
"privacy": "private",
|
|
870
|
+
"type": {
|
|
871
|
+
"text": "HTMLElement | null"
|
|
872
|
+
},
|
|
873
|
+
"default": "null"
|
|
874
|
+
},
|
|
875
|
+
{
|
|
876
|
+
"kind": "field",
|
|
877
|
+
"name": "#resize",
|
|
878
|
+
"privacy": "private",
|
|
879
|
+
"type": {
|
|
880
|
+
"text": "ResizeObserver | undefined"
|
|
881
|
+
}
|
|
882
|
+
},
|
|
883
|
+
{
|
|
884
|
+
"kind": "field",
|
|
885
|
+
"name": "#mutation",
|
|
886
|
+
"privacy": "private",
|
|
887
|
+
"type": {
|
|
888
|
+
"text": "MutationObserver | undefined"
|
|
889
|
+
}
|
|
890
|
+
},
|
|
891
|
+
{
|
|
892
|
+
"kind": "field",
|
|
893
|
+
"name": "#frame",
|
|
894
|
+
"privacy": "private",
|
|
895
|
+
"type": {
|
|
896
|
+
"text": "number"
|
|
897
|
+
},
|
|
898
|
+
"default": "0"
|
|
899
|
+
},
|
|
900
|
+
{
|
|
901
|
+
"kind": "method",
|
|
902
|
+
"name": "hostConnected",
|
|
903
|
+
"return": {
|
|
904
|
+
"type": {
|
|
905
|
+
"text": "void"
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
},
|
|
909
|
+
{
|
|
910
|
+
"kind": "method",
|
|
911
|
+
"name": "hostUpdated",
|
|
912
|
+
"return": {
|
|
913
|
+
"type": {
|
|
914
|
+
"text": "void"
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
},
|
|
918
|
+
{
|
|
919
|
+
"kind": "method",
|
|
920
|
+
"name": "hostDisconnected",
|
|
921
|
+
"return": {
|
|
922
|
+
"type": {
|
|
923
|
+
"text": "void"
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
},
|
|
927
|
+
{
|
|
928
|
+
"kind": "method",
|
|
929
|
+
"name": "#tryAttach",
|
|
930
|
+
"privacy": "private",
|
|
931
|
+
"return": {
|
|
932
|
+
"type": {
|
|
933
|
+
"text": "void"
|
|
934
|
+
}
|
|
935
|
+
},
|
|
936
|
+
"parameters": [
|
|
937
|
+
{
|
|
938
|
+
"name": "attempt",
|
|
939
|
+
"default": "0"
|
|
940
|
+
}
|
|
941
|
+
]
|
|
942
|
+
},
|
|
943
|
+
{
|
|
944
|
+
"kind": "method",
|
|
945
|
+
"name": "#detach",
|
|
946
|
+
"privacy": "private",
|
|
947
|
+
"return": {
|
|
948
|
+
"type": {
|
|
949
|
+
"text": "void"
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
},
|
|
953
|
+
{
|
|
954
|
+
"kind": "field",
|
|
955
|
+
"name": "#onScroll",
|
|
956
|
+
"privacy": "private"
|
|
957
|
+
},
|
|
958
|
+
{
|
|
959
|
+
"kind": "method",
|
|
960
|
+
"name": "#schedule",
|
|
961
|
+
"privacy": "private",
|
|
962
|
+
"return": {
|
|
963
|
+
"type": {
|
|
964
|
+
"text": "void"
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
},
|
|
968
|
+
{
|
|
969
|
+
"kind": "method",
|
|
970
|
+
"name": "#update",
|
|
971
|
+
"privacy": "private",
|
|
972
|
+
"return": {
|
|
973
|
+
"type": {
|
|
974
|
+
"text": "void"
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
]
|
|
979
|
+
}
|
|
980
|
+
],
|
|
981
|
+
"exports": [
|
|
982
|
+
{
|
|
983
|
+
"kind": "js",
|
|
984
|
+
"name": "ScrollFadeController",
|
|
985
|
+
"declaration": {
|
|
986
|
+
"name": "ScrollFadeController",
|
|
987
|
+
"module": "src/shared/scroll-fade-controller.ts"
|
|
988
|
+
}
|
|
989
|
+
}
|
|
990
|
+
]
|
|
991
|
+
},
|
|
848
992
|
{
|
|
849
993
|
"kind": "javascript-module",
|
|
850
994
|
"path": "src/shared/scroll-fade.styles.ts",
|
|
@@ -852,7 +996,12 @@
|
|
|
852
996
|
{
|
|
853
997
|
"kind": "variable",
|
|
854
998
|
"name": "scrollFadeStyles",
|
|
855
|
-
"default": "css`
|
|
999
|
+
"default": "css` ds-card::part(body), .scroll { --ds-scroll-fade-mask: linear-gradient( to bottom, rgb(0 0 0) 0, rgb(0 0 0) var(--ds-scroll-fade-offset, 0px), var(--ds-scroll-fade-top, rgb(0 0 0)) var(--ds-scroll-fade-offset, 0px), rgb(0 0 0) calc(var(--ds-scroll-fade-offset, 0px) + var(--ds-scroll-fade-depth, var(--ds-space-8))), rgb(0 0 0) calc(100% - var(--ds-scroll-fade-depth, var(--ds-space-8))), var(--ds-scroll-fade-bottom, rgb(0 0 0)) 100% ); } `"
|
|
1000
|
+
},
|
|
1001
|
+
{
|
|
1002
|
+
"kind": "variable",
|
|
1003
|
+
"name": "cardBodyScrollFadeStyles",
|
|
1004
|
+
"default": "css` 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: var(--ds-scroll-fade-mask); } ds-card::part(body)::-webkit-scrollbar { display: none; } `"
|
|
856
1005
|
}
|
|
857
1006
|
],
|
|
858
1007
|
"exports": [
|
|
@@ -863,6 +1012,14 @@
|
|
|
863
1012
|
"name": "scrollFadeStyles",
|
|
864
1013
|
"module": "src/shared/scroll-fade.styles.ts"
|
|
865
1014
|
}
|
|
1015
|
+
},
|
|
1016
|
+
{
|
|
1017
|
+
"kind": "js",
|
|
1018
|
+
"name": "cardBodyScrollFadeStyles",
|
|
1019
|
+
"declaration": {
|
|
1020
|
+
"name": "cardBodyScrollFadeStyles",
|
|
1021
|
+
"module": "src/shared/scroll-fade.styles.ts"
|
|
1022
|
+
}
|
|
866
1023
|
}
|
|
867
1024
|
]
|
|
868
1025
|
},
|
|
@@ -7445,7 +7602,7 @@
|
|
|
7445
7602
|
{
|
|
7446
7603
|
"kind": "variable",
|
|
7447
7604
|
"name": "tableScrollBodyStyles",
|
|
7448
|
-
"default": "css` :host([scroll-body]) { display: flex; flex-direction: column; min-height: 0; } :host([scroll-body]) .scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; /* No overscroll bounce — the rubber-band at the top/bottom looks glitchy against the pinned header and the offset scroll-fade. */ overscroll-behavior: none; scrollbar-width: none;
|
|
7605
|
+
"default": "css` :host([scroll-body]) { display: flex; flex-direction: column; min-height: 0; } :host([scroll-body]) .scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; /* No overscroll bounce — the rubber-band at the top/bottom looks glitchy against the pinned header and the offset scroll-fade. */ overscroll-behavior: none; scrollbar-width: none; /* Shared scroll-fade mask (driven by ScrollFadeController), offset below the sticky header so it dims the body rather than the header. */ --ds-scroll-fade-offset: var(--ds-table-header-height); mask-image: var(--ds-scroll-fade-mask); } :host([scroll-body]) .scroll::-webkit-scrollbar { display: none; } :host([scroll-body]) thead th { position: sticky; top: 0; z-index: 1; box-sizing: border-box; block-size: var(--ds-table-header-height); } /* Stacked (mobile) layout hides the header and renders rows as cards, so the top fade must NOT be offset by the header height — fade from the very top like ds-dialog / ds-drawer. */ @container (max-width: ${mobileBreakpoint}) { :host([scroll-body]:not([responsive='scroll'])) .scroll { --ds-scroll-fade-offset: 0px; } } `"
|
|
7449
7606
|
}
|
|
7450
7607
|
],
|
|
7451
7608
|
"exports": [
|
|
@@ -7863,6 +8020,13 @@
|
|
|
7863
8020
|
"privacy": "private",
|
|
7864
8021
|
"default": "false"
|
|
7865
8022
|
},
|
|
8023
|
+
{
|
|
8024
|
+
"kind": "field",
|
|
8025
|
+
"name": "_scrollFade",
|
|
8026
|
+
"privacy": "private",
|
|
8027
|
+
"readonly": true,
|
|
8028
|
+
"default": "new ScrollFadeController( this, () => this.shadowRoot?.querySelector('.scroll') as HTMLElement | null, )"
|
|
8029
|
+
},
|
|
7866
8030
|
{
|
|
7867
8031
|
"kind": "field",
|
|
7868
8032
|
"name": "#slotObserver",
|
|
@@ -12561,7 +12725,7 @@
|
|
|
12561
12725
|
{
|
|
12562
12726
|
"kind": "variable",
|
|
12563
12727
|
"name": "dialogStyles",
|
|
12564
|
-
"default": "css` :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); }
|
|
12728
|
+
"default": "css` :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); } /* The scrolling body (ds-card::part(body)) + its scroll fade come from the shared cardBodyScrollFadeStyles. */ .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); } `"
|
|
12565
12729
|
}
|
|
12566
12730
|
],
|
|
12567
12731
|
"exports": [
|
|
@@ -12663,6 +12827,13 @@
|
|
|
12663
12827
|
},
|
|
12664
12828
|
"privacy": "private"
|
|
12665
12829
|
},
|
|
12830
|
+
{
|
|
12831
|
+
"kind": "field",
|
|
12832
|
+
"name": "_scrollFade",
|
|
12833
|
+
"privacy": "private",
|
|
12834
|
+
"readonly": true,
|
|
12835
|
+
"default": "new ScrollFadeController( this, () => (this.shadowRoot ?.querySelector('ds-card') ?.shadowRoot?.querySelector('[part~=\"body\"]') as HTMLElement | null) ?? null, )"
|
|
12836
|
+
},
|
|
12666
12837
|
{
|
|
12667
12838
|
"kind": "method",
|
|
12668
12839
|
"name": "show",
|
|
@@ -12824,7 +12995,7 @@
|
|
|
12824
12995
|
{
|
|
12825
12996
|
"kind": "variable",
|
|
12826
12997
|
"name": "drawerStyles",
|
|
12827
|
-
"default": "css` :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) { /* Fill the dialog explicitly; percentage heights don't resolve reliably through ds-card's display:block host. */ height: 100vh; height: 100dvh; max-height: 100vh; max-height: 100dvh; box-shadow: none; /* border: 0 not transparent — a 1px transparent border still fills with the card's own background (background-clip: border-box). */ border: 0; border-radius: 0; gap: var(--ds-space-3); padding: var(--ds-drawer-card-padding, var(--ds-space-6)); }
|
|
12998
|
+
"default": "css` :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) { /* Fill the dialog explicitly; percentage heights don't resolve reliably through ds-card's display:block host. */ height: 100vh; height: 100dvh; max-height: 100vh; max-height: 100dvh; box-shadow: none; /* border: 0 not transparent — a 1px transparent border still fills with the card's own background (background-clip: border-box). */ border: 0; border-radius: 0; gap: var(--ds-space-3); padding: var(--ds-drawer-card-padding, var(--ds-space-6)); } /* The scrolling body (ds-card::part(body)) + its scroll fade come from the shared cardBodyScrollFadeStyles. */ .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); min-height: var(--ds-drawer-title-min-height, auto); } .title-text { margin: 0; flex: 1; /* Flex-centre the slotted content; otherwise the h2's line-height inflates the title-row height and content sits at the baseline. */ display: flex; align-items: center; line-height: 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::part(button) { color: var(--ds-drawer-title-fg, inherit); } .footer { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--ds-space-2); } `"
|
|
12828
12999
|
}
|
|
12829
13000
|
],
|
|
12830
13001
|
"exports": [
|
|
@@ -12936,6 +13107,13 @@
|
|
|
12936
13107
|
},
|
|
12937
13108
|
"privacy": "private"
|
|
12938
13109
|
},
|
|
13110
|
+
{
|
|
13111
|
+
"kind": "field",
|
|
13112
|
+
"name": "_scrollFade",
|
|
13113
|
+
"privacy": "private",
|
|
13114
|
+
"readonly": true,
|
|
13115
|
+
"default": "new ScrollFadeController( this, () => (this.shadowRoot ?.querySelector('ds-card') ?.shadowRoot?.querySelector('[part~=\"body\"]') as HTMLElement | null) ?? null, )"
|
|
13116
|
+
},
|
|
12939
13117
|
{
|
|
12940
13118
|
"kind": "method",
|
|
12941
13119
|
"name": "show",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-scroll-body.styles.d.ts","sourceRoot":"","sources":["../../../src/atoms/table/table-scroll-body.styles.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"table-scroll-body.styles.d.ts","sourceRoot":"","sources":["../../../src/atoms/table/table-scroll-body.styles.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,qBAAqB,yBAsCjC,CAAC"}
|
|
@@ -2,12 +2,12 @@ import { css, unsafeCSS } from 'lit';
|
|
|
2
2
|
import { breakpoint } from '@jsekulowicz/ds-tokens';
|
|
3
3
|
const mobileBreakpoint = unsafeCSS(breakpoint.sm);
|
|
4
4
|
// `scroll-body`: the body scrolls under a pinned header. The scrollbar is
|
|
5
|
-
// hidden and overflow is signalled by the shared scroll-
|
|
6
|
-
// shared/scroll-fade.styles)
|
|
7
|
-
// `--ds-table-header-height`, and the top fade
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
5
|
+
// hidden and overflow is signalled by the shared scroll-fade mask (see
|
|
6
|
+
// shared/scroll-fade.styles), whose edges are driven by ScrollFadeController.
|
|
7
|
+
// The header is pinned to a fixed `--ds-table-header-height`, and the top fade
|
|
8
|
+
// is offset by that same height (via `--ds-scroll-fade-offset`) so it dims the
|
|
9
|
+
// body just below the header rather than the header itself — no measurement
|
|
10
|
+
// needed. Natural `table-layout: auto` column widths are preserved; the host
|
|
11
11
|
// needs a bounded height (e.g. `flex: 1` in a flex column).
|
|
12
12
|
export const tableScrollBodyStyles = css `
|
|
13
13
|
:host([scroll-body]) {
|
|
@@ -23,17 +23,10 @@ export const tableScrollBodyStyles = css `
|
|
|
23
23
|
against the pinned header and the offset scroll-fade. */
|
|
24
24
|
overscroll-behavior: none;
|
|
25
25
|
scrollbar-width: none;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
var(--ds-scroll-fade-top, rgb(0 0 0)) var(--ds-table-header-height),
|
|
31
|
-
rgb(0 0 0) calc(var(--ds-table-header-height) * 2),
|
|
32
|
-
rgb(0 0 0) calc(100% - var(--ds-table-header-height)),
|
|
33
|
-
var(--ds-scroll-fade-bottom, rgb(0 0 0)) 100%
|
|
34
|
-
);
|
|
35
|
-
animation: ds-scroll-fade linear;
|
|
36
|
-
animation-timeline: scroll(self);
|
|
26
|
+
/* Shared scroll-fade mask (driven by ScrollFadeController), offset below
|
|
27
|
+
the sticky header so it dims the body rather than the header. */
|
|
28
|
+
--ds-scroll-fade-offset: var(--ds-table-header-height);
|
|
29
|
+
mask-image: var(--ds-scroll-fade-mask);
|
|
37
30
|
}
|
|
38
31
|
:host([scroll-body]) .scroll::-webkit-scrollbar {
|
|
39
32
|
display: none;
|
|
@@ -51,13 +44,7 @@ export const tableScrollBodyStyles = css `
|
|
|
51
44
|
like ds-dialog / ds-drawer. */
|
|
52
45
|
@container (max-width: ${mobileBreakpoint}) {
|
|
53
46
|
:host([scroll-body]:not([responsive='scroll'])) .scroll {
|
|
54
|
-
|
|
55
|
-
to bottom,
|
|
56
|
-
var(--ds-scroll-fade-top, rgb(0 0 0)) 0,
|
|
57
|
-
rgb(0 0 0) var(--ds-table-header-height),
|
|
58
|
-
rgb(0 0 0) calc(100% - var(--ds-table-header-height)),
|
|
59
|
-
var(--ds-scroll-fade-bottom, rgb(0 0 0)) 100%
|
|
60
|
-
);
|
|
47
|
+
--ds-scroll-fade-offset: 0px;
|
|
61
48
|
}
|
|
62
49
|
}
|
|
63
50
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-scroll-body.styles.js","sourceRoot":"","sources":["../../../src/atoms/table/table-scroll-body.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAElD,0EAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"table-scroll-body.styles.js","sourceRoot":"","sources":["../../../src/atoms/table/table-scroll-body.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAElD,0EAA0E;AAC1E,uEAAuE;AACvE,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,6EAA6E;AAC7E,4DAA4D;AAC5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAiCb,gBAAgB;;;;;CAK1C,CAAC"}
|
|
@@ -45,6 +45,7 @@ export declare class DsTable<T extends TableRow = TableRow> extends DsElement {
|
|
|
45
45
|
private _hasCaption;
|
|
46
46
|
private _hasToolbar;
|
|
47
47
|
private _hasFooter;
|
|
48
|
+
private readonly _scrollFade;
|
|
48
49
|
connectedCallback(): void;
|
|
49
50
|
disconnectedCallback(): void;
|
|
50
51
|
render(): TemplateResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/atoms/table/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGhD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/atoms/table/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGhD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,uBAAuB,CAAC;AAQ/B,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAmB7F;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,OAAO,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,SAAS;;IACnE,OAAgB,MAAM,4BAMpB;IAE8B,IAAI,EAAE,SAAS,CAAC,EAAE,CAAM;IACxB,OAAO,EAAE,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,CAAM;IACxC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAQ;IACC,aAAa,UAAS;IAC3C,OAAO,UAAS;IACZ,YAAY,SAAK;IACd,eAAe,SAAK;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,mBAAmB,CAAW;IACD,UAAU,UAAS;IAChF,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAG1B;IAIO,iBAAiB,IAAI,IAAI;IAYzB,oBAAoB,IAAI,IAAI;IA6H5B,MAAM,IAAI,cAAc;CAUlC"}
|
|
@@ -13,6 +13,7 @@ import { tableStyles } from './table.styles.js';
|
|
|
13
13
|
import { tableResponsiveStyles } from './table-responsive.styles.js';
|
|
14
14
|
import { tableScrollBodyStyles } from './table-scroll-body.styles.js';
|
|
15
15
|
import { scrollFadeStyles } from '../../shared/scroll-fade.styles.js';
|
|
16
|
+
import { ScrollFadeController } from '../../shared/scroll-fade-controller.js';
|
|
16
17
|
import { renderTableSkeleton } from './table-skeleton.js';
|
|
17
18
|
import { renderTableBody, renderTableHeader } from './table-rendering.js';
|
|
18
19
|
const INTERACTIVE_TAGS = new Set([
|
|
@@ -70,6 +71,7 @@ export class DsTable extends DsElement {
|
|
|
70
71
|
this._hasCaption = false;
|
|
71
72
|
this._hasToolbar = false;
|
|
72
73
|
this._hasFooter = false;
|
|
74
|
+
this._scrollFade = new ScrollFadeController(this, () => this.shadowRoot?.querySelector('.scroll'));
|
|
73
75
|
this.#slotObserver = null;
|
|
74
76
|
this.#syncSlotPresence = () => {
|
|
75
77
|
this._hasCaption = this.querySelector('[slot="caption"]') !== null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/atoms/table/table.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAuB,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO;IACrD,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW;IAC9D,sBAAsB,EAAE,eAAe,EAAE,sBAAsB;IAC/D,qBAAqB;CACtB,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AAEzD,SAAS,qBAAqB,CAAC,KAAoB;IACjD,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,yBAAyB,GAAG;IAChC,aAAa,EAAE,qBAAqB;CACrC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,OAAuC,SAAQ,SAAS;IAArE;;QASkC,SAAI,GAAiB,EAAE,CAAC;QACxB,YAAO,GAA8B,EAAE,CAAC;QACxC,cAAS,GAA0B,IAAI,CAAC;QACC,kBAAa,GAAG,KAAK,CAAC;QAC3C,YAAO,GAAG,KAAK,CAAC;QACZ,iBAAY,GAAG,CAAC,CAAC;QACd,oBAAe,GAAG,CAAC,CAAC;QAElD,eAAU,GAAwB,OAAO,CAAC;QACD,eAAU,GAAG,KAAK,CAAC;QACxE,gBAAW,GAAG,KAAK,CAAC;QACpB,gBAAW,GAAG,KAAK,CAAC;QACpB,eAAU,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/atoms/table/table.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../src/molecules/dialog/dialog.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;
|
|
1
|
+
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../src/molecules/dialog/dialog.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;AAK1C,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C;;;;;;;;;;;;;GAaG;AACH,qBAAa,QAAS,SAAQ,SAAS;;IACrC,OAAgB,MAAM,4BAKpB;IAE0C,IAAI,UAAS;IAC7C,KAAK,SAAM;IACqB,WAAW,UAAQ;IAClC,IAAI,EAAE,UAAU,CAAQ;IAEpC,OAAO,CAAC,SAAS,CAAC,CAAoB;IAEvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAM1B;IAEF,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"}
|
|
@@ -12,7 +12,8 @@ import '../card/define.js';
|
|
|
12
12
|
import '../../atoms/button/define.js';
|
|
13
13
|
import '../../atoms/icon/icons/x-mark.js';
|
|
14
14
|
import { dialogStyles } from './dialog.styles.js';
|
|
15
|
-
import { scrollFadeStyles } from '../../shared/scroll-fade.styles.js';
|
|
15
|
+
import { cardBodyScrollFadeStyles, scrollFadeStyles } from '../../shared/scroll-fade.styles.js';
|
|
16
|
+
import { ScrollFadeController } from '../../shared/scroll-fade-controller.js';
|
|
16
17
|
/**
|
|
17
18
|
* @tag ds-dialog
|
|
18
19
|
* @summary Modal dialog built on the native `<dialog>` element. Header and footer are sticky; only the body scrolls.
|
|
@@ -34,6 +35,9 @@ export class DsDialog extends DsElement {
|
|
|
34
35
|
this.label = '';
|
|
35
36
|
this.dismissible = true;
|
|
36
37
|
this.size = 'md';
|
|
38
|
+
this._scrollFade = new ScrollFadeController(this, () => this.shadowRoot
|
|
39
|
+
?.querySelector('ds-card')
|
|
40
|
+
?.shadowRoot?.querySelector('[part~="body"]') ?? null);
|
|
37
41
|
this.#onBackdropClick = (event) => {
|
|
38
42
|
if (!this.dismissible)
|
|
39
43
|
return;
|
|
@@ -57,7 +61,12 @@ export class DsDialog extends DsElement {
|
|
|
57
61
|
this.close();
|
|
58
62
|
};
|
|
59
63
|
}
|
|
60
|
-
static { this.styles = [
|
|
64
|
+
static { this.styles = [
|
|
65
|
+
...DsElement.styles,
|
|
66
|
+
scrollFadeStyles,
|
|
67
|
+
cardBodyScrollFadeStyles,
|
|
68
|
+
dialogStyles,
|
|
69
|
+
]; }
|
|
61
70
|
show() {
|
|
62
71
|
this.open = true;
|
|
63
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../src/molecules/dialog/dialog.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAA4C,MAAM,KAAK,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,mBAAmB,CAAC;AAC3B,OAAO,8BAA8B,CAAC;AACtC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../src/molecules/dialog/dialog.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,yBAiFxB,CAAC"}
|
|
@@ -45,32 +45,8 @@ export const dialogStyles = css `
|
|
|
45
45
|
border-color: transparent;
|
|
46
46
|
gap: var(--ds-space-3);
|
|
47
47
|
}
|
|
48
|
-
ds-card::part(body)
|
|
49
|
-
|
|
50
|
-
min-height: 0;
|
|
51
|
-
overflow-x: clip;
|
|
52
|
-
overflow-y: auto;
|
|
53
|
-
overscroll-behavior: contain;
|
|
54
|
-
/* Inline padding + negative margin lets focus rings on full-width
|
|
55
|
-
children paint outside the body's clip box. */
|
|
56
|
-
padding-inline: var(--ds-space-2);
|
|
57
|
-
margin-inline: calc(var(--ds-space-2) * -1);
|
|
58
|
-
/* Scrollbar hidden; overflow is signalled by the shared scroll-driven
|
|
59
|
-
fade (see shared/scroll-fade.styles). */
|
|
60
|
-
scrollbar-width: none;
|
|
61
|
-
mask-image: linear-gradient(
|
|
62
|
-
to bottom,
|
|
63
|
-
var(--ds-scroll-fade-top, rgb(0 0 0)) 0,
|
|
64
|
-
rgb(0 0 0) var(--ds-space-6),
|
|
65
|
-
rgb(0 0 0) calc(100% - var(--ds-space-6)),
|
|
66
|
-
var(--ds-scroll-fade-bottom, rgb(0 0 0)) 100%
|
|
67
|
-
);
|
|
68
|
-
animation: ds-scroll-fade linear;
|
|
69
|
-
animation-timeline: scroll(self);
|
|
70
|
-
}
|
|
71
|
-
ds-card::part(body)::-webkit-scrollbar {
|
|
72
|
-
display: none;
|
|
73
|
-
}
|
|
48
|
+
/* The scrolling body (ds-card::part(body)) + its scroll fade come from the
|
|
49
|
+
shared cardBodyScrollFadeStyles. */
|
|
74
50
|
.title-row {
|
|
75
51
|
display: flex;
|
|
76
52
|
align-items: flex-start;
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiF9B,CAAC"}
|
|
@@ -1 +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;
|
|
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;AAK1C,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,4BAKpB;IAE0C,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,OAAO,CAAC,QAAQ,CAAC,WAAW,CAM1B;IAEF,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"}
|
|
@@ -12,7 +12,8 @@ import '../card/define.js';
|
|
|
12
12
|
import '../../atoms/button/define.js';
|
|
13
13
|
import '../../atoms/icon/icons/x-mark.js';
|
|
14
14
|
import { drawerStyles } from './drawer.styles.js';
|
|
15
|
-
import { scrollFadeStyles } from '../../shared/scroll-fade.styles.js';
|
|
15
|
+
import { cardBodyScrollFadeStyles, scrollFadeStyles } from '../../shared/scroll-fade.styles.js';
|
|
16
|
+
import { ScrollFadeController } from '../../shared/scroll-fade-controller.js';
|
|
16
17
|
/**
|
|
17
18
|
* @tag ds-drawer
|
|
18
19
|
* @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.
|
|
@@ -35,6 +36,9 @@ export class DsDrawer extends DsElement {
|
|
|
35
36
|
this.dismissible = true;
|
|
36
37
|
this.size = 'sm';
|
|
37
38
|
this.side = 'start';
|
|
39
|
+
this._scrollFade = new ScrollFadeController(this, () => this.shadowRoot
|
|
40
|
+
?.querySelector('ds-card')
|
|
41
|
+
?.shadowRoot?.querySelector('[part~="body"]') ?? null);
|
|
38
42
|
this.#onBackdropClick = (event) => {
|
|
39
43
|
if (!this.dismissible)
|
|
40
44
|
return;
|
|
@@ -58,7 +62,12 @@ export class DsDrawer extends DsElement {
|
|
|
58
62
|
this.close();
|
|
59
63
|
};
|
|
60
64
|
}
|
|
61
|
-
static { this.styles = [
|
|
65
|
+
static { this.styles = [
|
|
66
|
+
...DsElement.styles,
|
|
67
|
+
scrollFadeStyles,
|
|
68
|
+
cardBodyScrollFadeStyles,
|
|
69
|
+
drawerStyles,
|
|
70
|
+
]; }
|
|
62
71
|
show() {
|
|
63
72
|
this.open = true;
|
|
64
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer.js","sourceRoot":"","sources":["../../../src/molecules/drawer/drawer.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAA4C,MAAM,KAAK,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,mBAAmB,CAAC;AAC3B,OAAO,8BAA8B,CAAC;AACtC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"drawer.js","sourceRoot":"","sources":["../../../src/molecules/drawer/drawer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer.styles.d.ts","sourceRoot":"","sources":["../../../src/molecules/drawer/drawer.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"drawer.styles.d.ts","sourceRoot":"","sources":["../../../src/molecules/drawer/drawer.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,yBAwHxB,CAAC"}
|
|
@@ -79,30 +79,8 @@ export const drawerStyles = css `
|
|
|
79
79
|
gap: var(--ds-space-3);
|
|
80
80
|
padding: var(--ds-drawer-card-padding, var(--ds-space-6));
|
|
81
81
|
}
|
|
82
|
-
ds-card::part(body)
|
|
83
|
-
|
|
84
|
-
min-height: 0;
|
|
85
|
-
overflow-x: clip;
|
|
86
|
-
overflow-y: auto;
|
|
87
|
-
overscroll-behavior: contain;
|
|
88
|
-
/* Inline padding + negative margin lets focus rings on full-width
|
|
89
|
-
children paint outside the body's clip box. */
|
|
90
|
-
padding-inline: var(--ds-space-2);
|
|
91
|
-
margin-inline: calc(var(--ds-space-2) * -1);
|
|
92
|
-
scrollbar-width: none;
|
|
93
|
-
mask-image: linear-gradient(
|
|
94
|
-
to bottom,
|
|
95
|
-
var(--ds-scroll-fade-top, rgb(0 0 0)) 0,
|
|
96
|
-
rgb(0 0 0) var(--ds-space-6),
|
|
97
|
-
rgb(0 0 0) calc(100% - var(--ds-space-6)),
|
|
98
|
-
var(--ds-scroll-fade-bottom, rgb(0 0 0)) 100%
|
|
99
|
-
);
|
|
100
|
-
animation: ds-scroll-fade linear;
|
|
101
|
-
animation-timeline: scroll(self);
|
|
102
|
-
}
|
|
103
|
-
ds-card::part(body)::-webkit-scrollbar {
|
|
104
|
-
display: none;
|
|
105
|
-
}
|
|
82
|
+
/* The scrolling body (ds-card::part(body)) + its scroll fade come from the
|
|
83
|
+
shared cardBodyScrollFadeStyles. */
|
|
106
84
|
.title-row {
|
|
107
85
|
display: flex;
|
|
108
86
|
align-items: center;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer.styles.js","sourceRoot":"","sources":["../../../src/molecules/drawer/drawer.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"drawer.styles.js","sourceRoot":"","sources":["../../../src/molecules/drawer/drawer.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwH9B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ReactiveController, ReactiveControllerHost } from 'lit';
|
|
2
|
+
export declare class ScrollFadeController implements ReactiveController {
|
|
3
|
+
#private;
|
|
4
|
+
constructor(host: ReactiveControllerHost, getScroller: () => HTMLElement | null | undefined);
|
|
5
|
+
hostConnected(): void;
|
|
6
|
+
hostUpdated(): void;
|
|
7
|
+
hostDisconnected(): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=scroll-fade-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-fade-controller.d.ts","sourceRoot":"","sources":["../../src/shared/scroll-fade-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAetE,qBAAa,oBAAqB,YAAW,kBAAkB;;gBAOjD,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,WAAW,GAAG,IAAI,GAAG,SAAS;IAK3F,aAAa,IAAI,IAAI;IAIrB,WAAW,IAAI,IAAI;IAInB,gBAAgB,IAAI,IAAI;CA+DzB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// Drives the `--ds-scroll-fade-top` / `--ds-scroll-fade-bottom` custom
|
|
2
|
+
// properties on a scroll container from its REAL scroll state, so the
|
|
3
|
+
// mask-fade (see the consuming component's styles) shows:
|
|
4
|
+
// • the bottom edge fading while there is more content below,
|
|
5
|
+
// • the top edge fading once content has scrolled above,
|
|
6
|
+
// • and NOTHING when the content fits (not scrollable).
|
|
7
|
+
// This replaces `animation-timeline: scroll(self)`, which some engines park at
|
|
8
|
+
// an extreme keyframe on non-scrollable content (painting a phantom fade). It
|
|
9
|
+
// recomputes on scroll, on resize (ResizeObserver) and on content changes
|
|
10
|
+
// (MutationObserver), all rAF-throttled.
|
|
11
|
+
const OPAQUE = 'rgb(0 0 0)';
|
|
12
|
+
const CLEAR = 'rgb(0 0 0 / 0)';
|
|
13
|
+
export class ScrollFadeController {
|
|
14
|
+
#getScroller;
|
|
15
|
+
#scroller = null;
|
|
16
|
+
#resize;
|
|
17
|
+
#mutation;
|
|
18
|
+
#frame = 0;
|
|
19
|
+
constructor(host, getScroller) {
|
|
20
|
+
this.#getScroller = getScroller;
|
|
21
|
+
host.addController(this);
|
|
22
|
+
}
|
|
23
|
+
hostConnected() {
|
|
24
|
+
this.#tryAttach();
|
|
25
|
+
}
|
|
26
|
+
hostUpdated() {
|
|
27
|
+
this.#tryAttach();
|
|
28
|
+
}
|
|
29
|
+
hostDisconnected() {
|
|
30
|
+
this.#detach();
|
|
31
|
+
}
|
|
32
|
+
#tryAttach(attempt = 0) {
|
|
33
|
+
const el = this.#getScroller();
|
|
34
|
+
if (el && el === this.#scroller) {
|
|
35
|
+
this.#schedule();
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (!el) {
|
|
39
|
+
// The scroller may live in a nested shadow root that hasn't rendered yet.
|
|
40
|
+
if (attempt < 10)
|
|
41
|
+
requestAnimationFrame(() => this.#tryAttach(attempt + 1));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.#detach();
|
|
45
|
+
this.#scroller = el;
|
|
46
|
+
el.addEventListener('scroll', this.#onScroll, { passive: true });
|
|
47
|
+
if (typeof ResizeObserver !== 'undefined') {
|
|
48
|
+
this.#resize = new ResizeObserver(this.#onScroll);
|
|
49
|
+
this.#resize.observe(el);
|
|
50
|
+
if (el.firstElementChild)
|
|
51
|
+
this.#resize.observe(el.firstElementChild);
|
|
52
|
+
}
|
|
53
|
+
if (typeof MutationObserver !== 'undefined') {
|
|
54
|
+
this.#mutation = new MutationObserver(this.#onScroll);
|
|
55
|
+
this.#mutation.observe(el, { childList: true, subtree: true, characterData: true });
|
|
56
|
+
}
|
|
57
|
+
this.#schedule();
|
|
58
|
+
}
|
|
59
|
+
#detach() {
|
|
60
|
+
this.#scroller?.removeEventListener('scroll', this.#onScroll);
|
|
61
|
+
this.#resize?.disconnect();
|
|
62
|
+
this.#mutation?.disconnect();
|
|
63
|
+
this.#resize = undefined;
|
|
64
|
+
this.#mutation = undefined;
|
|
65
|
+
this.#scroller = null;
|
|
66
|
+
if (this.#frame) {
|
|
67
|
+
cancelAnimationFrame(this.#frame);
|
|
68
|
+
this.#frame = 0;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
#onScroll = () => this.#schedule();
|
|
72
|
+
#schedule() {
|
|
73
|
+
if (this.#frame)
|
|
74
|
+
return;
|
|
75
|
+
this.#frame = requestAnimationFrame(() => {
|
|
76
|
+
this.#frame = 0;
|
|
77
|
+
this.#update();
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
#update() {
|
|
81
|
+
const el = this.#scroller;
|
|
82
|
+
if (!el || !el.isConnected)
|
|
83
|
+
return;
|
|
84
|
+
const max = el.scrollHeight - el.clientHeight;
|
|
85
|
+
const scrollable = max > 1;
|
|
86
|
+
const atTop = el.scrollTop <= 1;
|
|
87
|
+
const atBottom = el.scrollTop >= max - 1;
|
|
88
|
+
el.style.setProperty('--ds-scroll-fade-top', scrollable && !atTop ? CLEAR : OPAQUE);
|
|
89
|
+
el.style.setProperty('--ds-scroll-fade-bottom', scrollable && !atBottom ? CLEAR : OPAQUE);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=scroll-fade-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-fade-controller.js","sourceRoot":"","sources":["../../src/shared/scroll-fade-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-fade.styles.d.ts","sourceRoot":"","sources":["../../src/shared/scroll-fade.styles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scroll-fade.styles.d.ts","sourceRoot":"","sources":["../../src/shared/scroll-fade.styles.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,gBAAgB,yBAc5B,CAAC;AAIF,eAAO,MAAM,wBAAwB,yBAiBpC,CAAC"}
|
|
@@ -1,47 +1,49 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
// Shared scroll
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
// var(--ds-scroll-fade-bottom, rgb(0 0 0)) ...);
|
|
15
|
-
// animation: ds-scroll-fade linear;
|
|
16
|
-
// animation-timeline: scroll(self);
|
|
17
|
-
// and hide the WebKit scrollbar with `::-webkit-scrollbar { display: none }`.
|
|
18
|
-
// Used by ds-dialog, ds-drawer and ds-table (`scroll-body`).
|
|
2
|
+
// Shared scroll fade. The fade colours (`--ds-scroll-fade-top` /
|
|
3
|
+
// `--ds-scroll-fade-bottom`) are set per scroll position by
|
|
4
|
+
// `ScrollFadeController`. The gradient is exposed as `--ds-scroll-fade-mask`
|
|
5
|
+
// so any scroll container can apply it with `mask-image: var(--ds-scroll-fade-mask)`.
|
|
6
|
+
//
|
|
7
|
+
// IMPORTANT: the gradient must be DECLARED on the scroll container itself, not
|
|
8
|
+
// on :host — a custom property resolves its inner var()s against the element it
|
|
9
|
+
// is declared on, and the controller sets the fade colours on the scroller. So
|
|
10
|
+
// this rule targets the two scroller selectors directly (a component only
|
|
11
|
+
// matches its own one). `--ds-scroll-fade-depth` tunes the fade size and
|
|
12
|
+
// `--ds-scroll-fade-offset` shifts the top fade past a sticky header; both
|
|
13
|
+
// inherit, so a host can override them.
|
|
19
14
|
export const scrollFadeStyles = css `
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
15
|
+
ds-card::part(body),
|
|
16
|
+
.scroll {
|
|
17
|
+
--ds-scroll-fade-mask: linear-gradient(
|
|
18
|
+
to bottom,
|
|
19
|
+
rgb(0 0 0) 0,
|
|
20
|
+
rgb(0 0 0) var(--ds-scroll-fade-offset, 0px),
|
|
21
|
+
var(--ds-scroll-fade-top, rgb(0 0 0)) var(--ds-scroll-fade-offset, 0px),
|
|
22
|
+
rgb(0 0 0)
|
|
23
|
+
calc(var(--ds-scroll-fade-offset, 0px) + var(--ds-scroll-fade-depth, var(--ds-space-8))),
|
|
24
|
+
rgb(0 0 0) calc(100% - var(--ds-scroll-fade-depth, var(--ds-space-8))),
|
|
25
|
+
var(--ds-scroll-fade-bottom, rgb(0 0 0)) 100%
|
|
26
|
+
);
|
|
26
27
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
`;
|
|
29
|
+
// The scrolling body shared by the ds-card-based panels (ds-dialog, ds-drawer):
|
|
30
|
+
// identical flex / overflow / inline padding plus the masked scroll fade.
|
|
31
|
+
export const cardBodyScrollFadeStyles = css `
|
|
32
|
+
ds-card::part(body) {
|
|
33
|
+
flex: 1;
|
|
34
|
+
min-height: 0;
|
|
35
|
+
overflow-x: clip;
|
|
36
|
+
overflow-y: auto;
|
|
37
|
+
overscroll-behavior: contain;
|
|
38
|
+
/* Inline padding + negative margin lets focus rings on full-width
|
|
39
|
+
children paint outside the body's clip box. */
|
|
40
|
+
padding-inline: var(--ds-space-2);
|
|
41
|
+
margin-inline: calc(var(--ds-space-2) * -1);
|
|
42
|
+
scrollbar-width: none;
|
|
43
|
+
mask-image: var(--ds-scroll-fade-mask);
|
|
31
44
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
--ds-scroll-fade-top: rgb(0 0 0);
|
|
35
|
-
--ds-scroll-fade-bottom: rgb(0 0 0);
|
|
36
|
-
}
|
|
37
|
-
0.001%, 99.999% {
|
|
38
|
-
--ds-scroll-fade-top: rgb(0 0 0 / 0);
|
|
39
|
-
--ds-scroll-fade-bottom: rgb(0 0 0 / 0);
|
|
40
|
-
}
|
|
41
|
-
100% {
|
|
42
|
-
--ds-scroll-fade-top: rgb(0 0 0 / 0);
|
|
43
|
-
--ds-scroll-fade-bottom: rgb(0 0 0);
|
|
44
|
-
}
|
|
45
|
+
ds-card::part(body)::-webkit-scrollbar {
|
|
46
|
+
display: none;
|
|
45
47
|
}
|
|
46
48
|
`;
|
|
47
49
|
//# sourceMappingURL=scroll-fade.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-fade.styles.js","sourceRoot":"","sources":["../../src/shared/scroll-fade.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,+EAA+E;AAC/E,
|
|
1
|
+
{"version":3,"file":"scroll-fade.styles.js","sourceRoot":"","sources":["../../src/shared/scroll-fade.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,iEAAiE;AACjE,4DAA4D;AAC5D,6EAA6E;AAC7E,sFAAsF;AACtF,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,0EAA0E;AAC1E,yEAAyE;AACzE,2EAA2E;AAC3E,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;CAclC,CAAC;AAEF,gFAAgF;AAChF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;CAiB1C,CAAC"}
|
package/package.json
CHANGED