@blueprintui/grid 0.0.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/LICENSE.md +21 -0
- package/README.md +3 -0
- package/cell/element.css.js +1 -0
- package/cell/element.d.ts +27 -0
- package/cell/element.js +1 -0
- package/column/element.css.js +1 -0
- package/column/element.d.ts +29 -0
- package/column/element.js +1 -0
- package/column/position.controller.d.ts +10 -0
- package/column/position.controller.js +1 -0
- package/column/size.controller.d.ts +13 -0
- package/column/size.controller.js +1 -0
- package/custom-elements.json +2107 -0
- package/footer/element.css.js +1 -0
- package/footer/element.d.ts +22 -0
- package/footer/element.js +1 -0
- package/grid/element.css.js +1 -0
- package/grid/element.d.ts +85 -0
- package/grid/element.js +1 -0
- package/grid/global.css.js +1 -0
- package/grid/layout.controller.d.ts +21 -0
- package/grid/layout.controller.js +1 -0
- package/include/core.d.ts +13 -0
- package/include/core.js +1 -0
- package/include/footer.d.ts +6 -0
- package/include/footer.js +1 -0
- package/include/keynav.d.ts +1 -0
- package/include/keynav.js +1 -0
- package/include/pagination.d.ts +10 -0
- package/include/pagination.js +1 -0
- package/include/placeholder.d.ts +6 -0
- package/include/placeholder.js +1 -0
- package/index.d.ts +7 -0
- package/index.js +1 -0
- package/internals/controllers/interaction-scroll-visibility.controller.d.ts +12 -0
- package/internals/controllers/interaction-scroll-visibility.controller.js +1 -0
- package/internals/controllers/key-grid.controller.d.ts +19 -0
- package/internals/controllers/key-grid.controller.js +1 -0
- package/internals/controllers/key.utils.d.ts +9 -0
- package/internals/controllers/key.utils.js +1 -0
- package/internals/index.d.ts +4 -0
- package/internals/index.js +1 -0
- package/internals/utils/dom.d.ts +2 -0
- package/internals/utils/dom.js +1 -0
- package/internals/utils/events.d.ts +2 -0
- package/internals/utils/events.js +1 -0
- package/internals/utils/focus.d.ts +7 -0
- package/internals/utils/focus.js +1 -0
- package/internals/utils/keynav.d.ts +11 -0
- package/internals/utils/keynav.js +1 -0
- package/internals/utils/traversal.d.ts +5 -0
- package/internals/utils/traversal.js +1 -0
- package/package.json +44 -0
- package/pagination/element.css.js +1 -0
- package/pagination/element.d.ts +53 -0
- package/pagination/element.js +1 -0
- package/placeholder/element.css.js +1 -0
- package/placeholder/element.d.ts +45 -0
- package/placeholder/element.js +1 -0
- package/row/element.css.js +1 -0
- package/row/element.d.ts +22 -0
- package/row/element.js +1 -0
- package/row/position.controller.d.ts +9 -0
- package/row/position.controller.js +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const a=new CSSStyleSheet;a.replaceSync(":host{--min-height:var(--bp-size-9, var(--bp-interaction-touch-target));--background:var(--bp-layer-container-background);--padding-block:0;--padding-inline:var(--bp-size-6)}[part=internal]{min-height:var(--min-height);display:flex;align-items:center;padding-inline:var(--padding-inline);padding-block:var(--padding-block);border-top:var(--cell-border-width, var(--bp-object-border-width-100)) solid var(--bp-object-border-color-100);color:var(--bp-text-color-500);background:var(--background);font-size:var(--bp-text-size-200);width:100%}::slotted(bp-grid-pagination),::slotted(bp-pagination){margin-left:auto}");export{a as default};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* Grid Footer
|
|
4
|
+
*
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import '@blueprintui/grid/include/core.js';
|
|
7
|
+
* ```
|
|
8
|
+
*
|
|
9
|
+
* @element bp-grid-footer
|
|
10
|
+
* @slot - footer content
|
|
11
|
+
* @cssprop --min-height
|
|
12
|
+
* @cssprop --background
|
|
13
|
+
* @cssprop --padding-block
|
|
14
|
+
* @cssprop --padding-inline
|
|
15
|
+
*/
|
|
16
|
+
export declare class BpGridFooter extends LitElement {
|
|
17
|
+
#private;
|
|
18
|
+
static styles: CSSStyleSheet[];
|
|
19
|
+
_colSpan: string;
|
|
20
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
21
|
+
connectedCallback(): void;
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{LitElement as t,html as e}from"lit";import{baseStyles as r}from"@blueprintui/components/internals";import s from"./element.css.js";class n extends t{static properties={_colSpan:{state:!0}};static styles=[r,s];constructor(){super();this._colSpan=""}#t=this.attachInternals();render(){return e`<slot role="gridcell" part="internal" .ariaColSpan="${this._colSpan}"></slot>`}connectedCallback(){super.connectedCallback(),this.slot="footer",this.#t.role="row"}}export{n as BpGridFooter};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const o=new CSSStyleSheet;o.replaceSync("@keyframes fadein{0%{opacity:0}to{opacity:1}}[hidden]{display:none!important}:host{--background:var(--bp-layer-container-background);--body-height:auto;--body-min-height:auto;--scrollbar-background:var(--background);--scrollbar-thumb-background:var(--bp-object-border-color-100);--column-height:48px;--row-height:48px;--scroll-padding-top:var(--column-height);--row-content-visibility:auto;--column-text-align:left;--cell-text-algin:left;--border:0;width:100%;display:block;position:relative}:host([range-selection]){user-select:none}:host([borders*='cell']) ::slotted(bp-grid-row),:host([borders*='column']) ::slotted(bp-grid-row){--cell-border-width:var(--bp-object-border-width-100)}:host([borders*='column']) ::slotted(bp-grid-row){--border-top:0;--border-bottom:0}:host([borders*='none']) ::slotted(bp-grid-row),:host([borders*='stripe']) ::slotted(bp-grid-row){--border-top:0;--border-bottom:0}::slotted(bp-grid-row:first-of-type){--border-top:0}::slotted(bp-grid-row:last-of-type){--border-bottom:var(--bp-object-border-width-100) solid var(--bp-object-border-color-100)}:host([borders*='stripe']) ::slotted(bp-grid-row:nth-child(even)){--bp-interaction-offset:var(--bp-interaction-hover-offset)}:host([column-align*='center']){--column-justify-content:center;--cell-justify-content:center}:host([column-align*='end']){--column-justify-content:flex-end;--cell-justify-content:flex-end}[part=internal]{border:var(--border);border-radius:var(--bp-object-border-radius-100);background:var(--background);position:relative}.scroll-container{overflow:auto;height:var(--body-height, 100%);min-height:var(--body-min-height, auto);width:100%;display:flex;flex-direction:column;scroll-padding-top:var(--scroll-padding-top);background:var(--bp-layer-container-background)}:host([scroll-lock]) .scroll-container{overflow:hidden}.body-row-group{display:flex;flex-direction:column;flex:1 1 0%;min-width:fit-content;margin-top:var(--bp-size-2)}.body-row-group:first-child,.column-row-group:first-child{display:contents}.column-row{display:grid;top:0;position:sticky;z-index:99;min-width:fit-content;grid-template-columns:var(--ch-grid);box-shadow:0 var(--bp-object-border-width-100)0 var(--bp-object-border-color-100)}::slotted(bp-grid-row:not([bp-draggable=target]):first-of-type){--box-shadow:var(--bp-object-border-width-100) solid transparent}::-webkit-scrollbar{width:var(--bp-size-5);height:var(--bp-size-5);background:0 0}::-webkit-scrollbar-track{margin-top:var(--bp-interaction-touch-target);box-shadow:inset 0 0 var(--bp-size-5) var(--scrollbar-background)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-background);border-radius:var(--bp-object-border-radius-100);border:var(--bp-size-2) solid var(--scrollbar-background)}::-webkit-scrollbar-corner{background:rgba(0 0 0 0%)}");export{o as default};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
import { BpGridRow } from '../row/element.js';
|
|
3
|
+
import { BpGridCell } from '../cell/element.js';
|
|
4
|
+
import { BpGridColumn } from '../column/element.js';
|
|
5
|
+
import { GridLayoutController } from './layout.controller.js';
|
|
6
|
+
/**
|
|
7
|
+
* Grid
|
|
8
|
+
*
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import '@blueprintui/grid/include/core.js';
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @element bp-grid
|
|
14
|
+
* @cssprop --background
|
|
15
|
+
* @cssprop --body-height
|
|
16
|
+
* @cssprop --scrollbar-background
|
|
17
|
+
* @cssprop --scrollbar-thumb-background
|
|
18
|
+
* @cssprop --column-height
|
|
19
|
+
* @cssprop --row-height
|
|
20
|
+
* @cssprop --scroll-padding-top
|
|
21
|
+
* @cssprop --row-content-visibility
|
|
22
|
+
* @cssprop --column-text-align
|
|
23
|
+
* @cssprop --cell-text-algin
|
|
24
|
+
*/
|
|
25
|
+
export declare class BpGrid extends LitElement {
|
|
26
|
+
#private;
|
|
27
|
+
i18n: {
|
|
28
|
+
sort: string;
|
|
29
|
+
expand: string;
|
|
30
|
+
close: string;
|
|
31
|
+
resize: string;
|
|
32
|
+
filter: string;
|
|
33
|
+
loading: string;
|
|
34
|
+
show: string;
|
|
35
|
+
hide: string;
|
|
36
|
+
previous: string;
|
|
37
|
+
next: string;
|
|
38
|
+
first: string;
|
|
39
|
+
last: string;
|
|
40
|
+
today: string;
|
|
41
|
+
browse: string;
|
|
42
|
+
removeFile: string;
|
|
43
|
+
files: string;
|
|
44
|
+
resizeColumn: string;
|
|
45
|
+
closeDetails: string;
|
|
46
|
+
noData: string;
|
|
47
|
+
action: string;
|
|
48
|
+
dropTarget: string;
|
|
49
|
+
firstPage: string;
|
|
50
|
+
previousPage: string;
|
|
51
|
+
nextPage: string;
|
|
52
|
+
lastPage: string;
|
|
53
|
+
pageSize: string;
|
|
54
|
+
};
|
|
55
|
+
height: string;
|
|
56
|
+
columnLayout: 'fixed' | 'flex';
|
|
57
|
+
borders: 'row' | 'cell' | 'column' | 'none' | 'stripe';
|
|
58
|
+
selectable: 'multi' | 'single' | null;
|
|
59
|
+
rangeSelection: boolean;
|
|
60
|
+
scrollLock: boolean;
|
|
61
|
+
elevation: 'raised' | 'flat';
|
|
62
|
+
protected _id: string;
|
|
63
|
+
protected gridLayoutController: GridLayoutController;
|
|
64
|
+
static styles: CSSStyleSheet[];
|
|
65
|
+
static controllers: Set<any>;
|
|
66
|
+
get keyGridControllerConfig(): {
|
|
67
|
+
grid: HTMLElement;
|
|
68
|
+
rows: HTMLElement[];
|
|
69
|
+
cells: (BpGridCell | BpGridColumn)[];
|
|
70
|
+
};
|
|
71
|
+
get gridLayoutControllerConfig(): {
|
|
72
|
+
columns: BpGridColumn[];
|
|
73
|
+
columnLayout: "fixed" | "flex";
|
|
74
|
+
height: string;
|
|
75
|
+
};
|
|
76
|
+
get gridColumnSizeControllerConfig(): {
|
|
77
|
+
columns: BpGridColumn[];
|
|
78
|
+
rows: BpGridRow[];
|
|
79
|
+
};
|
|
80
|
+
get keyNavGrid(): HTMLElement;
|
|
81
|
+
_internals: ElementInternals;
|
|
82
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
83
|
+
constructor();
|
|
84
|
+
connectedCallback(): Promise<void>;
|
|
85
|
+
}
|
package/grid/element.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__decorate as t}from"tslib";import{LitElement as e,html as o}from"lit";import{baseStyles as i,elevationStyles as r,I18nService as l,createId as s,attachRootNodeStyles as n,i18n as a,ariaMultiSelectable as c}from"@blueprintui/components/internals";import{interactionScrollVisibility as h}from"../internals/controllers/interaction-scroll-visibility.controller.js";import{GridLayoutController as u}from"./layout.controller.js";import d from"./element.css.js";import p from"./global.css.js";var m;let g=m=class extends e{static properties={i18n:{type:Object},height:{type:String,reflect:!0},columnLayout:{type:String,reflect:!0,attribute:"column-layout"},borders:{type:String,reflect:!0},selectable:{type:String,reflect:!0},rangeSelection:{type:Boolean,reflect:!0,attribute:"range-selection"},scrollLock:{type:Boolean,reflect:!0,attribute:"scroll-lock"},elevation:{type:String,reflect:!0},_id:{type:String,reflect:!0}};gridLayoutController=new u(this);static styles=[i,r,d];static controllers=new Set;get keyGridControllerConfig(){return{grid:this.keyNavGrid,rows:[this.#t,...Array.from(this.#e)],cells:[...Array.from(this.#o),...Array.from(this.#i)]}}get gridLayoutControllerConfig(){return{columns:Array.from(this.#o),columnLayout:this.columnLayout,height:this.height}}get gridColumnSizeControllerConfig(){return{columns:Array.from(this.#o),rows:Array.from(this.#e)}}get#o(){return this.querySelectorAll("bp-grid-column")}get#t(){return this.shadowRoot.querySelector(".column-row-group")}get#e(){return this.querySelectorAll("bp-grid-row")}get#i(){return this.querySelectorAll("bp-grid-cell")}get#r(){return this.querySelector("bp-grid-placeholder")}get#l(){return this.querySelector("bp-grid-footer")}get keyNavGrid(){return this.shadowRoot.querySelector(".scroll-container")}_internals=this.attachInternals();render(){return o`<div role="presentation" elevation part="internal"><div role="presentation" class="scroll-container"><div role="presentation" class="column-row-group"><div role="row" aria-rowindex="1" class="column-row"><slot name="columns"><bp-grid-column draggable-hidden><span sr-only>${this.i18n.noData}</span></bp-grid-column></slot></div></div><slot role="presentation" class="body-row-group"></slot></div><slot name="footer"></slot><slot name="detail"></slot></div>`}constructor(){super();this._internals.role="grid",this.#s(),this.i18n=l.keys.actions,this.columnLayout="fixed",this.borders="row",this.rangeSelection=!1,this.scrollLock=!1,this._id=s()}async connectedCallback(){super.connectedCallback(),n(this.parentNode,[p]),await this.updateComplete,m.controllers.forEach((t=>new t(this))),this.#n(),this.shadowRoot.addEventListener("slotchange",(()=>this.updateComplete.then((()=>this.#n()))))}#s(){this.addEventListener("sort",(t=>{const e=t.composedPath().find((t=>"BP-GRID-COLUMN"===t.tagName));e&&(e.ariaSort=t.detail)}))}#a=0;get#c(){return this.#a++,1===this.#a&&!this.rangeSelection&&!Array.from(this.#o).find((t=>""!==t.position||void 0!==t.type))}async#n(){this.#c||(this.#h(),this.#u(),this.#d(),this.#p(),this.#m(),this.#g())}#h(){const t=Math.max(this.#e?.length,1),e=this.#l?1:0;this._internals.ariaRowCount=""+(1+t+e),this._internals.ariaColCount=""+this.#o.length}#u(){this.#o.forEach(((t,e)=>t.ariaColIndex=""+(e+1)))}#d(){this.#e?.forEach(((t,e)=>t.ariaRowIndex=""+(e+2)))}#p(){this.#i?.forEach(((t,e)=>t.ariaColIndex=""+(e%this.#o.length+1)))}#m(){this.#r&&(this.#r.ariaRowCount=""+(this.#e.length+1),this.#r._colSpan=this._internals.ariaColCount)}#g(){this.#l&&(this.#l.ariaRowCount=""+(this.#e.length+2),this.#l._colSpan=this._internals.ariaColCount)}};g=m=t([a({key:"actions"}),c(),h()],g);export{g as BpGrid};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=new CSSStyleSheet;e.replaceSync("bp-grid-row:has(bp-checkbox:--checked),bp-grid-row:has(bp-radio:--checked){--bp-interaction-offset:var(--bp-interaction-selected-offset)}");export{e as default};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ReactiveControllerHost } from 'lit';
|
|
2
|
+
export declare type Column = HTMLElement & {
|
|
3
|
+
width: string;
|
|
4
|
+
type: string;
|
|
5
|
+
};
|
|
6
|
+
declare type Grid = HTMLElement & {
|
|
7
|
+
gridLayoutControllerConfig: {
|
|
8
|
+
columns: NodeListOf<Column> | Column[];
|
|
9
|
+
columnLayout: 'fixed' | 'flex';
|
|
10
|
+
height?: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export declare class GridLayoutController {
|
|
14
|
+
#private;
|
|
15
|
+
private host;
|
|
16
|
+
constructor(host: ReactiveControllerHost & Grid);
|
|
17
|
+
hostConnected(): Promise<void>;
|
|
18
|
+
hostUpdated(): void;
|
|
19
|
+
hostDisconnected(): void;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{listenForAttributeListChange as t,isNumericString as i}from"@blueprintui/components/internals";import{onChildListMutation as s}from"../internals/utils/events.js";class e{host;#t=[];#i;get#s(){return Array.from(this.#i??[])}get#e(){return this.host.gridLayoutControllerConfig}get#o(){return this.#s.filter((t=>!t.hidden))}get#h(){return this.#o["rtl"===this.host.getAttribute("dir")?0:this.#o.length-1]}constructor(t){this.host=t,this.host.addController(this)}async hostConnected(){await this.host.updateComplete,this.#r(),this.host.addEventListener("resizeChange",(()=>this.#n()),{once:!0,capture:!0}),this.#t.push(s(this.host,(async t=>{await this.host.updateComplete,t&&this.#l(t)&&this.#r()}))),this.#t.push(t(this.host,["hidden"],(()=>this.#r())))}hostUpdated(){this.#e.height&&this.host.style.setProperty("--body-height",i(this.#e.height)?this.#e.height+"px":this.#e.height)}hostDisconnected(){this.#t.forEach((t=>t.disconnect()))}#l(t){return[...Array.from(t.removedNodes),...Array.from(t.addedNodes)].find((t=>"BP-GRID-COLUMN"===t.tagName))}#n(){"fixed"===this.#e.columnLayout&&(this.#o.filter((t=>t.width)).forEach((t=>this.host.style.setProperty("--ch"+t.ariaColIndex,i(t.width)?t.width+"px":t.width))),this.#o.filter((t=>!t.width&&parseInt(t.ariaColIndex)!==this.#s.length)).forEach((t=>this.host.style.setProperty("--ch"+t.ariaColIndex,parseInt(getComputedStyle(t).width)+"px"))),this.host.style.setProperty("--ch"+this.#h.ariaColIndex,`minmax(${this.#d()??parseInt(getComputedStyle(this.#h).width)+"px"}, 100%)`))}#d(){return i(this.#h.width)?this.#h.width+"px":this.#h.width?this.#h.width:null}#r(){this.#i=this.#e.columns,this.#a(),this.#u()}#a(){const t=this.#s.filter((t=>!t.hidden)).reduce(((t,s,e)=>`${t} var(--ch${e+1}, ${(i(s.width)?s.width+"px":s.width)||"1fr"})`),"");this.host.style.setProperty("--ch-grid",t)}#u(){this.#o.forEach(((t,i)=>{t.removeAttribute("draggable-hidden"),"action"===t.type&&"action"===this.#o[i+1]?.type&&t.setAttribute("draggable-hidden","")})),this.#h?.setAttribute("draggable-hidden","")}}export{e as GridLayoutController};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import '@blueprintui/components/include/button-icon.js';
|
|
2
|
+
import { BpGrid } from '../grid/element.js';
|
|
3
|
+
import { BpGridRow } from '../row/element.js';
|
|
4
|
+
import { BpGridCell } from '../cell/element.js';
|
|
5
|
+
import { BpGridColumn } from '../column/element.js';
|
|
6
|
+
declare global {
|
|
7
|
+
interface HTMLElementTagNameMap {
|
|
8
|
+
'bp-grid': BpGrid;
|
|
9
|
+
'bp-grid-row': BpGridRow;
|
|
10
|
+
'bp-grid-cell': BpGridCell;
|
|
11
|
+
'bp-grid-column': BpGridColumn;
|
|
12
|
+
}
|
|
13
|
+
}
|
package/include/core.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"@blueprintui/components/include/button-icon.js";import{BpGrid as e}from"../grid/element.js";import{BpGridRow as m}from"../row/element.js";import{BpGridCell as t}from"../cell/element.js";import{BpGridColumn as o}from"../column/element.js";customElements.get("bp-grid")||customElements.define("bp-grid",e),customElements.get("bp-grid-row")||customElements.define("bp-grid-row",m),customElements.get("bp-grid-cell")||customElements.define("bp-grid-cell",t),customElements.get("bp-grid-column")||customElements.define("bp-grid-column",o);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BpGridFooter as e}from"../footer/element.js";customElements.get("bp-grid-footer")||customElements.define("bp-grid-footer",e);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BpGrid as r}from"../grid/element.js";import{KeyGridController as o}from"../internals/controllers/key-grid.controller.js";r.controllers.add(o);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BpGridPagination } from '../pagination/element.js';
|
|
2
|
+
import '@blueprintui/components/include/button-icon.js';
|
|
3
|
+
import '@blueprintui/components/include/pagination.js';
|
|
4
|
+
import '@blueprintui/components/include/select.js';
|
|
5
|
+
import '@blueprintui/components/include/input.js';
|
|
6
|
+
declare global {
|
|
7
|
+
interface HTMLElementTagNameMap {
|
|
8
|
+
'bp-grid-pagination': BpGridPagination;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BpGridPagination as n}from"../pagination/element.js";import"@blueprintui/components/include/button-icon.js";import"@blueprintui/components/include/pagination.js";import"@blueprintui/components/include/select.js";import"@blueprintui/components/include/input.js";customElements.get("bp-grid-pagination")||customElements.define("bp-grid-pagination",n);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BpGridPlaceholder as e}from"../placeholder/element.js";customElements.get("bp-grid-placeholder")||customElements.define("bp-grid-placeholder",e);
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './cell/element.js';
|
|
2
|
+
export * from './column/element.js';
|
|
3
|
+
export * from './footer/element.js';
|
|
4
|
+
export * from './pagination/element.js';
|
|
5
|
+
export * from './placeholder/element.js';
|
|
6
|
+
export * from './row/element.js';
|
|
7
|
+
export * from './grid/element.js';
|
package/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{BpGridCell}from"./cell/element.js";export{BpGridColumn}from"./column/element.js";export{BpGridFooter}from"./footer/element.js";export{BpGridPagination}from"./pagination/element.js";export{BpGridPlaceholder}from"./placeholder/element.js";export{BpGridRow}from"./row/element.js";export{BpGrid}from"./grid/element.js";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ReactiveController, ReactiveElement } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* Default to `content-visibility: auto` for lazy render, on scroll set all row items to `content-visibility: visible` for eager render
|
|
4
|
+
* Enables fast initial render and smooth eager rendering anytime after for items within a bounded scroll box.
|
|
5
|
+
*/
|
|
6
|
+
export declare function interactionScrollVisibility<T extends ReactiveElement>(): ClassDecorator;
|
|
7
|
+
export declare class InteractionScrollVisibilityController<T extends ReactiveElement> implements ReactiveController {
|
|
8
|
+
#private;
|
|
9
|
+
private host;
|
|
10
|
+
constructor(host: T);
|
|
11
|
+
hostConnected(): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function t(){return t=>t.addInitializer((t=>new i(t)))}class i{host;constructor(t){this.host=t,this.host.addController(this)}async hostConnected(){await this.host.updateComplete,this.host.renderRoot.addEventListener("scroll",(()=>this.#t()),{once:!0,capture:!0}),this.host.renderRoot.addEventListener("pointerdown",(()=>this.#t()),{once:!0,capture:!0})}#t(){this.host.style.setProperty("--row-content-visibility","visibile")}}export{i as InteractionScrollVisibilityController,t as interactionScrollVisibility};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ReactiveController, ReactiveElement } from 'lit';
|
|
2
|
+
export interface KeyGridConfig {
|
|
3
|
+
keyGridControllerConfig: {
|
|
4
|
+
grid?: HTMLElement;
|
|
5
|
+
rows: NodeListOf<HTMLElement> | HTMLElement[];
|
|
6
|
+
cells: NodeListOf<HTMLElement> | HTMLElement[];
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* https://w3c.github.io/aria-practices/#gridNav_focus
|
|
11
|
+
*/
|
|
12
|
+
export declare function keyGrid<T extends ReactiveElement & KeyGridConfig>(): ClassDecorator;
|
|
13
|
+
export declare class KeyGridController<T extends ReactiveElement & KeyGridConfig> implements ReactiveController {
|
|
14
|
+
#private;
|
|
15
|
+
private host;
|
|
16
|
+
constructor(host: T);
|
|
17
|
+
hostConnected(): Promise<void>;
|
|
18
|
+
hostDisconnected(): void;
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{onFirstInteraction as t,onChildListMutation as e}from"../utils/events.js";import{getFlattenedDOMTree as s,getFlattenedFocusableItems as i}from"../utils/traversal.js";import{contextMenuClick as r}from"../utils/dom.js";import{validKeyNavigationCode as o}from"../utils/keynav.js";import{initializeKeyListItems as l,simpleFocusable as n,getActiveElement as h,setActiveKeyListItem as c,focusElement as d}from"../utils/focus.js";import{getNextKeyGridItem as a}from"./key.utils.js";function f(){return t=>t.addInitializer((t=>new u(t)))}class u{host;#t=[];get#e(){return this.host.keyGridControllerConfig.grid}get#s(){return Array.from(this.host.keyGridControllerConfig.rows)}get#i(){return Array.from(this.host.keyGridControllerConfig.cells)}get#r(){return Array.from(this.#i).find((t=>0===t.tabIndex))}constructor(t){this.host=t,this.host.addController(this)}async hostConnected(){await this.host.updateComplete,await t(this.host),l(this.#i),this.#e.addEventListener("mouseup",(t=>this.#o(t))),this.#e.addEventListener("keydown",(t=>this.#l(t))),this.#e.addEventListener("keyup",(t=>this.#n(t))),this.#t.push(e(this.#e,(()=>l(this.#i))))}hostDisconnected(){this.#t.forEach((t=>t.disconnect()))}#o(t){if(!r(t)){const e=t.composedPath().find((t=>this.#i.find((e=>e===t))));e&&this.#h(t,e)}}#l(t){if(o(t)&&n(h())){const{x:e,y:i}=a(this.#i,this.#s,{code:t.code,ctrlKey:t.ctrlKey,dir:this.host.dir}),r=Array.from(s(this.#s[i])).filter((t=>!!this.#i.find((e=>e===t))))[e];this.#h(t,r),t.preventDefault()}}#h(t,e){c(this.#i,e);const s=i(e).filter((t=>!t.hidden&&!t.ariaHidden)),r=s.filter((t=>n(t)));1===r.length&&1===s.length?d(r[0]):d(e),e.dispatchEvent(new CustomEvent("bpKeyChange",{bubbles:!0,detail:{code:t.code,shiftKey:t.shiftKey,activeItem:e}}))}#n(t){"Escape"===t.code&&this.#r?.focus(),"Enter"===t.code&&this.#r===t.composedPath()[0]&&i(this.#r)[0]?.focus()}}export{u as KeyGridController,f as keyGrid};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{KeyNavigationCode as r}from"../utils/keynav.js";import{getFlattenedDOMTree as t}from"../utils/traversal.js";function o(o,e,n){const i=o.find((r=>0===r.tabIndex)),f=e.find((r=>t(r).find((r=>r===i)))),d=Array.from(t(f)).filter((r=>!!o.find((t=>t===r)))),l=e.length-1,w=d.length-1,{code:a,ctrlKey:s,dir:A}=n;let g=d.indexOf(i),m=e.indexOf(f);const c="rtl"===A?r.ArrowRight:r.ArrowLeft,p="rtl"===A?r.ArrowLeft:r.ArrowRight;return a===r.ArrowUp&&0!==m?m-=1:a===r.ArrowDown&&m<l?m+=1:a===c&&0!==g?g-=1:a===p&&g<w?g+=1:a===r.End?(g=w,s&&(m=l)):a===r.Home?(g=0,s&&(m=0)):a===r.PageUp?m=m-4>0?m-4:0:a===r.PageDown&&(m=m+4<l?m+4:l),{x:g,y:m}}export{o as getNextKeyGridItem};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{InteractionScrollVisibilityController,interactionScrollVisibility}from"./controllers/interaction-scroll-visibility.controller.js";export{KeyGridController,keyGrid}from"./controllers/key-grid.controller.js";export{contextMenuClick}from"./utils/dom.js";export{onChildListMutation,onFirstInteraction}from"./utils/events.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function t(t){return 2===t.buttons&&!t.ctrlKey||1===t.buttons&&t.ctrlKey}export{t as contextMenuClick};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e,n){const t=new MutationObserver((e=>{for(const t of e)"childList"===t.type&&n(t)}));return t.observe(e,{childList:!0}),t}function n(e){return new Promise((n=>{const t=()=>{n(null),e.__bpTouched=!0};e.__bpTouched&&n(null),e.addEventListener("touchstart",t,{once:!0,passive:!0}),e.addEventListener("mouseover",t,{once:!0,passive:!0}),e.addEventListener("keydown",t,{once:!0,passive:!0}),e.addEventListener("focus",t,{once:!0,passive:!0})}))}export{e as onChildListMutation,n as onFirstInteraction};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function focusable(element: Element): boolean;
|
|
2
|
+
/** focus primitives, any interactive element does not requiring advanced keyboard interactions like arrow/navigation */
|
|
3
|
+
export declare function simpleFocusable(element: Element): boolean;
|
|
4
|
+
export declare function getActiveElement(root?: Document | ShadowRoot): Element | null;
|
|
5
|
+
export declare function focusElement(element: HTMLElement): void;
|
|
6
|
+
export declare function setActiveKeyListItem(items: NodeListOf<HTMLElement> | HTMLElement[], item: HTMLElement): void;
|
|
7
|
+
export declare function initializeKeyListItems(items: NodeListOf<HTMLElement> | HTMLElement[]): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function t(t){return t.matches("a[href],area[href],input:not([disabled]),button:not([disabled]),select:not([disabled]),textarea:not([disabled]),iframe,object,embed,*[tabindex],*[contenteditable=true],[role=button]:not([disabled])")}function e(t){return t.matches("a[href],button:not([disabled]),input[type=checkbox],input[type=radio],object,embed,*[tabindex],[role=button]:not([disabled])")}function n(t=document){return t.activeElement&&t.activeElement.shadowRoot?n(t.activeElement.shadowRoot)??t.activeElement:t.activeElement}function o(e){e&&!t(e)?(e.setAttribute("tabindex","-1"),e.focus(),e.addEventListener("blur",(()=>e.removeAttribute("tabindex")),{once:!0})):e?.focus()}function a(t,e){t.forEach((t=>t.tabIndex=-1)),e.tabIndex=0}function d(t){t.forEach((t=>t.tabIndex=-1)),t[0].tabIndex=0}export{o as focusElement,t as focusable,n as getActiveElement,d as initializeKeyListItems,a as setActiveKeyListItem,e as simpleFocusable};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function validKeyNavigationCode(e: KeyboardEvent): boolean;
|
|
2
|
+
export declare enum KeyNavigationCode {
|
|
3
|
+
ArrowUp = "ArrowUp",
|
|
4
|
+
ArrowDown = "ArrowDown",
|
|
5
|
+
ArrowLeft = "ArrowLeft",
|
|
6
|
+
ArrowRight = "ArrowRight",
|
|
7
|
+
End = "End",
|
|
8
|
+
Home = "Home",
|
|
9
|
+
PageUp = "PageUp",
|
|
10
|
+
PageDown = "PageDown"
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function o(o){return o.code===r.ArrowUp||o.code===r.ArrowDown||o.code===r.ArrowLeft||o.code===r.ArrowRight||o.code===r.End||o.code===r.Home||o.code===r.PageUp||o.code===r.PageDown}var r;!function(o){o.ArrowUp="ArrowUp",o.ArrowDown="ArrowDown",o.ArrowLeft="ArrowLeft",o.ArrowRight="ArrowRight",o.End="End",o.Home="Home",o.PageUp="PageUp",o.PageDown="PageDown"}(r||(r={}));export{r as KeyNavigationCode,o as validKeyNavigationCode};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function getFlattenedFocusableItems(element: Node, depth?: number): HTMLElement[];
|
|
2
|
+
export declare function getFlattenedDOMTree(node: Node, depth?: number): HTMLElement[];
|
|
3
|
+
export declare function getChildren(node: any): any;
|
|
4
|
+
export declare function isObject(val: any): boolean;
|
|
5
|
+
export declare function mergeObjects(...objs: object[]): object;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{focusable as r}from"./focus.js";function n(n,e=10){return t(n,e).filter((n=>r(n)))}function t(r,n=10){return Array.from(e(r)).reduce(((r,o)=>[...r,[o,[...Array.from(e(o)).map((r=>[r,t(r,n)]))]]]),[]).flat(n)}function e(r){if(r.documentElement)return r.documentElement.children;if(r.shadowRoot)return r.shadowRoot.children;if(r.assignedElements){const n=r.assignedElements();return n.length?n:r.children}return r.children}function o(r){return r?.constructor===Object}function c(...r){const n={};return r.map((r=>o(r)?{...r}:{})).forEach((r=>{Object.keys(r).forEach((t=>{const e=r[t];Array.isArray(e)?n[t]=Array.from(e):o(e)?n[t]=c(n[t]||{},e):n[t]=e}))})),n}export{e as getChildren,t as getFlattenedDOMTree,n as getFlattenedFocusableItems,o as isObject,c as mergeObjects};
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@blueprintui/grid",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"main": "./index.js",
|
|
5
|
+
"module": "./index.js",
|
|
6
|
+
"typings": "./index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"files": [
|
|
9
|
+
"*"
|
|
10
|
+
],
|
|
11
|
+
"customElements": "./custom-elements.json",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"web component",
|
|
14
|
+
"datagrid",
|
|
15
|
+
"datatable",
|
|
16
|
+
"ui"
|
|
17
|
+
],
|
|
18
|
+
"description": "",
|
|
19
|
+
"homepage": "https://blueprintui.dev",
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "https://blueprintui.dev"
|
|
23
|
+
},
|
|
24
|
+
"bugs": {
|
|
25
|
+
"url": "https://blueprintui.dev"
|
|
26
|
+
},
|
|
27
|
+
"author": "Crylan Software",
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"sideEffects": [
|
|
30
|
+
"./include/*.js"
|
|
31
|
+
],
|
|
32
|
+
"exports": {
|
|
33
|
+
"./package.json": "./package.json",
|
|
34
|
+
"./custom-elements.json": "./custom-elements.json",
|
|
35
|
+
".": "./index.js",
|
|
36
|
+
"./include/*": "./include/*",
|
|
37
|
+
"./internals": "./internals/index.js",
|
|
38
|
+
"./*": "./*/index.js"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@blueprintui/components": "^0.0.31",
|
|
42
|
+
"lit": "^2.5.0"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=new CSSStyleSheet;e.replaceSync('@import "./../../styles/module.tokens";[part=internal]{display:flex;gap:var(--bp-space-sm)}button{background:0 0;border:0;cursor:pointer}button[disabled]{cursor:not-allowed}');export{e as default};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* Grid Pagination
|
|
4
|
+
*
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import '@blueprintui/grid/include/core.js';
|
|
7
|
+
* ```
|
|
8
|
+
*
|
|
9
|
+
* ```html
|
|
10
|
+
* <bp-grid-pagination></bp-grid-pagination>
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @element bp-grid-pagination
|
|
14
|
+
* @event page
|
|
15
|
+
* @event size
|
|
16
|
+
*/
|
|
17
|
+
export declare class BpGridPagination extends LitElement {
|
|
18
|
+
#private;
|
|
19
|
+
i18n: {
|
|
20
|
+
sort: string;
|
|
21
|
+
expand: string;
|
|
22
|
+
close: string;
|
|
23
|
+
resize: string;
|
|
24
|
+
filter: string;
|
|
25
|
+
loading: string;
|
|
26
|
+
show: string;
|
|
27
|
+
hide: string;
|
|
28
|
+
previous: string;
|
|
29
|
+
next: string;
|
|
30
|
+
first: string;
|
|
31
|
+
last: string;
|
|
32
|
+
today: string;
|
|
33
|
+
browse: string;
|
|
34
|
+
removeFile: string;
|
|
35
|
+
files: string;
|
|
36
|
+
resizeColumn: string;
|
|
37
|
+
closeDetails: string;
|
|
38
|
+
noData: string;
|
|
39
|
+
action: string;
|
|
40
|
+
dropTarget: string;
|
|
41
|
+
firstPage: string;
|
|
42
|
+
previousPage: string;
|
|
43
|
+
nextPage: string;
|
|
44
|
+
lastPage: string;
|
|
45
|
+
pageSize: string;
|
|
46
|
+
};
|
|
47
|
+
page: number;
|
|
48
|
+
pageSize: number;
|
|
49
|
+
pageCount: number;
|
|
50
|
+
pageSizeOptions: number[];
|
|
51
|
+
static styles: CSSStyleSheet[];
|
|
52
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
53
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__decorate as e}from"tslib";import{LitElement as t,html as i}from"lit";import{I18nService as a,baseStyles as s,i18n as p}from"@blueprintui/components/internals";import n from"./element.css.js";let g=class extends t{static properties={i18n:{type:Object},page:{type:Number},pageSize:{type:Number,attribute:"page-size"},pageCount:{type:Number,attribute:"page-count"},pageSizeOptions:{type:Array,attribute:"page-size-options"}};constructor(){super(...arguments);this.i18n=a.keys.actions,this.page=1,this.pageSize=10,this.pageCount=1,this.pageSizeOptions=[]}static styles=[s,n];render(){return i`<section part="internal"><bp-pagination aria-label="pagination">${this.pageSizeOptions.length?i`<bp-select .value="${this.pageSize.toString()}" .ariaLabel="${this.i18n.pageSize}" @input="${e=>this.#e(parseInt(e.target.value))}">${this.pageSizeOptions.map((e=>i`<bp-option value="${e}" ?selected="${e===this.pageSize}">${e}</bp-option>`))}</bp-select>`:""}<bp-button-icon slot="first" .ariaLabel="${this.i18n.firstPage}" .disabled="${1===this.page}" @click="${this.#t}"></bp-button-icon><bp-button-icon slot="prev" .ariaLabel="${this.i18n.previousPage}" .disabled="${1===this.page}" @click="${this.#i}"></bp-button-icon><bp-field novalidate><bp-input type="number" size="${e=this.page,1+(0|Math.log10((e^e>>31)-(e>>31)))}" min="1" value="${this.page}" max="${this.pageCount}" .ariaLabel="${`${this.page} of ${this.pageCount}`}" @input="${this.#a}"></bp-input><bp-field-message>/ ${this.pageCount}</bp-field-message></bp-field><bp-button-icon slot="next" .ariaLabel="${this.i18n.nextPage}" ?disabled="${this.page===this.pageCount}" @click="${this.#s}"></bp-button-icon><bp-button-icon slot="last" .ariaLabel="${this.i18n.lastPage}" ?disabled="${this.page===this.pageCount}" @click="${this.#p}"></bp-button-icon></bp-pagination></section>`;var e}#a(e){this.#n(e.target.valueAsNumber)}#s(){this.#n(this.page+1)}#i(){this.#n(this.page-1)}#t(){this.#n(1)}#p(){this.#n(this.pageCount)}#n(e){this.dispatchEvent(new CustomEvent("page",{detail:e}))}#e(e){this.dispatchEvent(new CustomEvent("size",{detail:e}))}};g=e([p({key:"actions"})],g);export{g as BpGridPagination};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const a=new CSSStyleSheet;a.replaceSync(":host{--background:var(--bp-layer-container-background);--box-shadow:none;--color:var(--bp-text-color-500);--padding:var(--bp-size-4);--gap:var(--bp-space-md);content-visibility:var(--row-content-visibility, auto);flex:1}[part=internal]{box-shadow:var(--box-shadow);padding:var(--padding);min-height:var(--bp-size-8);background:var(--background);width:100%;height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--gap);position:relative;grid-column:1/-1;color:var(--color);text-align:center}:host([draggable='false']) [part=internal]{min-height:var(--bp-size-10)}:host([bp-draggable*='target']){--box-shadow:inset 0 var(--bp-object-border-width-300) 0 calc(var(--bp-size-1) * -1) var(--bp-interaction-accent-background)}");export{a as default};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* Grid Placeholder
|
|
4
|
+
*
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import '@blueprintui/grid/include/core.js';
|
|
7
|
+
* ```
|
|
8
|
+
*
|
|
9
|
+
* @element bp-grid-placeholder
|
|
10
|
+
*/
|
|
11
|
+
export declare class BpGridPlaceholder extends LitElement {
|
|
12
|
+
#private;
|
|
13
|
+
i18n: {
|
|
14
|
+
sort: string;
|
|
15
|
+
expand: string;
|
|
16
|
+
close: string;
|
|
17
|
+
resize: string;
|
|
18
|
+
filter: string;
|
|
19
|
+
loading: string;
|
|
20
|
+
show: string;
|
|
21
|
+
hide: string;
|
|
22
|
+
previous: string;
|
|
23
|
+
next: string;
|
|
24
|
+
first: string;
|
|
25
|
+
last: string;
|
|
26
|
+
today: string;
|
|
27
|
+
browse: string;
|
|
28
|
+
removeFile: string;
|
|
29
|
+
files: string;
|
|
30
|
+
resizeColumn: string;
|
|
31
|
+
closeDetails: string;
|
|
32
|
+
noData: string;
|
|
33
|
+
action: string;
|
|
34
|
+
dropTarget: string;
|
|
35
|
+
firstPage: string;
|
|
36
|
+
previousPage: string;
|
|
37
|
+
nextPage: string;
|
|
38
|
+
lastPage: string;
|
|
39
|
+
pageSize: string;
|
|
40
|
+
};
|
|
41
|
+
_colSpan: string;
|
|
42
|
+
static styles: CSSStyleSheet[];
|
|
43
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
44
|
+
connectedCallback(): void;
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__decorate as t}from"tslib";import{LitElement as e,html as r}from"lit";import{I18nService as s,baseStyles as n,i18n as i}from"@blueprintui/components/internals";import a from"./element.css.js";let o=class extends e{static properties={i18n:{type:Object},_colSpan:{state:!0}};constructor(){super(...arguments);this.i18n=s.keys.actions,this._colSpan="0"}static styles=[n,a];#t=this.attachInternals();render(){return r`<slot role="gridcell" part="internal" .ariaColSpan="${this._colSpan}">${"false"!==this.getAttribute("draggable")?r`<p>${this.i18n.noData}</p>`:r`<p sr-only>${this.i18n.dropTarget}</p>`}</slot>`}connectedCallback(){super.connectedCallback(),this.#t.role="row"}};o=t([i({key:"actions"})],o);export{o as BpGridPlaceholder};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const o=new CSSStyleSheet;o.replaceSync(":host{--background:var(--bp-layer-container-background);--min-height:var(--row-height);--border-top:var(--bp-object-border-width-100) solid var(--bp-object-border-color-100);--border-bottom:0;--box-shadow:none;content-visibility:var(--row-content-visibility, auto);contain-intrinsic-size:auto var(--min-height)}:host(:hover) ::slotted(bp-grid-cell){--bp-interaction-offset:var(--bp-interaction-hover-offset)}:host([selected]) ::slotted(bp-grid-cell){--bp-interaction-offset:var(--bp-interaction-selected-offset)}slot{display:grid;grid-template-columns:var(--ch-grid);box-shadow:var(--box-shadow);background:var(--background);min-height:var(--min-height);border-top:var(--border-top);border-bottom:var(--border-bottom)}:host([position='fixed']),:host([position='sticky']){--row-content-visibility:visible;--background:var(--bp-layer-container-background);--bp-interaction-offset:var(--bp-interaction-selected-offset);--border-bottom:var(--bp-object-border-width-100) solid var(--bp-object-border-color-100);z-index:99;--border-bottom:0;--box-shadow:0 var(--bp-object-border-width-200) var(--bp-object-border-width-100) -1px var(--bp-object-border-color-100);position:sticky;top:calc(var(--min-height) + var(--bp-size-1))}:host([draggable='true']){-webkit-user-drag:element;user-select:none}:host([bp-draggable*='target']){--box-shadow:inset 0 var(--bp-object-border-width-300) 0 calc(var(--bp-size-1) * -1) var(--bp-interaction-accent-background)}");export{o as default};
|
package/row/element.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* Grid Row
|
|
4
|
+
*
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import '@blueprintui/grid/include/core.js';
|
|
7
|
+
* ```
|
|
8
|
+
*
|
|
9
|
+
* @element bp-grid-row
|
|
10
|
+
* @cssprop --border-top
|
|
11
|
+
* @cssprop --border-bottom
|
|
12
|
+
* @cssprop --background
|
|
13
|
+
* @cssprop --min-height
|
|
14
|
+
*/
|
|
15
|
+
export declare class BpGridRow extends LitElement {
|
|
16
|
+
#private;
|
|
17
|
+
selected: boolean;
|
|
18
|
+
position: 'fixed' | 'sticky' | '';
|
|
19
|
+
static styles: CSSStyleSheet[];
|
|
20
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
21
|
+
constructor();
|
|
22
|
+
}
|
package/row/element.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{LitElement as t,html as e}from"lit";import{baseStyles as r,interactionStyles as s}from"@blueprintui/components/internals";import{GridRowPositionController as o}from"./position.controller.js";import n from"./element.css.js";class i extends t{static properties={selected:{type:Boolean,reflect:!0},position:{type:String,reflect:!0}};static styles=[r,s,n];#t=this.attachInternals();render(){return e`<slot></slot>`}constructor(){super();new o(this),this.#t.role="row"}}export{i as BpGridRow};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactiveControllerHost } from 'lit';
|
|
2
|
+
export declare type GridRowPosition = ReactiveControllerHost & HTMLElement & {
|
|
3
|
+
position: '' | 'fixed' | 'sticky';
|
|
4
|
+
};
|
|
5
|
+
export declare class GridRowPositionController {
|
|
6
|
+
private host;
|
|
7
|
+
constructor(host: GridRowPosition);
|
|
8
|
+
hostUpdated(): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
class t{host;constructor(t){this.host=t,this.host.addController(this)}hostUpdated(){"fixed"!==this.host.position&&"sticky"!==this.host.position||this.host.parentElement?.style.setProperty("--scroll-padding-top","calc(var(--row-height) * 2)")}}export{t as GridRowPositionController};
|