@revolist/revogrid 3.6.8 → 3.6.10

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.
@@ -63,6 +63,7 @@ function defineCustomElement$1() {
63
63
  break;
64
64
  } });
65
65
  }
66
+ defineCustomElement$1();
66
67
 
67
68
  const RevogrClipboard = Clipboard;
68
69
  const defineCustomElement = defineCustomElement$1;
@@ -1 +1 @@
1
- {"file":"revogr-clipboard.js","mappings":";;;;;MAIa,SAAS;;;;;;;EAGqB,OAAO,CAAC,CAAiB;IAChE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC,CAAC,cAAc,EAAE,CAAC;GACpB;EACuC,WAAW,CAAC,CAAiB;IACnE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,cAAc,EAAE,CAAC;GACpB;EACS,MAAM,MAAM,CAAC,CAAe,EAAE,IAA8B;IACpE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;GAC5D;EAED,UAAU,CAAC,IAA6B;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;GACvD;EAEO,SAAS,CAAC,IAAY;IAC5B,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;MAClB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KAClC;IACD,OAAO,MAAM,CAAC;GACf;EAEO,SAAS,CAAC,IAAY;IAC5B,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3F,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;MAC1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KAClE;IACD,OAAO,MAAM,CAAC;GACf;EAEO,OAAO,CAAC,CAAiB;IAC/B,OAAO,CAAC,CAAC,aAAa,KAAM,MAA6D,aAA7D,MAAM,uBAAN,MAAM,CAAyD,aAAa,CAAA,CAAC;GAC1G;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/clipboard/revogr-clipboard.tsx"],"sourcesContent":["import { Component, Listen, Method, Event, EventEmitter } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\n\n@Component({ tag: 'revogr-clipboard' })\nexport class Clipboard {\n @Event({ bubbles: false }) copyRegion: EventEmitter<DataTransfer>;\n @Event({ bubbles: false }) pasteRegion: EventEmitter<string[][]>;\n @Listen('paste', { target: 'document' }) onPaste(e: ClipboardEvent) {\n const clipboardData = this.getData(e);\n const isHTML = clipboardData.types.indexOf('text/html') > -1;\n const data = isHTML ? clipboardData.getData('text/html') : clipboardData.getData('text');\n const parsedData = isHTML ? this.htmlParse(data) : this.textParse(data);\n this.pasteRegion.emit(parsedData);\n e.preventDefault();\n }\n @Listen('copy', { target: 'document' }) copyStarted(e: ClipboardEvent) {\n this.copyRegion.emit(this.getData(e));\n e.preventDefault();\n }\n @Method() async doCopy(e: DataTransfer, data?: RevoGrid.DataFormat[][]) {\n e.setData('text/plain', data ? this.parserCopy(data) : '');\n }\n\n parserCopy(data: RevoGrid.DataFormat[][]) {\n return data.map(rgRow => rgRow.join('\\t')).join('\\n');\n }\n\n private textParse(data: string) {\n const result: string[][] = [];\n const rows = data.split(/\\r\\n|\\n|\\r/);\n for (let y in rows) {\n result.push(rows[y].split('\\t'));\n }\n return result;\n }\n\n private htmlParse(data: string) {\n const result: string[][] = [];\n const table = document.createRange().createContextualFragment(data).querySelector('table');\n for (const rgRow of Array.from(table.rows)) {\n result.push(Array.from(rgRow.cells).map(cell => cell.innerText));\n }\n return result;\n }\n\n private getData(e: ClipboardEvent) {\n return e.clipboardData || ((window as unknown) as { clipboardData: DataTransfer | null })?.clipboardData;\n }\n}\n"],"version":3}
1
+ {"file":"revogr-clipboard.js","mappings":";;;;;MAIa,SAAS;;;;;;;EAGqB,OAAO,CAAC,CAAiB;IAChE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC,CAAC,cAAc,EAAE,CAAC;GACpB;EACuC,WAAW,CAAC,CAAiB;IACnE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,cAAc,EAAE,CAAC;GACpB;EACS,MAAM,MAAM,CAAC,CAAe,EAAE,IAA8B;IACpE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;GAC5D;EAED,UAAU,CAAC,IAA6B;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;GACvD;EAEO,SAAS,CAAC,IAAY;IAC5B,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;MAClB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KAClC;IACD,OAAO,MAAM,CAAC;GACf;EAEO,SAAS,CAAC,IAAY;IAC5B,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3F,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;MAC1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KAClE;IACD,OAAO,MAAM,CAAC;GACf;EAEO,OAAO,CAAC,CAAiB;IAC/B,OAAO,CAAC,CAAC,aAAa,KAAM,MAA6D,aAA7D,MAAM,uBAAN,MAAM,CAAyD,aAAa,CAAA,CAAC;GAC1G;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/clipboard/revogr-clipboard.tsx"],"sourcesContent":["import { Component, Listen, Method, Event, EventEmitter } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\n\n@Component({ tag: 'revogr-clipboard' })\nexport class Clipboard {\n @Event({ bubbles: false }) copyRegion: EventEmitter<DataTransfer>;\n @Event({ bubbles: false }) pasteRegion: EventEmitter<string[][]>;\n @Listen('paste', { target: 'document' }) onPaste(e: ClipboardEvent) {\n const clipboardData = this.getData(e);\n const isHTML = clipboardData.types.indexOf('text/html') > -1;\n const data = isHTML ? clipboardData.getData('text/html') : clipboardData.getData('text');\n const parsedData = isHTML ? this.htmlParse(data) : this.textParse(data);\n this.pasteRegion.emit(parsedData);\n e.preventDefault();\n }\n @Listen('copy', { target: 'document' }) copyStarted(e: ClipboardEvent) {\n this.copyRegion.emit(this.getData(e));\n e.preventDefault();\n }\n @Method() async doCopy(e: DataTransfer, data?: RevoGrid.DataFormat[][]) {\n e.setData('text/plain', data ? this.parserCopy(data) : '');\n }\n\n parserCopy(data: RevoGrid.DataFormat[][]) {\n return data.map(rgRow => rgRow.join('\\t')).join('\\n');\n }\n\n private textParse(data: string) {\n const result: string[][] = [];\n const rows = data.split(/\\r\\n|\\n|\\r/);\n for (let y in rows) {\n result.push(rows[y].split('\\t'));\n }\n return result;\n }\n\n private htmlParse(data: string) {\n const result: string[][] = [];\n const table = document.createRange().createContextualFragment(data).querySelector('table');\n for (const rgRow of Array.from(table.rows)) {\n result.push(Array.from(rgRow.cells).map(cell => cell.innerText));\n }\n return result;\n }\n\n private getData(e: ClipboardEvent) {\n return e.clipboardData || ((window as unknown) as { clipboardData: DataTransfer | null })?.clipboardData;\n }\n}\n"],"version":3}
@@ -181,6 +181,7 @@ function defineCustomElement() {
181
181
  break;
182
182
  } });
183
183
  }
184
+ defineCustomElement();
184
185
 
185
186
  export { RevogrData as R, defineCustomElement as d };
186
187
 
@@ -1 +1 @@
1
- {"file":"revogr-data2.js","mappings":"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","names":[],"sources":["src/components/data/cellRenderer.tsx","src/components/data/rowRenderer.tsx","src/plugins/groupingRow/grouping.row.renderer.tsx","src/components/data/revogr-data-style.scss?tag=revogr-data","src/components/data/revogr-data.tsx"],"sourcesContent":["import { h, VNode } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\nimport ColumnService from './columnService';\nimport { DRAG_ICON_CLASS, DRAGGABLE_CLASS } from '../../utils/consts';\n\ntype Props = {\n model: RevoGrid.ColumnDataSchemaModel;\n canDrag?: boolean;\n onDragStart?(e: MouseEvent): void;\n};\n\nconst CellRenderer = ({ model, canDrag, onDragStart }: Props) => {\n const els: (VNode | string)[] = [];\n if (model.column.rowDrag && isRowDragService(model.column.rowDrag, model)) {\n if (canDrag) {\n els.push(\n <span class={DRAGGABLE_CLASS} onMouseDown={e => onDragStart(e)}>\n <span class={DRAG_ICON_CLASS} />\n </span>,\n );\n } else {\n els.push(<span class={DRAGGABLE_CLASS} />);\n }\n }\n els.push(`${ColumnService.getData(model.model[model.prop])}`);\n return els;\n};\n\nexport default CellRenderer;\n\nfunction isRowDragService(rowDrag: RevoGrid.RowDrag, model: RevoGrid.ColumnDataSchemaModel): boolean {\n if (typeof rowDrag === 'function') {\n return rowDrag(model);\n }\n return !!rowDrag;\n}\n","import { h, VNode } from '@stencil/core';\nimport { JSXBase } from '@stencil/core/internal';\n\nexport interface RowProps extends JSXBase.HTMLAttributes {\n size: number;\n start: number;\n rowClass?: string;\n depth?: number;\n}\n\nexport const PADDING_DEPTH = 10;\n\nconst RowRenderer = ({ rowClass, size, start, style, depth }: RowProps, cells: VNode[]) => {\n return (\n <div\n class={`rgRow ${rowClass || ''}`}\n style={{\n ...style,\n height: `${size}px`,\n transform: `translateY(${start}px)`,\n paddingLeft: depth ? `${PADDING_DEPTH * depth}px` : undefined,\n }}\n >\n {cells}\n </div>\n );\n};\n\nexport default RowRenderer;\n","import { h } from '@stencil/core';\nimport RowRenderer, { RowProps } from '../../components/data/rowRenderer';\nimport { RevoGrid } from '../../interfaces';\nimport { GROUP_DEPTH, GROUP_EXPANDED, GROUP_EXPAND_BTN, GROUP_EXPAND_EVENT, PSEUDO_GROUP_ITEM } from './grouping.const';\nimport { GroupLabelTemplateFunc } from './grouping.row.types';\n\ninterface GroupRowPros extends RowProps {\n model: RevoGrid.DataType;\n hasExpand: boolean;\n groupingCustomRenderer?: GroupLabelTemplateFunc;\n}\ntype Props = GroupRowPros & RevoGrid.PositionItem;\n\nfunction expandEvent(e: MouseEvent, model: RevoGrid.DataType, virtualIndex: number) {\n const event = new CustomEvent(GROUP_EXPAND_EVENT, {\n detail: {\n model,\n virtualIndex,\n },\n cancelable: true,\n bubbles: true,\n });\n e.target.dispatchEvent(event);\n}\n\nconst GroupingRowRenderer = (props: Props) => {\n const { model, itemIndex, hasExpand, groupingCustomRenderer } = props;\n const name: string = model[PSEUDO_GROUP_ITEM];\n const expanded: boolean = model[GROUP_EXPANDED];\n const depth = parseInt(model[GROUP_DEPTH], 10) || 0;\n if (!hasExpand) {\n return <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth} />;\n }\n\n if (groupingCustomRenderer) {\n return (\n <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth}>\n <div onClick={e => expandEvent(e, model, itemIndex)}>\n {groupingCustomRenderer(h, { name, itemIndex, expanded, depth })}\n </div>\n </RowRenderer>\n );\n }\n\n return (\n <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth}>\n <button class={{ [GROUP_EXPAND_BTN]: true }} onClick={e => expandEvent(e, model, itemIndex)}>\n <svg aria-hidden=\"true\" style={{ transform: `rotate(${!expanded ? -90 : 0}deg)` }} focusable=\"false\" viewBox=\"0 0 448 512\">\n <path\n fill=\"currentColor\"\n d=\"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"\n ></path>\n </svg>\n </button>\n {name}\n </RowRenderer>\n );\n};\nexport default GroupingRowRenderer;\n","revogr-data {\n display: block;\n width: 100%;\n position: relative;\n\n .rgRow {\n position: absolute;\n width: 100%;\n left: 0;\n\n &.groupingRow {\n font-weight: 600;\n\n .group-expand {\n width: 25px;\n height: 100%;\n max-height: 25px;\n margin-right: 2px;\n background-color: transparent;\n border-color: transparent;\n\n svg {\n width: 7px;\n }\n }\n }\n }\n\n .revo-draggable {\n $w: 24px;\n\n border: none;\n height: 32px;\n display: inline-flex;\n outline: 0;\n padding: 0;\n font-size: 0.8125rem;\n box-sizing: border-box;\n align-items: center;\n white-space: nowrap;\n vertical-align: middle;\n justify-content: center;\n text-decoration: none;\n width: $w;\n height: 100%;\n cursor: pointer;\n\n > .revo-drag-icon {\n vertical-align: middle;\n display: inline-block;\n pointer-events: none;\n transition: background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n }\n }\n\n .rgCell {\n top: 0;\n position: absolute;\n box-sizing: border-box;\n height: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &.align-center {\n text-align: center;\n }\n &.align-left {\n text-align: left;\n }\n &.align-right {\n text-align: right;\n }\n }\n}\n","import { Component, Element, Event, Prop, VNode, EventEmitter, h } from '@stencil/core';\nimport { HTMLStencilElement, Watch } from '@stencil/core/internal';\n\nimport ColumnService, { ColumnSource, RowSource } from './columnService';\nimport { DATA_COL, DATA_ROW } from '../../utils/consts';\n\nimport { getSourceItem } from '../../store/dataSource/data.store';\nimport { Observable, RevoGrid, Selection } from '../../interfaces';\nimport CellRenderer from './cellRenderer';\nimport RowRenderer, { PADDING_DEPTH } from './rowRenderer';\nimport GroupingRowRenderer from '../../plugins/groupingRow/grouping.row.renderer';\nimport { isGrouping } from '../../plugins/groupingRow/grouping.service';\n\n@Component({\n tag: 'revogr-data',\n styleUrl: 'revogr-data-style.scss',\n})\nexport class RevogrData {\n private columnService: ColumnService;\n\n @Element() element!: HTMLStencilElement;\n\n @Prop() readonly: boolean;\n @Prop() range: boolean;\n @Prop() canDrag: boolean;\n\n @Prop() rowClass: string;\n @Prop() rowSelectionStore: Observable<Selection.SelectionStoreState>;\n @Prop() viewportRow: Observable<RevoGrid.ViewportState>;\n @Prop() viewportCol: Observable<RevoGrid.ViewportState>;\n\n @Prop() dimensionRow: Observable<RevoGrid.DimensionSettingsState>;\n\n /** Static stores, not expected to change during component lifetime */\n @Prop() colData: ColumnSource;\n @Prop() dataStore: RowSource;\n\n @Event() dragStartCell: EventEmitter<MouseEvent>;\n\n @Watch('dataStore')\n @Watch('colData')\n onStoreChange() {\n this.columnService?.destroy();\n this.columnService = new ColumnService(this.dataStore, this.colData);\n }\n\n connectedCallback() {\n this.onStoreChange();\n }\n\n disconnectedCallback() {\n this.columnService?.destroy();\n }\n\n render() {\n const rows = this.viewportRow.get('items');\n const cols = this.viewportCol.get('items');\n if (!this.columnService.columns.length || !rows.length || !cols.length) {\n return '';\n }\n const range = this.rowSelectionStore?.get('range');\n const rowsEls: VNode[] = [];\n\n const depth = this.dataStore.get('groupingDepth');\n const groupingCustomRenderer = this.dataStore.get('groupingCustomRenderer');\n for (let rgRow of rows) {\n const dataRow = getSourceItem(this.dataStore, rgRow.itemIndex);\n /** grouping */\n if (isGrouping(dataRow)) {\n rowsEls.push(<GroupingRowRenderer {...rgRow} model={dataRow} groupingCustomRenderer={groupingCustomRenderer} hasExpand={this.columnService.hasGrouping} />);\n continue;\n }\n /** grouping end */\n\n const cells: (VNode | string | void)[] = [];\n let rowClass = this.rowClass ? this.columnService.getRowClass(rgRow.itemIndex, this.rowClass) : '';\n if (range && rgRow.itemIndex >= range.y && rgRow.itemIndex <= range.y1) {\n rowClass += ' focused-rgRow';\n }\n for (let rgCol of cols) {\n cells.push(this.getCellRenderer(rgRow, rgCol, this.canDrag, /** grouping apply*/ this.columnService.hasGrouping ? depth : 0));\n }\n rowsEls.push(\n <RowRenderer rowClass={rowClass} size={rgRow.size} start={rgRow.start}>\n {cells}\n </RowRenderer>,\n );\n }\n return rowsEls;\n }\n\n private getCellRenderer(rgRow: RevoGrid.VirtualPositionItem, rgCol: RevoGrid.VirtualPositionItem, draggable = false, depth = 0) {\n const model = this.columnService.rowDataModel(rgRow.itemIndex, rgCol.itemIndex);\n const defaultProps: RevoGrid.CellProps = {\n [DATA_COL]: rgCol.itemIndex,\n [DATA_ROW]: rgRow.itemIndex,\n style: {\n width: `${rgCol.size}px`,\n transform: `translateX(${rgCol.start}px)`,\n },\n };\n if (depth && !rgCol.itemIndex) {\n defaultProps.style.paddingLeft = `${PADDING_DEPTH * depth}px`;\n }\n const props = this.columnService.mergeProperties(rgRow.itemIndex, rgCol.itemIndex, defaultProps);\n const custom = this.columnService.customRenderer(rgRow.itemIndex, rgCol.itemIndex, model);\n\n // if custom render\n if (typeof custom !== 'undefined') {\n return <div {...props}>{custom}</div>;\n }\n\n // something is wrong with data\n if (!model.column) {\n console.error('Investigate column problem');\n return;\n }\n\n // if regular render\n return (\n <div {...props}>\n <CellRenderer model={model} canDrag={draggable} onDragStart={e => this.dragStartCell.emit(e)} />\n </div>\n );\n }\n}\n"],"version":3}
1
+ {"file":"revogr-data2.js","mappings":"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","names":[],"sources":["src/components/data/cellRenderer.tsx","src/components/data/rowRenderer.tsx","src/plugins/groupingRow/grouping.row.renderer.tsx","src/components/data/revogr-data-style.scss?tag=revogr-data","src/components/data/revogr-data.tsx"],"sourcesContent":["import { h, VNode } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\nimport ColumnService from './columnService';\nimport { DRAG_ICON_CLASS, DRAGGABLE_CLASS } from '../../utils/consts';\n\ntype Props = {\n model: RevoGrid.ColumnDataSchemaModel;\n canDrag?: boolean;\n onDragStart?(e: MouseEvent): void;\n};\n\nconst CellRenderer = ({ model, canDrag, onDragStart }: Props) => {\n const els: (VNode | string)[] = [];\n if (model.column.rowDrag && isRowDragService(model.column.rowDrag, model)) {\n if (canDrag) {\n els.push(\n <span class={DRAGGABLE_CLASS} onMouseDown={e => onDragStart(e)}>\n <span class={DRAG_ICON_CLASS} />\n </span>,\n );\n } else {\n els.push(<span class={DRAGGABLE_CLASS} />);\n }\n }\n els.push(`${ColumnService.getData(model.model[model.prop])}`);\n return els;\n};\n\nexport default CellRenderer;\n\nfunction isRowDragService(rowDrag: RevoGrid.RowDrag, model: RevoGrid.ColumnDataSchemaModel): boolean {\n if (typeof rowDrag === 'function') {\n return rowDrag(model);\n }\n return !!rowDrag;\n}\n","import { h, VNode } from '@stencil/core';\nimport { JSXBase } from '@stencil/core/internal';\n\nexport interface RowProps extends JSXBase.HTMLAttributes {\n size: number;\n start: number;\n rowClass?: string;\n depth?: number;\n}\n\nexport const PADDING_DEPTH = 10;\n\nconst RowRenderer = ({ rowClass, size, start, style, depth }: RowProps, cells: VNode[]) => {\n return (\n <div\n class={`rgRow ${rowClass || ''}`}\n style={{\n ...style,\n height: `${size}px`,\n transform: `translateY(${start}px)`,\n paddingLeft: depth ? `${PADDING_DEPTH * depth}px` : undefined,\n }}\n >\n {cells}\n </div>\n );\n};\n\nexport default RowRenderer;\n","import { h } from '@stencil/core';\nimport RowRenderer, { RowProps } from '../../components/data/rowRenderer';\nimport { RevoGrid } from '../../interfaces';\nimport { GROUP_DEPTH, GROUP_EXPANDED, GROUP_EXPAND_BTN, GROUP_EXPAND_EVENT, PSEUDO_GROUP_ITEM } from './grouping.const';\nimport { GroupLabelTemplateFunc } from './grouping.row.types';\n\ninterface GroupRowPros extends RowProps {\n model: RevoGrid.DataType;\n hasExpand: boolean;\n groupingCustomRenderer?: GroupLabelTemplateFunc;\n}\ntype Props = GroupRowPros & RevoGrid.PositionItem;\n\nfunction expandEvent(e: MouseEvent, model: RevoGrid.DataType, virtualIndex: number) {\n const event = new CustomEvent(GROUP_EXPAND_EVENT, {\n detail: {\n model,\n virtualIndex,\n },\n cancelable: true,\n bubbles: true,\n });\n e.target.dispatchEvent(event);\n}\n\nconst GroupingRowRenderer = (props: Props) => {\n const { model, itemIndex, hasExpand, groupingCustomRenderer } = props;\n const name: string = model[PSEUDO_GROUP_ITEM];\n const expanded: boolean = model[GROUP_EXPANDED];\n const depth = parseInt(model[GROUP_DEPTH], 10) || 0;\n if (!hasExpand) {\n return <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth} />;\n }\n\n if (groupingCustomRenderer) {\n return (\n <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth}>\n <div onClick={e => expandEvent(e, model, itemIndex)}>\n {groupingCustomRenderer(h, { name, itemIndex, expanded, depth })}\n </div>\n </RowRenderer>\n );\n }\n\n return (\n <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth}>\n <button class={{ [GROUP_EXPAND_BTN]: true }} onClick={e => expandEvent(e, model, itemIndex)}>\n <svg aria-hidden=\"true\" style={{ transform: `rotate(${!expanded ? -90 : 0}deg)` }} focusable=\"false\" viewBox=\"0 0 448 512\">\n <path\n fill=\"currentColor\"\n d=\"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"\n ></path>\n </svg>\n </button>\n {name}\n </RowRenderer>\n );\n};\nexport default GroupingRowRenderer;\n","revogr-data {\n display: block;\n width: 100%;\n position: relative;\n\n .rgRow {\n position: absolute;\n width: 100%;\n left: 0;\n\n &.groupingRow {\n font-weight: 600;\n\n .group-expand {\n width: 25px;\n height: 100%;\n max-height: 25px;\n margin-right: 2px;\n background-color: transparent;\n border-color: transparent;\n\n svg {\n width: 7px;\n }\n }\n }\n }\n\n .revo-draggable {\n $w: 24px;\n\n border: none;\n height: 32px;\n display: inline-flex;\n outline: 0;\n padding: 0;\n font-size: 0.8125rem;\n box-sizing: border-box;\n align-items: center;\n white-space: nowrap;\n vertical-align: middle;\n justify-content: center;\n text-decoration: none;\n width: $w;\n height: 100%;\n cursor: pointer;\n\n > .revo-drag-icon {\n vertical-align: middle;\n display: inline-block;\n pointer-events: none;\n transition: background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n }\n }\n\n .rgCell {\n top: 0;\n position: absolute;\n box-sizing: border-box;\n height: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &.align-center {\n text-align: center;\n }\n &.align-left {\n text-align: left;\n }\n &.align-right {\n text-align: right;\n }\n }\n}\n","import { Component, Element, Event, Prop, VNode, EventEmitter, h } from '@stencil/core';\nimport { HTMLStencilElement, Watch } from '@stencil/core/internal';\n\nimport ColumnService, { ColumnSource, RowSource } from './columnService';\nimport { DATA_COL, DATA_ROW } from '../../utils/consts';\n\nimport { getSourceItem } from '../../store/dataSource/data.store';\nimport { Observable, RevoGrid, Selection } from '../../interfaces';\nimport CellRenderer from './cellRenderer';\nimport RowRenderer, { PADDING_DEPTH } from './rowRenderer';\nimport GroupingRowRenderer from '../../plugins/groupingRow/grouping.row.renderer';\nimport { isGrouping } from '../../plugins/groupingRow/grouping.service';\n\n@Component({\n tag: 'revogr-data',\n styleUrl: 'revogr-data-style.scss',\n})\nexport class RevogrData {\n private columnService: ColumnService;\n\n @Element() element!: HTMLStencilElement;\n\n @Prop() readonly: boolean;\n @Prop() range: boolean;\n @Prop() canDrag: boolean;\n\n @Prop() rowClass: string;\n @Prop() rowSelectionStore: Observable<Selection.SelectionStoreState>;\n @Prop() viewportRow: Observable<RevoGrid.ViewportState>;\n @Prop() viewportCol: Observable<RevoGrid.ViewportState>;\n\n @Prop() dimensionRow: Observable<RevoGrid.DimensionSettingsState>;\n\n /** Static stores, not expected to change during component lifetime */\n @Prop() colData: ColumnSource;\n @Prop() dataStore: RowSource;\n\n @Event() dragStartCell: EventEmitter<MouseEvent>;\n\n @Watch('dataStore')\n @Watch('colData')\n onStoreChange() {\n this.columnService?.destroy();\n this.columnService = new ColumnService(this.dataStore, this.colData);\n }\n\n connectedCallback() {\n this.onStoreChange();\n }\n\n disconnectedCallback() {\n this.columnService?.destroy();\n }\n\n render() {\n const rows = this.viewportRow.get('items');\n const cols = this.viewportCol.get('items');\n if (!this.columnService.columns.length || !rows.length || !cols.length) {\n return '';\n }\n const range = this.rowSelectionStore?.get('range');\n const rowsEls: VNode[] = [];\n\n const depth = this.dataStore.get('groupingDepth');\n const groupingCustomRenderer = this.dataStore.get('groupingCustomRenderer');\n for (let rgRow of rows) {\n const dataRow = getSourceItem(this.dataStore, rgRow.itemIndex);\n /** grouping */\n if (isGrouping(dataRow)) {\n rowsEls.push(<GroupingRowRenderer {...rgRow} model={dataRow} groupingCustomRenderer={groupingCustomRenderer} hasExpand={this.columnService.hasGrouping} />);\n continue;\n }\n /** grouping end */\n\n const cells: (VNode | string | void)[] = [];\n let rowClass = this.rowClass ? this.columnService.getRowClass(rgRow.itemIndex, this.rowClass) : '';\n if (range && rgRow.itemIndex >= range.y && rgRow.itemIndex <= range.y1) {\n rowClass += ' focused-rgRow';\n }\n for (let rgCol of cols) {\n cells.push(this.getCellRenderer(rgRow, rgCol, this.canDrag, /** grouping apply*/ this.columnService.hasGrouping ? depth : 0));\n }\n rowsEls.push(\n <RowRenderer rowClass={rowClass} size={rgRow.size} start={rgRow.start}>\n {cells}\n </RowRenderer>,\n );\n }\n return rowsEls;\n }\n\n private getCellRenderer(rgRow: RevoGrid.VirtualPositionItem, rgCol: RevoGrid.VirtualPositionItem, draggable = false, depth = 0) {\n const model = this.columnService.rowDataModel(rgRow.itemIndex, rgCol.itemIndex);\n const defaultProps: RevoGrid.CellProps = {\n [DATA_COL]: rgCol.itemIndex,\n [DATA_ROW]: rgRow.itemIndex,\n style: {\n width: `${rgCol.size}px`,\n transform: `translateX(${rgCol.start}px)`,\n },\n };\n if (depth && !rgCol.itemIndex) {\n defaultProps.style.paddingLeft = `${PADDING_DEPTH * depth}px`;\n }\n const props = this.columnService.mergeProperties(rgRow.itemIndex, rgCol.itemIndex, defaultProps);\n const custom = this.columnService.customRenderer(rgRow.itemIndex, rgCol.itemIndex, model);\n\n // if custom render\n if (typeof custom !== 'undefined') {\n return <div {...props}>{custom}</div>;\n }\n\n // something is wrong with data\n if (!model.column) {\n console.error('Investigate column problem');\n return;\n }\n\n // if regular render\n return (\n <div {...props}>\n <CellRenderer model={model} canDrag={draggable} onDragStart={e => this.dragStartCell.emit(e)} />\n </div>\n );\n }\n}\n"],"version":3}
@@ -404,6 +404,7 @@ function defineCustomElement() {
404
404
  break;
405
405
  } });
406
406
  }
407
+ defineCustomElement();
407
408
 
408
409
  export { Edit as E, isCtrlKey as a, isClear as b, codesLetter as c, defineCustomElement as d, isEnterKey as e, isLetterKey as f, isString_1 as i };
409
410
 
@@ -1 +1 @@
1
- {"file":"revogr-edit2.js","mappings":"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","names":["isArray","isObjectLike","baseGetTag","strictIndexOf","baseFindIndex","baseIsNaN","arrayMap","baseValues","keys","isArrayLike","values","toInteger","isString","baseIndexOf","includes"],"sources":["node_modules/lodash/isString.js","src/utils/keyCodes.ts","src/utils/platform.ts","node_modules/lodash/_baseIsNaN.js","node_modules/lodash/_strictIndexOf.js","node_modules/lodash/_baseIndexOf.js","node_modules/lodash/_baseValues.js","node_modules/lodash/values.js","node_modules/lodash/includes.js","src/utils/keyCodes.utils.ts","src/components/overlay/editors/text.tsx","src/components/overlay/revogr-edit-style.scss?tag=revogr-edit","src/components/overlay/revogr-edit.tsx"],"sourcesContent":["var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","enum codes {\n MOUSE_LEFT = 1,\n MOUSE_RIGHT = 3,\n MOUSE_MIDDLE = 2,\n BACKSPACE = 8,\n COMMA = 188,\n INSERT = 45,\n DELETE = 46,\n END = 35,\n ENTER = 13,\n ESCAPE = 27,\n CONTROL = 17,\n COMMAND_LEFT = 91,\n COMMAND_RIGHT = 93,\n COMMAND_FIREFOX = 224,\n ALT = 18,\n HOME = 36,\n PAGE_DOWN = 34,\n PAGE_UP = 33,\n PERIOD = 190,\n SPACE = 32,\n SHIFT = 16,\n CAPS_LOCK = 20,\n TAB = 9,\n ARROW_RIGHT = 39,\n ARROW_LEFT = 37,\n ARROW_UP = 38,\n ARROW_DOWN = 40,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n A = 65,\n C = 67,\n D = 68,\n F = 70,\n L = 76,\n O = 79,\n P = 80,\n S = 83,\n V = 86,\n X = 88,\n}\n\nenum codesLetter {\n ENTER = 'Enter',\n ENTER_NUM = 'NumpadEnter',\n V = 'KeyV',\n C = 'KeyC',\n ESCAPE = 'Escape',\n TAB = 'Tab',\n BACKSPACE = 'Backspace',\n DELETE = 'Delete',\n ARROW_RIGHT = 'ArrowRight',\n ARROW_LEFT = 'ArrowLeft',\n ARROW_UP = 'ArrowUp',\n ARROW_DOWN = 'ArrowDown',\n SHIFT = 'Shift',\n}\n\nexport default codes;\nexport { codesLetter };\n","enum osPlatform {\n mac = 'Mac',\n}\nexport default osPlatform;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var baseIndexOf = require('./_baseIndexOf'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n toInteger = require('./toInteger'),\n values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n","import KeyCodesEnum, { codesLetter } from './keyCodes';\nimport OsPlatform from './platform';\nimport includes from 'lodash/includes';\n\nexport function isLetterKey(code: number): boolean {\n return (\n code === 32 || // space\n (code >= 48 && code <= 57) ||\n (code >= 96 && code <= 111) ||\n (code >= 186 && code <= 192) ||\n (code >= 219 && code <= 222) ||\n code >= 226 ||\n (code >= 65 && code <= 90)\n ); // a-z\n}\n\nexport function isMetaKey(code: number): boolean {\n const keys: KeyCodesEnum[] = [\n KeyCodesEnum.ARROW_DOWN,\n KeyCodesEnum.ARROW_UP,\n KeyCodesEnum.ARROW_LEFT,\n KeyCodesEnum.ARROW_RIGHT,\n KeyCodesEnum.HOME,\n KeyCodesEnum.END,\n KeyCodesEnum.DELETE,\n KeyCodesEnum.BACKSPACE,\n KeyCodesEnum.F1,\n KeyCodesEnum.F2,\n KeyCodesEnum.F3,\n KeyCodesEnum.F4,\n KeyCodesEnum.F5,\n KeyCodesEnum.F6,\n KeyCodesEnum.F7,\n KeyCodesEnum.F8,\n KeyCodesEnum.F9,\n KeyCodesEnum.F10,\n KeyCodesEnum.F11,\n KeyCodesEnum.F12,\n KeyCodesEnum.TAB,\n KeyCodesEnum.PAGE_DOWN,\n KeyCodesEnum.PAGE_UP,\n KeyCodesEnum.ENTER,\n KeyCodesEnum.ESCAPE,\n KeyCodesEnum.SHIFT,\n KeyCodesEnum.CAPS_LOCK,\n KeyCodesEnum.ALT,\n ];\n\n return keys.indexOf(code) !== -1;\n}\n\n// navigator.platform\nexport function isCtrlKey(code: number, platform: string): boolean {\n if (platform.includes(OsPlatform.mac)) {\n return includes([KeyCodesEnum.COMMAND_LEFT, KeyCodesEnum.COMMAND_RIGHT, KeyCodesEnum.COMMAND_FIREFOX], code);\n }\n\n return KeyCodesEnum.CONTROL === code;\n}\n\nexport function isCtrlMetaKey(code: KeyCodesEnum): boolean {\n return includes([KeyCodesEnum.CONTROL, KeyCodesEnum.COMMAND_LEFT, KeyCodesEnum.COMMAND_RIGHT, KeyCodesEnum.COMMAND_FIREFOX], code);\n}\n\nexport function isClear(code: string): boolean {\n return codesLetter.BACKSPACE === code || codesLetter.DELETE === code;\n}\n\nexport function isTab(code: string): boolean {\n return codesLetter.TAB === code;\n}\n\nexport function isEnterKey(code: string): boolean {\n return code === codesLetter.ENTER || code === codesLetter.ENTER_NUM;\n}\n","import { h } from '@stencil/core';\nimport { isEnterKey, isTab } from '../../../utils/keyCodes.utils';\nimport { Edition, RevoGrid } from '../../../interfaces';\nimport { timeout } from '../../../utils/utils';\n\n/**\n * Callback triggered on cell editor save\n * Closes editor when called\n * @param preventFocus - if true editor will not be closed and next cell will not be focused\n */\nexport type SaveCallback = (value: Edition.SaveData, preventFocus: boolean) => void;\n\nexport class TextEditor implements Edition.EditorBase {\n private editInput!: HTMLInputElement;\n\n public element: Element | null = null;\n public editCell: Edition.EditCell | null = null;\n\n constructor(public column: RevoGrid.ColumnRegular, private saveCallback?: SaveCallback) {}\n\n async componentDidRender(): Promise<void> {\n if (this.editInput) {\n await timeout();\n this.editInput?.focus();\n }\n }\n\n private onKeyDown(e: KeyboardEvent): void {\n const isEnter = isEnterKey(e.code);\n const isKeyTab = isTab(e.code);\n\n if ((isKeyTab || isEnter) && e.target && this.saveCallback && !e.isComposing) {\n // blur is needed to avoid autoscroll\n this.editInput.blur();\n // request callback which will close cell after all\n this.saveCallback((e.target as HTMLInputElement).value, isKeyTab);\n }\n }\n\n // required\n render() {\n return (\n <input\n type=\"text\"\n value={this.editCell?.val || ''}\n ref={el => {\n this.editInput = el;\n }}\n onKeyDown={e => this.onKeyDown(e)}\n />\n );\n }\n}\n","revogr-edit {\n display: block;\n position: absolute;\n background-color: #fff;\n\n input {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n }\n\n revo-dropdown {\n height: 100%;\n\n &.shrink {\n fieldset legend > span {\n display: none;\n }\n }\n }\n}\n","import { Component, Event, EventEmitter, Prop, h, Element, Host } from '@stencil/core';\n\nimport { Edition, RevoGrid } from '../../interfaces';\nimport { EDIT_INPUT_WR } from '../../utils/consts';\nimport { TextEditor } from './editors/text';\n\n@Component({\n tag: 'revogr-edit',\n styleUrl: 'revogr-edit-style.scss',\n})\nexport class Edit {\n @Element() element: HTMLElement;\n @Prop() editCell: Edition.EditCell;\n private currentEditor: Edition.EditorBase | null = null;\n\n @Prop() column: RevoGrid.ColumnRegular | null;\n /** Custom editors register */\n @Prop() editor: Edition.EditorCtr | null;\n\n @Event({ bubbles: false }) cellEdit: EventEmitter<Edition.SaveDataDetails>;\n\n /**\n * Close editor event\n * pass true if requires focus next\n */\n @Event({ bubbles: false }) closeEdit: EventEmitter<boolean | undefined>;\n\n /**\n * Callback triggered on cell editor save\n * Closes editor when called\n * @param preventFocus - if true editor will not be closed and next cell will not be focused\n */\n onSave(val: Edition.SaveData, preventFocus?: boolean): void {\n if (this.editCell) {\n this.cellEdit.emit({\n rgCol: this.editCell.x,\n rgRow: this.editCell.y,\n val,\n preventFocus,\n });\n }\n }\n\n componentWillRender(): void {\n if (!this.currentEditor) {\n if (this.editor) {\n this.currentEditor = new this.editor(\n this.column,\n (e, preventFocus) => this.onSave(e, preventFocus),\n focusNext => this.closeEdit.emit(focusNext),\n );\n } else {\n this.currentEditor = new TextEditor(this.column, (e, preventFocus) => this.onSave(e, preventFocus));\n }\n }\n }\n\n componentDidRender(): void {\n if (!this.currentEditor) {\n return;\n }\n this.currentEditor.element = this.element.firstElementChild;\n this.currentEditor.componentDidRender && this.currentEditor.componentDidRender();\n }\n\n disconnectedCallback(): void {\n if (!this.currentEditor) {\n return;\n }\n\n this.currentEditor.disconnectedCallback && this.currentEditor.disconnectedCallback();\n if (this.currentEditor.element) {\n this.currentEditor.element = null;\n }\n this.currentEditor = null;\n }\n\n render() {\n if (this.currentEditor) {\n this.currentEditor.editCell = this.editCell;\n return <Host class={EDIT_INPUT_WR}>{this.currentEditor.render(h)}</Host>;\n }\n return '';\n }\n}\n"],"version":3}
1
+ {"file":"revogr-edit2.js","mappings":"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","names":["isArray","isObjectLike","baseGetTag","strictIndexOf","baseFindIndex","baseIsNaN","arrayMap","baseValues","keys","isArrayLike","values","toInteger","isString","baseIndexOf","includes"],"sources":["node_modules/lodash/isString.js","src/utils/keyCodes.ts","src/utils/platform.ts","node_modules/lodash/_baseIsNaN.js","node_modules/lodash/_strictIndexOf.js","node_modules/lodash/_baseIndexOf.js","node_modules/lodash/_baseValues.js","node_modules/lodash/values.js","node_modules/lodash/includes.js","src/utils/keyCodes.utils.ts","src/components/overlay/editors/text.tsx","src/components/overlay/revogr-edit-style.scss?tag=revogr-edit","src/components/overlay/revogr-edit.tsx"],"sourcesContent":["var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","enum codes {\n MOUSE_LEFT = 1,\n MOUSE_RIGHT = 3,\n MOUSE_MIDDLE = 2,\n BACKSPACE = 8,\n COMMA = 188,\n INSERT = 45,\n DELETE = 46,\n END = 35,\n ENTER = 13,\n ESCAPE = 27,\n CONTROL = 17,\n COMMAND_LEFT = 91,\n COMMAND_RIGHT = 93,\n COMMAND_FIREFOX = 224,\n ALT = 18,\n HOME = 36,\n PAGE_DOWN = 34,\n PAGE_UP = 33,\n PERIOD = 190,\n SPACE = 32,\n SHIFT = 16,\n CAPS_LOCK = 20,\n TAB = 9,\n ARROW_RIGHT = 39,\n ARROW_LEFT = 37,\n ARROW_UP = 38,\n ARROW_DOWN = 40,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n A = 65,\n C = 67,\n D = 68,\n F = 70,\n L = 76,\n O = 79,\n P = 80,\n S = 83,\n V = 86,\n X = 88,\n}\n\nenum codesLetter {\n ENTER = 'Enter',\n ENTER_NUM = 'NumpadEnter',\n V = 'KeyV',\n C = 'KeyC',\n ESCAPE = 'Escape',\n TAB = 'Tab',\n BACKSPACE = 'Backspace',\n DELETE = 'Delete',\n ARROW_RIGHT = 'ArrowRight',\n ARROW_LEFT = 'ArrowLeft',\n ARROW_UP = 'ArrowUp',\n ARROW_DOWN = 'ArrowDown',\n SHIFT = 'Shift',\n}\n\nexport default codes;\nexport { codesLetter };\n","enum osPlatform {\n mac = 'Mac',\n}\nexport default osPlatform;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var baseIndexOf = require('./_baseIndexOf'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n toInteger = require('./toInteger'),\n values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n","import KeyCodesEnum, { codesLetter } from './keyCodes';\nimport OsPlatform from './platform';\nimport includes from 'lodash/includes';\n\nexport function isLetterKey(code: number): boolean {\n return (\n code === 32 || // space\n (code >= 48 && code <= 57) ||\n (code >= 96 && code <= 111) ||\n (code >= 186 && code <= 192) ||\n (code >= 219 && code <= 222) ||\n code >= 226 ||\n (code >= 65 && code <= 90)\n ); // a-z\n}\n\nexport function isMetaKey(code: number): boolean {\n const keys: KeyCodesEnum[] = [\n KeyCodesEnum.ARROW_DOWN,\n KeyCodesEnum.ARROW_UP,\n KeyCodesEnum.ARROW_LEFT,\n KeyCodesEnum.ARROW_RIGHT,\n KeyCodesEnum.HOME,\n KeyCodesEnum.END,\n KeyCodesEnum.DELETE,\n KeyCodesEnum.BACKSPACE,\n KeyCodesEnum.F1,\n KeyCodesEnum.F2,\n KeyCodesEnum.F3,\n KeyCodesEnum.F4,\n KeyCodesEnum.F5,\n KeyCodesEnum.F6,\n KeyCodesEnum.F7,\n KeyCodesEnum.F8,\n KeyCodesEnum.F9,\n KeyCodesEnum.F10,\n KeyCodesEnum.F11,\n KeyCodesEnum.F12,\n KeyCodesEnum.TAB,\n KeyCodesEnum.PAGE_DOWN,\n KeyCodesEnum.PAGE_UP,\n KeyCodesEnum.ENTER,\n KeyCodesEnum.ESCAPE,\n KeyCodesEnum.SHIFT,\n KeyCodesEnum.CAPS_LOCK,\n KeyCodesEnum.ALT,\n ];\n\n return keys.indexOf(code) !== -1;\n}\n\n// navigator.platform\nexport function isCtrlKey(code: number, platform: string): boolean {\n if (platform.includes(OsPlatform.mac)) {\n return includes([KeyCodesEnum.COMMAND_LEFT, KeyCodesEnum.COMMAND_RIGHT, KeyCodesEnum.COMMAND_FIREFOX], code);\n }\n\n return KeyCodesEnum.CONTROL === code;\n}\n\nexport function isCtrlMetaKey(code: KeyCodesEnum): boolean {\n return includes([KeyCodesEnum.CONTROL, KeyCodesEnum.COMMAND_LEFT, KeyCodesEnum.COMMAND_RIGHT, KeyCodesEnum.COMMAND_FIREFOX], code);\n}\n\nexport function isClear(code: string): boolean {\n return codesLetter.BACKSPACE === code || codesLetter.DELETE === code;\n}\n\nexport function isTab(code: string): boolean {\n return codesLetter.TAB === code;\n}\n\nexport function isEnterKey(code: string): boolean {\n return code === codesLetter.ENTER || code === codesLetter.ENTER_NUM;\n}\n","import { h } from '@stencil/core';\nimport { isEnterKey, isTab } from '../../../utils/keyCodes.utils';\nimport { Edition, RevoGrid } from '../../../interfaces';\nimport { timeout } from '../../../utils/utils';\n\n/**\n * Callback triggered on cell editor save\n * Closes editor when called\n * @param preventFocus - if true editor will not be closed and next cell will not be focused\n */\nexport type SaveCallback = (value: Edition.SaveData, preventFocus: boolean) => void;\n\nexport class TextEditor implements Edition.EditorBase {\n private editInput!: HTMLInputElement;\n\n public element: Element | null = null;\n public editCell: Edition.EditCell | null = null;\n\n constructor(public column: RevoGrid.ColumnRegular, private saveCallback?: SaveCallback) {}\n\n async componentDidRender(): Promise<void> {\n if (this.editInput) {\n await timeout();\n this.editInput?.focus();\n }\n }\n\n private onKeyDown(e: KeyboardEvent): void {\n const isEnter = isEnterKey(e.code);\n const isKeyTab = isTab(e.code);\n\n if ((isKeyTab || isEnter) && e.target && this.saveCallback && !e.isComposing) {\n // blur is needed to avoid autoscroll\n this.editInput.blur();\n // request callback which will close cell after all\n this.saveCallback((e.target as HTMLInputElement).value, isKeyTab);\n }\n }\n\n // required\n render() {\n return (\n <input\n type=\"text\"\n value={this.editCell?.val || ''}\n ref={el => {\n this.editInput = el;\n }}\n onKeyDown={e => this.onKeyDown(e)}\n />\n );\n }\n}\n","revogr-edit {\n display: block;\n position: absolute;\n background-color: #fff;\n\n input {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n }\n\n revo-dropdown {\n height: 100%;\n\n &.shrink {\n fieldset legend > span {\n display: none;\n }\n }\n }\n}\n","import { Component, Event, EventEmitter, Prop, h, Element, Host } from '@stencil/core';\n\nimport { Edition, RevoGrid } from '../../interfaces';\nimport { EDIT_INPUT_WR } from '../../utils/consts';\nimport { TextEditor } from './editors/text';\n\n@Component({\n tag: 'revogr-edit',\n styleUrl: 'revogr-edit-style.scss',\n})\nexport class Edit {\n @Element() element: HTMLElement;\n @Prop() editCell: Edition.EditCell;\n private currentEditor: Edition.EditorBase | null = null;\n\n @Prop() column: RevoGrid.ColumnRegular | null;\n /** Custom editors register */\n @Prop() editor: Edition.EditorCtr | null;\n\n @Event({ bubbles: false }) cellEdit: EventEmitter<Edition.SaveDataDetails>;\n\n /**\n * Close editor event\n * pass true if requires focus next\n */\n @Event({ bubbles: false }) closeEdit: EventEmitter<boolean | undefined>;\n\n /**\n * Callback triggered on cell editor save\n * Closes editor when called\n * @param preventFocus - if true editor will not be closed and next cell will not be focused\n */\n onSave(val: Edition.SaveData, preventFocus?: boolean): void {\n if (this.editCell) {\n this.cellEdit.emit({\n rgCol: this.editCell.x,\n rgRow: this.editCell.y,\n val,\n preventFocus,\n });\n }\n }\n\n componentWillRender(): void {\n if (!this.currentEditor) {\n if (this.editor) {\n this.currentEditor = new this.editor(\n this.column,\n (e, preventFocus) => this.onSave(e, preventFocus),\n focusNext => this.closeEdit.emit(focusNext),\n );\n } else {\n this.currentEditor = new TextEditor(this.column, (e, preventFocus) => this.onSave(e, preventFocus));\n }\n }\n }\n\n componentDidRender(): void {\n if (!this.currentEditor) {\n return;\n }\n this.currentEditor.element = this.element.firstElementChild;\n this.currentEditor.componentDidRender && this.currentEditor.componentDidRender();\n }\n\n disconnectedCallback(): void {\n if (!this.currentEditor) {\n return;\n }\n\n this.currentEditor.disconnectedCallback && this.currentEditor.disconnectedCallback();\n if (this.currentEditor.element) {\n this.currentEditor.element = null;\n }\n this.currentEditor = null;\n }\n\n render() {\n if (this.currentEditor) {\n this.currentEditor.editCell = this.editCell;\n return <Host class={EDIT_INPUT_WR}>{this.currentEditor.render(h)}</Host>;\n }\n return '';\n }\n}\n"],"version":3}
@@ -303,6 +303,7 @@ function defineCustomElement$1() {
303
303
  break;
304
304
  } });
305
305
  }
306
+ defineCustomElement$1();
306
307
 
307
308
  const RevogrFilterPanel = FilterPanel;
308
309
  const defineCustomElement = defineCustomElement$1;
@@ -1 +1 @@
1
- {"file":"revogr-filter-panel.js","mappings":"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","names":["debounce"],"sources":["src/components/button/button.tsx","src/utils/closestPolifill.ts","src/plugins/filter/filter.style.scss?tag=revogr-filter-panel","src/plugins/filter/filter.pop.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { JSXBase, VNode } from '@stencil/core/internal';\n\ninterface Props extends Partial<JSXBase.ButtonHTMLAttributes<HTMLButtonElement>> {}\n\nexport const RevoButton = (props: Props, children: VNode[]) => {\n return (\n <button\n {...props}\n class={{\n ...(typeof props.class === 'object' ? props.class : props.class ? { [props.class]: true } : ''),\n ['revo-button']: true,\n }}\n >\n {children}\n </button>\n );\n};\n","(function closest() {\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n ((Element.prototype as unknown) as { msMatchesSelector: (selectors: string) => boolean }).msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n\n if (!Element.prototype.closest) {\n Element.prototype.closest = function (s: string) {\n let el: HTMLElement | Element | (Node & ParentNode) = this;\n\n do {\n if (Element.prototype.matches.call(el, s)) {\n return el;\n }\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n }\n})();\n","revogr-filter-panel {\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n z-index: 100;\n\n opacity: 1;\n transform: none;\n background-color: #fff;\n transform-origin: 62px 0px;\n box-shadow: 0 5px 18px -2px rgba(black, 20%);\n padding: 10px;\n border-radius: 4px;\n\n min-width: 220px;\n text-align: left;\n\n .filter-holder > div {\n display: flex;\n flex-direction: column;\n }\n\n label {\n color: gray;\n font-size: 13px;\n font-weight: 600;\n display: block;\n padding: 8px 0;\n }\n\n select {\n width: 100%;\n }\n\n input[type=\"text\"] {\n border: 0;\n min-height: 34px;\n margin: 5px 0;\n background: #f3f3f3;\n border-radius: 5px;\n padding: 0 10px;\n box-sizing: border-box;\n width: 100%;\n }\n\n button {\n margin-top: 10px;\n margin-right: 5px;\n }\n\n\n .filter-actions {\n text-align: right;\n margin-right: -5px;\n }\n}\n\n.rgHeaderCell {\n &:hover .rv-filter {\n transition: opacity 267ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 178ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n }\n &:hover .rv-filter,\n .rv-filter.active {\n opacity: 1;\n }\n\n .rv-filter {\n $btn-size: 24px;\n height: $btn-size;\n width: $btn-size;\n background: none;\n border: 0;\n opacity: 0;\n visibility: visible;\n cursor: pointer;\n border-radius: 4px;\n\n &.active {\n color: #10224a;\n }\n\n .filter-img {\n $img-size: 11px;\n color: gray;\n width: $img-size;\n }\n }\n}\n\n.select-css {\n $gradient: \"data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E\";\n $linearGradient: linear-gradient(to bottom, #ffffff 0%, #ffffff 100%);\n $borderColor: #f1f1f1;\n\n display: block;\n font-family: sans-serif;\n font-weight: 600;\n color: #444;\n line-height: 1.3;\n padding: 0.6em 1.4em 0.5em 0.8em;\n width: 100%;\n max-width: 100%; /* useful when width is set to anything other than 100% */\n box-sizing: border-box;\n margin: 0;\n border: 1px solid $borderColor;\n box-shadow: transparent;\n border-radius: 0.5em;\n appearance: none;\n background-color: #fff;\n background-image: url($gradient), $linearGradient;\n background-repeat: no-repeat, repeat;\n /* arrow icon position (1em from the right, 50% vertical) , then gradient position*/\n background-position: right 0.7em top 50%, 0 0;\n /* icon size, then gradient */\n background-size: 0.65em auto, 100%;\n\n /* Hide arrow icon in IE browsers */\n &::-ms-expand {\n display: none;\n }\n /* Hover style */\n &:hover {\n border-color: rgb(197, 197, 197);\n }\n /* Focus style */\n &:focus {\n border-color: $borderColor;\n box-shadow: 0 0 1px 3px rgba(59, 153, 252, 0.7);\n box-shadow: 0 0 0 3px -moz-mac-focusring;\n color: #222;\n outline: none;\n }\n\n /* Set options to normal weight */\n option {\n font-weight: normal;\n }\n\n /* Disabled styles */\n &:disabled,\n &[aria-disabled=\"true\"] {\n color: gray;\n background-image: url(\"data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22graytext%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E\"),\n linear-gradient(to bottom, #ffffff 0%, #ffffff 100%);\n }\n\n &:disabled:hover,\n &[aria-disabled=\"true\"] {\n border-color: $borderColor;\n }\n}\n\n.multi-filter-list {\n margin-top: 5px;\n margin-bottom: 5px;\n\n div {\n white-space: nowrap;\n }\n\n .multi-filter-list-action {\n display: flex;\n\n justify-content: space-between;\n align-items: center;\n }\n\n .and-or-button {\n margin: 0 0 0 10px;\n min-width: 58px;\n cursor: pointer;\n }\n .trash-button {\n $btn-remove-size: 22px;\n margin: 0 0 -2px 6px;\n cursor: pointer;\n\n width: $btn-remove-size;\n height: $btn-remove-size;\n color: gray;\n font-size: 18px;\n\n\n .trash-img {\n width: 1em;\n }\n }\n}\n\n.add-filter-divider {\n display: block;\n margin: 0 -10px 10px -10px;\n\n border-bottom: 1px solid #d9d9d9;\n height: 10px;\n box-shadow: 0 4px 5px rgb(0 0 0 / 5%);\n}\n\n.select-input {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}","import { Component, h, Host, Listen, Prop, State, Event, EventEmitter, VNode, Method } from '@stencil/core';\nimport { FilterType } from './filter.service';\nimport { RevoGrid } from '../../interfaces';\nimport { AndOrButton, isFilterBtn, TrashButton } from './filter.button';\nimport { RevoButton } from '../../components/button/button';\nimport '../../utils/closestPolifill';\nimport { LogicFunction } from './filter.types';\nimport { FilterCaptions } from './filter.plugin';\nimport debounce from 'lodash/debounce';\n\n/**\n * @typedef FilterItem\n * @type {object}\n * @property {ColumnProp} prop - column id\n * @property {FilterType} type - filter type definition\n * @property {any} value - value for additional filtering, text value or some id\n */\nexport type FilterItem = {\n prop?: RevoGrid.ColumnProp;\n type?: FilterType;\n value?: any;\n};\n\nexport type FilterData = {\n id: number;\n type: FilterType;\n value?: any;\n relation: 'and' | 'or';\n};\n\nexport type MultiFilterItem = {\n [prop: string]: FilterData[];\n};\n\nexport type ShowData = {\n x: number;\n y: number;\n} & FilterItem;\n\nconst defaultType: FilterType = 'none';\n\nconst FILTER_LIST_CLASS = 'multi-filter-list';\nconst FILTER_LIST_CLASS_ACTION = 'multi-filter-list-action';\n\n@Component({\n tag: 'revogr-filter-panel',\n styleUrl: 'filter.style.scss',\n})\nexport class FilterPanel {\n private filterCaptionsInternal: FilterCaptions = {\n title: 'Filter by condition',\n save: 'Save',\n reset: 'Reset',\n cancel: 'Close',\n };\n @State() isFilterIdSet = false;\n @State() filterId = 0;\n @State() currentFilterId: number = -1;\n @State() currentFilterType: FilterType = defaultType;\n @State() changes: ShowData | undefined;\n @Prop({ mutable: true, reflect: true }) uuid: string;\n @Prop() filterItems: MultiFilterItem = {};\n @Prop() filterTypes: Record<string, string[]> = {};\n @Prop() filterNames: Record<string, string> = {};\n @Prop() filterEntities: Record<string, LogicFunction> = {};\n @Prop() filterCaptions: FilterCaptions | undefined;\n @Prop() disableDynamicFiltering: boolean = false;\n @Event() filterChange: EventEmitter<MultiFilterItem>;\n @Listen('mousedown', { target: 'document' }) onMouseDown(e: MouseEvent): void {\n if (this.changes && !e.defaultPrevented) {\n const el = e.target as HTMLElement;\n if (this.isOutside(el) && !isFilterBtn(el)) {\n this.changes = undefined;\n }\n }\n }\n @Method() async show(newEntity?: ShowData) {\n this.changes = newEntity;\n if (this.changes) {\n this.changes.type = this.changes.type || defaultType;\n }\n }\n\n @Method() async getChanges() {\n return this.changes;\n }\n\n componentWillRender() {\n if (!this.isFilterIdSet) {\n this.isFilterIdSet = true;\n const filterItems = Object.keys(this.filterItems);\n for (const prop of filterItems) {\n // we set the proper filterId so there won't be any conflict when removing filters\n this.filterId += this.filterItems[prop].length;\n }\n }\n }\n\n renderSelectOptions(type: FilterType, isDefaultTypeRemoved = false) {\n const options: VNode[] = [];\n const prop = this.changes?.prop;\n\n if (!isDefaultTypeRemoved) {\n options.push(\n <option selected={this.currentFilterType === defaultType} value={defaultType}>\n {prop && this.filterItems[prop] && this.filterItems[prop].length > 0 ? 'Add more condition...' : this.filterNames[defaultType]}\n </option>,\n );\n }\n\n for (let gIndex in this.filterTypes) {\n options.push(\n ...this.filterTypes[gIndex].map(k => (\n <option value={k} selected={type === k}>\n {this.filterNames[k]}\n </option>\n )),\n );\n options.push(<option disabled></option>);\n }\n return options;\n }\n\n renderExtra(prop: RevoGrid.ColumnProp, index: number) {\n const currentFilter = this.filterItems[prop];\n\n if (!currentFilter) return '';\n\n if (this.filterEntities[currentFilter[index].type].extra !== 'input') return '';\n\n return (\n <input\n id={`filter-input-${currentFilter[index].id}`}\n placeholder=\"Enter value...\"\n type=\"text\"\n value={currentFilter[index].value}\n onInput={this.onUserInput.bind(this, index, prop)}\n onKeyDown={e => this.onKeyDown(e)}\n />\n );\n }\n\n getFilterItemsList() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return '';\n\n const propFilters = this.filterItems[prop] || [];\n return (\n <div key={this.filterId}>\n {propFilters.map((d, index) => {\n let andOrButton;\n\n // hide toggle button if there is only one filter and the last one\n if (index !== this.filterItems[prop].length - 1) {\n andOrButton = (\n <div onClick={() => this.toggleFilterAndOr(d.id)}>\n <AndOrButton isAnd={d.relation === 'and'} />\n </div>\n );\n }\n\n return (\n <div key={d.id} class={FILTER_LIST_CLASS}>\n <div class={{ 'select-input': true }}>\n <select class=\"select-css select-filter\" onChange={e => this.onFilterTypeChange(e, prop, index)}>\n {this.renderSelectOptions(this.filterItems[prop][index].type, true)}\n </select>\n <div class={FILTER_LIST_CLASS_ACTION}>{andOrButton}</div>\n <div onClick={() => this.onRemoveFilter(d.id)}>\n <TrashButton />\n </div>\n </div>\n <div>{this.renderExtra(prop, index)}</div>\n </div>\n );\n })}\n\n {propFilters.length > 0 ? <div class=\"add-filter-divider\"></div> : ''}\n </div>\n );\n }\n\n render() {\n if (!this.changes) {\n return <Host style={{ display: 'none' }}></Host>;\n }\n const style = {\n display: 'block',\n left: `${this.changes.x}px`,\n top: `${this.changes.y}px`,\n };\n\n const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);\n\n return (\n <Host style={style}>\n <label>{capts.title}</label>\n <div class=\"filter-holder\">{this.getFilterItemsList()}</div>\n\n <div class=\"add-filter\">\n <select id=\"add-filter\" class=\"select-css\" onChange={e => this.onAddNewFilter(e)}>\n {this.renderSelectOptions(this.currentFilterType)}\n </select>\n </div>\n <div class=\"filter-actions\">\n {this.disableDynamicFiltering &&\n <RevoButton class={{ red: true, save: true }} onClick={() => this.onSave()}>\n {capts.save}\n </RevoButton>\n }\n <RevoButton class={{ red: true, reset: true }} onClick={() => this.onReset()}>\n {capts.reset}\n </RevoButton>\n <RevoButton class={{ light: true, cancel: true }} onClick={() => this.onCancel()}>\n {capts.cancel}\n </RevoButton>\n </div>\n </Host>\n );\n }\n\n private onFilterTypeChange(e: Event, prop: RevoGrid.ColumnProp, index: number) {\n const el = e.target as HTMLSelectElement;\n const type = el.value as FilterType;\n\n this.filterItems[prop][index].type = type;\n\n // this re-renders the input to know if we need extra input\n this.filterId++;\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById('filter-input-' + this.filterItems[prop][index].id) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private debouncedApplyFilter = debounce(() => {\n this.filterChange.emit(this.filterItems);\n }, 400);\n\n private onAddNewFilter(e: Event) {\n const el = e.target as HTMLSelectElement;\n const type = el.value as FilterType;\n\n this.currentFilterType = type;\n this.addNewFilterToProp();\n\n // reset value after adding new filter\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n }\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private addNewFilterToProp() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return;\n\n if (!this.filterItems[prop]) {\n this.filterItems[prop] = [];\n }\n\n if (this.currentFilterType === 'none') return;\n\n this.filterId++;\n this.currentFilterId = this.filterId;\n\n this.filterItems[prop].push({\n id: this.currentFilterId,\n type: this.currentFilterType,\n value: '',\n relation: 'and',\n });\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById('filter-input-' + this.currentFilterId) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n }\n\n private onUserInput(index: number, prop: RevoGrid.ColumnProp, event: Event) {\n // update the value of the filter item\n this.filterItems[prop][index].value = (event.target as HTMLInputElement).value;\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private onKeyDown(e: KeyboardEvent) {\n if (e.key.toLowerCase() === 'enter') {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n this.addNewFilterToProp();\n select.focus();\n }\n return;\n }\n // keep event local, don't escalate farther to dom\n e.stopPropagation();\n }\n\n private onSave() {\n this.filterChange.emit(this.filterItems);\n }\n\n private onCancel() {\n this.changes = undefined;\n }\n\n private onReset() {\n this.assertChanges();\n\n delete this.filterItems[this.changes.prop];\n\n // this updates the DOM which is used by getFilterItemsList() key\n this.filterId++;\n\n this.filterChange.emit(this.filterItems);\n }\n\n private onRemoveFilter(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes.prop;\n\n const items = this.filterItems[prop];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n items.splice(index, 1);\n\n // let's remove the prop if no more filters so the filter icon will be removed\n if (items.length === 0) delete this.filterItems[prop];\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private toggleFilterAndOr(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes.prop;\n\n const items = this.filterItems[prop];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n\n items[index].relation = items[index].relation === 'and' ? 'or' : 'and';\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private assertChanges() {\n if (!this.changes) {\n throw new Error('Changes required per edit');\n }\n }\n\n private isOutside(e: HTMLElement | null) {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) select.value = defaultType;\n\n this.currentFilterType = defaultType;\n this.changes.type = defaultType;\n this.currentFilterId = -1;\n if (e.classList.contains(`[uuid=\"${this.uuid}\"]`)) {\n return false;\n }\n return !e?.closest(`[uuid=\"${this.uuid}\"]`);\n }\n}\n"],"version":3}
1
+ {"file":"revogr-filter-panel.js","mappings":"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","names":["debounce"],"sources":["src/components/button/button.tsx","src/utils/closestPolifill.ts","src/plugins/filter/filter.style.scss?tag=revogr-filter-panel","src/plugins/filter/filter.pop.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { JSXBase, VNode } from '@stencil/core/internal';\n\ninterface Props extends Partial<JSXBase.ButtonHTMLAttributes<HTMLButtonElement>> {}\n\nexport const RevoButton = (props: Props, children: VNode[]) => {\n return (\n <button\n {...props}\n class={{\n ...(typeof props.class === 'object' ? props.class : props.class ? { [props.class]: true } : ''),\n ['revo-button']: true,\n }}\n >\n {children}\n </button>\n );\n};\n","(function closest() {\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n ((Element.prototype as unknown) as { msMatchesSelector: (selectors: string) => boolean }).msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n\n if (!Element.prototype.closest) {\n Element.prototype.closest = function (s: string) {\n let el: HTMLElement | Element | (Node & ParentNode) = this;\n\n do {\n if (Element.prototype.matches.call(el, s)) {\n return el;\n }\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n }\n})();\n","revogr-filter-panel {\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n z-index: 100;\n\n opacity: 1;\n transform: none;\n background-color: #fff;\n transform-origin: 62px 0px;\n box-shadow: 0 5px 18px -2px rgba(black, 20%);\n padding: 10px;\n border-radius: 4px;\n\n min-width: 220px;\n text-align: left;\n\n .filter-holder > div {\n display: flex;\n flex-direction: column;\n }\n\n label {\n color: gray;\n font-size: 13px;\n font-weight: 600;\n display: block;\n padding: 8px 0;\n }\n\n select {\n width: 100%;\n }\n\n input[type=\"text\"] {\n border: 0;\n min-height: 34px;\n margin: 5px 0;\n background: #f3f3f3;\n border-radius: 5px;\n padding: 0 10px;\n box-sizing: border-box;\n width: 100%;\n }\n\n button {\n margin-top: 10px;\n margin-right: 5px;\n }\n\n\n .filter-actions {\n text-align: right;\n margin-right: -5px;\n }\n}\n\n.rgHeaderCell {\n &:hover .rv-filter {\n transition: opacity 267ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 178ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n }\n &:hover .rv-filter,\n .rv-filter.active {\n opacity: 1;\n }\n\n .rv-filter {\n $btn-size: 24px;\n height: $btn-size;\n width: $btn-size;\n background: none;\n border: 0;\n opacity: 0;\n visibility: visible;\n cursor: pointer;\n border-radius: 4px;\n\n &.active {\n color: #10224a;\n }\n\n .filter-img {\n $img-size: 11px;\n color: gray;\n width: $img-size;\n }\n }\n}\n\n.select-css {\n $gradient: \"data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E\";\n $linearGradient: linear-gradient(to bottom, #ffffff 0%, #ffffff 100%);\n $borderColor: #f1f1f1;\n\n display: block;\n font-family: sans-serif;\n font-weight: 600;\n color: #444;\n line-height: 1.3;\n padding: 0.6em 1.4em 0.5em 0.8em;\n width: 100%;\n max-width: 100%; /* useful when width is set to anything other than 100% */\n box-sizing: border-box;\n margin: 0;\n border: 1px solid $borderColor;\n box-shadow: transparent;\n border-radius: 0.5em;\n appearance: none;\n background-color: #fff;\n background-image: url($gradient), $linearGradient;\n background-repeat: no-repeat, repeat;\n /* arrow icon position (1em from the right, 50% vertical) , then gradient position*/\n background-position: right 0.7em top 50%, 0 0;\n /* icon size, then gradient */\n background-size: 0.65em auto, 100%;\n\n /* Hide arrow icon in IE browsers */\n &::-ms-expand {\n display: none;\n }\n /* Hover style */\n &:hover {\n border-color: rgb(197, 197, 197);\n }\n /* Focus style */\n &:focus {\n border-color: $borderColor;\n box-shadow: 0 0 1px 3px rgba(59, 153, 252, 0.7);\n box-shadow: 0 0 0 3px -moz-mac-focusring;\n color: #222;\n outline: none;\n }\n\n /* Set options to normal weight */\n option {\n font-weight: normal;\n }\n\n /* Disabled styles */\n &:disabled,\n &[aria-disabled=\"true\"] {\n color: gray;\n background-image: url(\"data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22graytext%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E\"),\n linear-gradient(to bottom, #ffffff 0%, #ffffff 100%);\n }\n\n &:disabled:hover,\n &[aria-disabled=\"true\"] {\n border-color: $borderColor;\n }\n}\n\n.multi-filter-list {\n margin-top: 5px;\n margin-bottom: 5px;\n\n div {\n white-space: nowrap;\n }\n\n .multi-filter-list-action {\n display: flex;\n\n justify-content: space-between;\n align-items: center;\n }\n\n .and-or-button {\n margin: 0 0 0 10px;\n min-width: 58px;\n cursor: pointer;\n }\n .trash-button {\n $btn-remove-size: 22px;\n margin: 0 0 -2px 6px;\n cursor: pointer;\n\n width: $btn-remove-size;\n height: $btn-remove-size;\n color: gray;\n font-size: 18px;\n\n\n .trash-img {\n width: 1em;\n }\n }\n}\n\n.add-filter-divider {\n display: block;\n margin: 0 -10px 10px -10px;\n\n border-bottom: 1px solid #d9d9d9;\n height: 10px;\n box-shadow: 0 4px 5px rgb(0 0 0 / 5%);\n}\n\n.select-input {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}","import { Component, h, Host, Listen, Prop, State, Event, EventEmitter, VNode, Method } from '@stencil/core';\nimport { FilterType } from './filter.service';\nimport { RevoGrid } from '../../interfaces';\nimport { AndOrButton, isFilterBtn, TrashButton } from './filter.button';\nimport { RevoButton } from '../../components/button/button';\nimport '../../utils/closestPolifill';\nimport { LogicFunction } from './filter.types';\nimport { FilterCaptions } from './filter.plugin';\nimport debounce from 'lodash/debounce';\n\n/**\n * @typedef FilterItem\n * @type {object}\n * @property {ColumnProp} prop - column id\n * @property {FilterType} type - filter type definition\n * @property {any} value - value for additional filtering, text value or some id\n */\nexport type FilterItem = {\n prop?: RevoGrid.ColumnProp;\n type?: FilterType;\n value?: any;\n};\n\nexport type FilterData = {\n id: number;\n type: FilterType;\n value?: any;\n relation: 'and' | 'or';\n};\n\nexport type MultiFilterItem = {\n [prop: string]: FilterData[];\n};\n\nexport type ShowData = {\n x: number;\n y: number;\n} & FilterItem;\n\nconst defaultType: FilterType = 'none';\n\nconst FILTER_LIST_CLASS = 'multi-filter-list';\nconst FILTER_LIST_CLASS_ACTION = 'multi-filter-list-action';\n\n@Component({\n tag: 'revogr-filter-panel',\n styleUrl: 'filter.style.scss',\n})\nexport class FilterPanel {\n private filterCaptionsInternal: FilterCaptions = {\n title: 'Filter by condition',\n save: 'Save',\n reset: 'Reset',\n cancel: 'Close',\n };\n @State() isFilterIdSet = false;\n @State() filterId = 0;\n @State() currentFilterId: number = -1;\n @State() currentFilterType: FilterType = defaultType;\n @State() changes: ShowData | undefined;\n @Prop({ mutable: true, reflect: true }) uuid: string;\n @Prop() filterItems: MultiFilterItem = {};\n @Prop() filterTypes: Record<string, string[]> = {};\n @Prop() filterNames: Record<string, string> = {};\n @Prop() filterEntities: Record<string, LogicFunction> = {};\n @Prop() filterCaptions: FilterCaptions | undefined;\n @Prop() disableDynamicFiltering: boolean = false;\n @Event() filterChange: EventEmitter<MultiFilterItem>;\n @Listen('mousedown', { target: 'document' }) onMouseDown(e: MouseEvent): void {\n if (this.changes && !e.defaultPrevented) {\n const el = e.target as HTMLElement;\n if (this.isOutside(el) && !isFilterBtn(el)) {\n this.changes = undefined;\n }\n }\n }\n @Method() async show(newEntity?: ShowData) {\n this.changes = newEntity;\n if (this.changes) {\n this.changes.type = this.changes.type || defaultType;\n }\n }\n\n @Method() async getChanges() {\n return this.changes;\n }\n\n componentWillRender() {\n if (!this.isFilterIdSet) {\n this.isFilterIdSet = true;\n const filterItems = Object.keys(this.filterItems);\n for (const prop of filterItems) {\n // we set the proper filterId so there won't be any conflict when removing filters\n this.filterId += this.filterItems[prop].length;\n }\n }\n }\n\n renderSelectOptions(type: FilterType, isDefaultTypeRemoved = false) {\n const options: VNode[] = [];\n const prop = this.changes?.prop;\n\n if (!isDefaultTypeRemoved) {\n options.push(\n <option selected={this.currentFilterType === defaultType} value={defaultType}>\n {prop && this.filterItems[prop] && this.filterItems[prop].length > 0 ? 'Add more condition...' : this.filterNames[defaultType]}\n </option>,\n );\n }\n\n for (let gIndex in this.filterTypes) {\n options.push(\n ...this.filterTypes[gIndex].map(k => (\n <option value={k} selected={type === k}>\n {this.filterNames[k]}\n </option>\n )),\n );\n options.push(<option disabled></option>);\n }\n return options;\n }\n\n renderExtra(prop: RevoGrid.ColumnProp, index: number) {\n const currentFilter = this.filterItems[prop];\n\n if (!currentFilter) return '';\n\n if (this.filterEntities[currentFilter[index].type].extra !== 'input') return '';\n\n return (\n <input\n id={`filter-input-${currentFilter[index].id}`}\n placeholder=\"Enter value...\"\n type=\"text\"\n value={currentFilter[index].value}\n onInput={this.onUserInput.bind(this, index, prop)}\n onKeyDown={e => this.onKeyDown(e)}\n />\n );\n }\n\n getFilterItemsList() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return '';\n\n const propFilters = this.filterItems[prop] || [];\n return (\n <div key={this.filterId}>\n {propFilters.map((d, index) => {\n let andOrButton;\n\n // hide toggle button if there is only one filter and the last one\n if (index !== this.filterItems[prop].length - 1) {\n andOrButton = (\n <div onClick={() => this.toggleFilterAndOr(d.id)}>\n <AndOrButton isAnd={d.relation === 'and'} />\n </div>\n );\n }\n\n return (\n <div key={d.id} class={FILTER_LIST_CLASS}>\n <div class={{ 'select-input': true }}>\n <select class=\"select-css select-filter\" onChange={e => this.onFilterTypeChange(e, prop, index)}>\n {this.renderSelectOptions(this.filterItems[prop][index].type, true)}\n </select>\n <div class={FILTER_LIST_CLASS_ACTION}>{andOrButton}</div>\n <div onClick={() => this.onRemoveFilter(d.id)}>\n <TrashButton />\n </div>\n </div>\n <div>{this.renderExtra(prop, index)}</div>\n </div>\n );\n })}\n\n {propFilters.length > 0 ? <div class=\"add-filter-divider\"></div> : ''}\n </div>\n );\n }\n\n render() {\n if (!this.changes) {\n return <Host style={{ display: 'none' }}></Host>;\n }\n const style = {\n display: 'block',\n left: `${this.changes.x}px`,\n top: `${this.changes.y}px`,\n };\n\n const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);\n\n return (\n <Host style={style}>\n <label>{capts.title}</label>\n <div class=\"filter-holder\">{this.getFilterItemsList()}</div>\n\n <div class=\"add-filter\">\n <select id=\"add-filter\" class=\"select-css\" onChange={e => this.onAddNewFilter(e)}>\n {this.renderSelectOptions(this.currentFilterType)}\n </select>\n </div>\n <div class=\"filter-actions\">\n {this.disableDynamicFiltering &&\n <RevoButton class={{ red: true, save: true }} onClick={() => this.onSave()}>\n {capts.save}\n </RevoButton>\n }\n <RevoButton class={{ red: true, reset: true }} onClick={() => this.onReset()}>\n {capts.reset}\n </RevoButton>\n <RevoButton class={{ light: true, cancel: true }} onClick={() => this.onCancel()}>\n {capts.cancel}\n </RevoButton>\n </div>\n </Host>\n );\n }\n\n private onFilterTypeChange(e: Event, prop: RevoGrid.ColumnProp, index: number) {\n const el = e.target as HTMLSelectElement;\n const type = el.value as FilterType;\n\n this.filterItems[prop][index].type = type;\n\n // this re-renders the input to know if we need extra input\n this.filterId++;\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById('filter-input-' + this.filterItems[prop][index].id) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private debouncedApplyFilter = debounce(() => {\n this.filterChange.emit(this.filterItems);\n }, 400);\n\n private onAddNewFilter(e: Event) {\n const el = e.target as HTMLSelectElement;\n const type = el.value as FilterType;\n\n this.currentFilterType = type;\n this.addNewFilterToProp();\n\n // reset value after adding new filter\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n }\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private addNewFilterToProp() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return;\n\n if (!this.filterItems[prop]) {\n this.filterItems[prop] = [];\n }\n\n if (this.currentFilterType === 'none') return;\n\n this.filterId++;\n this.currentFilterId = this.filterId;\n\n this.filterItems[prop].push({\n id: this.currentFilterId,\n type: this.currentFilterType,\n value: '',\n relation: 'and',\n });\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById('filter-input-' + this.currentFilterId) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n }\n\n private onUserInput(index: number, prop: RevoGrid.ColumnProp, event: Event) {\n // update the value of the filter item\n this.filterItems[prop][index].value = (event.target as HTMLInputElement).value;\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private onKeyDown(e: KeyboardEvent) {\n if (e.key.toLowerCase() === 'enter') {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n this.addNewFilterToProp();\n select.focus();\n }\n return;\n }\n // keep event local, don't escalate farther to dom\n e.stopPropagation();\n }\n\n private onSave() {\n this.filterChange.emit(this.filterItems);\n }\n\n private onCancel() {\n this.changes = undefined;\n }\n\n private onReset() {\n this.assertChanges();\n\n delete this.filterItems[this.changes.prop];\n\n // this updates the DOM which is used by getFilterItemsList() key\n this.filterId++;\n\n this.filterChange.emit(this.filterItems);\n }\n\n private onRemoveFilter(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes.prop;\n\n const items = this.filterItems[prop];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n items.splice(index, 1);\n\n // let's remove the prop if no more filters so the filter icon will be removed\n if (items.length === 0) delete this.filterItems[prop];\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private toggleFilterAndOr(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes.prop;\n\n const items = this.filterItems[prop];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n\n items[index].relation = items[index].relation === 'and' ? 'or' : 'and';\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private assertChanges() {\n if (!this.changes) {\n throw new Error('Changes required per edit');\n }\n }\n\n private isOutside(e: HTMLElement | null) {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) select.value = defaultType;\n\n this.currentFilterType = defaultType;\n this.changes.type = defaultType;\n this.currentFilterId = -1;\n if (e.classList.contains(`[uuid=\"${this.uuid}\"]`)) {\n return false;\n }\n return !e?.closest(`[uuid=\"${this.uuid}\"]`);\n }\n}\n"],"version":3}
@@ -64,6 +64,7 @@ function defineCustomElement() {
64
64
  break;
65
65
  } });
66
66
  }
67
+ defineCustomElement();
67
68
 
68
69
  export { RevogrFocus as R, defineCustomElement as d };
69
70
 
@@ -1 +1 @@
1
- {"file":"revogr-focus2.js","mappings":";;;;;;;;AAAA,MAAM,mBAAmB,GAAG,myUAAmyU;;MCWlzU,WAAW;;;;;;;;;;;EAcd,OAAO,CAAC,CAAc,EAAE,KAAqB;IACnD,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,cAAc,CAAC;MAChB,KAAK,EAAE,SAAS;MAChB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;MACnB,KAAK;MACL,MAAM;KACP,CAAC,CAAC;GACJ;EAED,kBAAkB;IAChB,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtD,YAAY,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;GAChE;EAED,MAAM;IACJ,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,IAAI,EAAE;MACR,MAAM,KAAK,GAAG,UAAU,iCAEjB,IAAI,KACP,EAAE,EAAE,IAAI,CAAC,CAAC,EACV,EAAE,EAAE,IAAI,CAAC,CAAC,KAEZ,IAAI,CAAC,YAAY,CAAC,KAAK,EACvB,IAAI,CAAC,YAAY,CAAC,KAAK,CACxB,CAAC;MACF,OAAO,EAAC,IAAI,IAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;KACnD;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/selection-focus/revogr-focus-style.scss?tag=revogr-focus","src/components/selection-focus/revogr-focus.tsx"],"sourcesContent":["revogr-focus.focused-cell {\n @include selection(1px);\n\n position: absolute;\n pointer-events: none;\n z-index: 9;\n display: block;\n}\n","import { Component, Prop, h, Host, Element, Event, EventEmitter } from '@stencil/core';\nimport { Observable, RevoGrid, Selection } from '../../interfaces';\nimport { getSourceItem } from '../../store/dataSource/data.store';\nimport { FOCUS_CLASS } from '../../utils/consts';\nimport { ColumnSource, RowSource } from '../data/columnService';\nimport { getElStyle } from '../overlay/selection.utils';\n\n@Component({\n tag: 'revogr-focus',\n styleUrl: 'revogr-focus-style.scss',\n})\nexport class RevogrFocus {\n @Element() el: HTMLElement;\n\n /** Dynamic stores */\n @Prop() dataStore!: RowSource;\n @Prop() colData!: ColumnSource;\n @Prop() selectionStore!: Observable<Selection.SelectionStoreState>;\n @Prop() dimensionRow!: Observable<RevoGrid.DimensionSettingsState>;\n @Prop() dimensionCol!: Observable<RevoGrid.DimensionSettingsState>;\n @Event({ eventName: 'afterfocus' }) afterFocus: EventEmitter<{\n model: any;\n column: RevoGrid.ColumnRegular;\n }>;\n\n private changed(e: HTMLElement, focus: Selection.Cell): void {\n e?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n const model = getSourceItem(this.dataStore, focus.y);\n const column = getSourceItem(this.colData, focus.x);\n this.afterFocus.emit({\n model,\n column\n });\n }\n\n componentDidRender(): void {\n const currentFocus = this.selectionStore.get('focus');\n currentFocus && this.el && this.changed(this.el, currentFocus);\n }\n\n render() {\n const data = this.selectionStore.get('focus');\n if (data) {\n const style = getElStyle(\n {\n ...data,\n x1: data.x,\n y1: data.y,\n },\n this.dimensionRow.state,\n this.dimensionCol.state,\n );\n return <Host class={FOCUS_CLASS} style={style} />;\n }\n }\n}\n"],"version":3}
1
+ {"file":"revogr-focus2.js","mappings":";;;;;;;;AAAA,MAAM,mBAAmB,GAAG,myUAAmyU;;MCWlzU,WAAW;;;;;;;;;;;EAcd,OAAO,CAAC,CAAc,EAAE,KAAqB;IACnD,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,cAAc,CAAC;MAChB,KAAK,EAAE,SAAS;MAChB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;MACnB,KAAK;MACL,MAAM;KACP,CAAC,CAAC;GACJ;EAED,kBAAkB;IAChB,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtD,YAAY,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;GAChE;EAED,MAAM;IACJ,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,IAAI,EAAE;MACR,MAAM,KAAK,GAAG,UAAU,iCAEjB,IAAI,KACP,EAAE,EAAE,IAAI,CAAC,CAAC,EACV,EAAE,EAAE,IAAI,CAAC,CAAC,KAEZ,IAAI,CAAC,YAAY,CAAC,KAAK,EACvB,IAAI,CAAC,YAAY,CAAC,KAAK,CACxB,CAAC;MACF,OAAO,EAAC,IAAI,IAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;KACnD;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/selection-focus/revogr-focus-style.scss?tag=revogr-focus","src/components/selection-focus/revogr-focus.tsx"],"sourcesContent":["revogr-focus.focused-cell {\n @include selection(1px);\n\n position: absolute;\n pointer-events: none;\n z-index: 9;\n display: block;\n}\n","import { Component, Prop, h, Host, Element, Event, EventEmitter } from '@stencil/core';\nimport { Observable, RevoGrid, Selection } from '../../interfaces';\nimport { getSourceItem } from '../../store/dataSource/data.store';\nimport { FOCUS_CLASS } from '../../utils/consts';\nimport { ColumnSource, RowSource } from '../data/columnService';\nimport { getElStyle } from '../overlay/selection.utils';\n\n@Component({\n tag: 'revogr-focus',\n styleUrl: 'revogr-focus-style.scss',\n})\nexport class RevogrFocus {\n @Element() el: HTMLElement;\n\n /** Dynamic stores */\n @Prop() dataStore!: RowSource;\n @Prop() colData!: ColumnSource;\n @Prop() selectionStore!: Observable<Selection.SelectionStoreState>;\n @Prop() dimensionRow!: Observable<RevoGrid.DimensionSettingsState>;\n @Prop() dimensionCol!: Observable<RevoGrid.DimensionSettingsState>;\n @Event({ eventName: 'afterfocus' }) afterFocus: EventEmitter<{\n model: any;\n column: RevoGrid.ColumnRegular;\n }>;\n\n private changed(e: HTMLElement, focus: Selection.Cell): void {\n e?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n const model = getSourceItem(this.dataStore, focus.y);\n const column = getSourceItem(this.colData, focus.x);\n this.afterFocus.emit({\n model,\n column\n });\n }\n\n componentDidRender(): void {\n const currentFocus = this.selectionStore.get('focus');\n currentFocus && this.el && this.changed(this.el, currentFocus);\n }\n\n render() {\n const data = this.selectionStore.get('focus');\n if (data) {\n const style = getElStyle(\n {\n ...data,\n x1: data.x,\n y1: data.y,\n },\n this.dimensionRow.state,\n this.dimensionCol.state,\n );\n return <Host class={FOCUS_CLASS} style={style} />;\n }\n }\n}\n"],"version":3}
@@ -593,6 +593,7 @@ function defineCustomElement() {
593
593
  break;
594
594
  } });
595
595
  }
596
+ defineCustomElement();
596
597
 
597
598
  export { RevogrHeaderComponent as R, defineCustomElement as a, dispatch as d };
598
599