ember-headless-table 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +9 -0
- package/dist/-private/-type-tests/plugin-properties.test.js +4 -8
- package/dist/-private/-type-tests/plugin-properties.test.js.map +1 -1
- package/dist/-private/-type-tests/plugin-with.test.js.map +1 -1
- package/dist/-private/-type-tests/plugins-accessors.test.js +12 -11
- package/dist/-private/-type-tests/plugins-accessors.test.js.map +1 -1
- package/dist/-private/-type-tests/plugins-signature-from.test.js +7 -6
- package/dist/-private/-type-tests/plugins-signature-from.test.js.map +1 -1
- package/dist/-private/-type-tests/plugins-signature-utils.test.js.map +1 -1
- package/dist/-private/-type-tests/table-api.test.js +3 -2
- package/dist/-private/-type-tests/table-api.test.js.map +1 -1
- package/dist/-private/-type-tests/table-config.test.js +9 -11
- package/dist/-private/-type-tests/table-config.test.js.map +1 -1
- package/dist/-private/column.d.ts +1 -1
- package/dist/-private/column.js +7 -15
- package/dist/-private/column.js.map +1 -1
- package/dist/-private/js-helper.d.ts +1 -1
- package/dist/-private/js-helper.js +2 -3
- package/dist/-private/js-helper.js.map +1 -1
- package/dist/-private/preferences.js +7 -39
- package/dist/-private/preferences.js.map +1 -1
- package/dist/-private/row.d.ts +1 -1
- package/dist/-private/row.js +4 -15
- package/dist/-private/row.js.map +1 -1
- package/dist/-private/table.js +4 -4
- package/dist/-private/utils.js +0 -2
- package/dist/-private/utils.js.map +1 -1
- package/dist/{applyDecoratedDescriptor-e0489e2f.js → applyDecoratedDescriptor-6b986a67.js} +1 -6
- package/dist/applyDecoratedDescriptor-6b986a67.js.map +1 -0
- package/dist/{classPrivateFieldGet-af59a8ea.js → classPrivateFieldGet-b4d7d334.js} +1 -3
- package/dist/{classPrivateFieldGet-af59a8ea.js.map → classPrivateFieldGet-b4d7d334.js.map} +1 -1
- package/dist/{defineProperty-a0196711.js → defineProperty-35ce617b.js} +1 -2
- package/dist/defineProperty-35ce617b.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/plugins/-private/base.d.ts +1 -1
- package/dist/plugins/-private/base.js +18 -59
- package/dist/plugins/-private/base.js.map +1 -1
- package/dist/plugins/-private/utils.js +5 -20
- package/dist/plugins/-private/utils.js.map +1 -1
- package/dist/plugins/column-reordering/helpers.d.ts +9 -4
- package/dist/plugins/column-reordering/helpers.js +13 -6
- package/dist/plugins/column-reordering/helpers.js.map +1 -1
- package/dist/plugins/column-reordering/index.js +1 -1
- package/dist/plugins/column-reordering/plugin.d.ts +57 -11
- package/dist/plugins/column-reordering/plugin.js +109 -130
- package/dist/plugins/column-reordering/plugin.js.map +1 -1
- package/dist/plugins/column-reordering/utils.js +0 -7
- package/dist/plugins/column-reordering/utils.js.map +1 -1
- package/dist/plugins/column-resizing/handle.js +4 -33
- package/dist/plugins/column-resizing/handle.js.map +1 -1
- package/dist/plugins/column-resizing/helpers.js +2 -2
- package/dist/plugins/column-resizing/helpers.js.map +1 -1
- package/dist/plugins/column-resizing/plugin.js +15 -64
- package/dist/plugins/column-resizing/plugin.js.map +1 -1
- package/dist/plugins/column-resizing/resize-observer.js +1 -3
- package/dist/plugins/column-resizing/resize-observer.js.map +1 -1
- package/dist/plugins/column-resizing/utils.js +0 -2
- package/dist/plugins/column-resizing/utils.js.map +1 -1
- package/dist/plugins/column-visibility/helpers.js +3 -3
- package/dist/plugins/column-visibility/helpers.js.map +1 -1
- package/dist/plugins/column-visibility/plugin.js +6 -26
- package/dist/plugins/column-visibility/plugin.js.map +1 -1
- package/dist/plugins/data-sorting/helpers.js +7 -7
- package/dist/plugins/data-sorting/helpers.js.map +1 -1
- package/dist/plugins/data-sorting/plugin.js +2 -32
- package/dist/plugins/data-sorting/plugin.js.map +1 -1
- package/dist/plugins/data-sorting/types.js +0 -3
- package/dist/plugins/data-sorting/types.js.map +1 -1
- package/dist/plugins/metadata/helpers.d.ts +4 -0
- package/dist/plugins/metadata/helpers.js +12 -0
- package/dist/plugins/metadata/helpers.js.map +1 -0
- package/dist/plugins/metadata/index.d.ts +3 -0
- package/dist/plugins/metadata/index.js +3 -0
- package/dist/plugins/metadata/index.js.map +1 -0
- package/dist/plugins/metadata/plugin.d.ts +24 -0
- package/dist/plugins/metadata/plugin.js +25 -0
- package/dist/plugins/metadata/plugin.js.map +1 -0
- package/dist/plugins/row-selection/helpers.js.map +1 -1
- package/dist/plugins/row-selection/plugin.js +5 -42
- package/dist/plugins/row-selection/plugin.js.map +1 -1
- package/dist/plugins/sticky-columns/helpers.d.ts +14 -1
- package/dist/plugins/sticky-columns/helpers.js +40 -1
- package/dist/plugins/sticky-columns/helpers.js.map +1 -1
- package/dist/plugins/sticky-columns/index.js +1 -1
- package/dist/plugins/sticky-columns/plugin.d.ts +17 -1
- package/dist/plugins/sticky-columns/plugin.js +41 -43
- package/dist/plugins/sticky-columns/plugin.js.map +1 -1
- package/dist/{table-8e46554b.d.ts → table-0cbd2720.d.ts} +9 -7
- package/dist/{table-8e46554b.js → table-0cbd2720.js} +34 -36
- package/dist/table-0cbd2720.js.map +1 -0
- package/dist/test-support/index.js +2 -6
- package/dist/test-support/index.js.map +1 -1
- package/dist/utils.js +2 -5
- package/dist/utils.js.map +1 -1
- package/package.json +20 -33
- package/dist/applyDecoratedDescriptor-e0489e2f.js.map +0 -1
- package/dist/defineProperty-a0196711.js.map +0 -1
- package/dist/table-8e46554b.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["../../../src/plugins/column-resizing/plugin.ts"],"sourcesContent":["import { cached, tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\n\nimport { BasePlugin, columns, meta, options } from '../-private/base';\nimport { applyStyles } from '../-private/utils';\nimport { getAccurateClientHeight, getAccurateClientWidth, totalGapOf } from './utils';\n\nimport type { ColumnApi } from '[public-plugin-types]';\nimport type { Column, Table } from '[public-types]';\n\nexport interface ColumnOptions {\n /**\n * Force a starting width\n * This may not be less than the minWidth\n */\n width?: number;\n /**\n * Default: 128px\n */\n minWidth?: number;\n /**\n * Flip if the column is resizable or not.\n * The default is whatever the table's plugin option is set to\n * (and then yet again true, if not set at all)\n */\n isResizable?: boolean;\n}\n\nexport interface TableOptions {\n /**\n * Toggle whether the table is able to be resized at all\n *\n * default :true\n */\n enabled?: boolean;\n\n /**\n * By default, each column's \"handle\" position is on the\n * left-hand side of the column.\n *\n * If, for style-reasons, you want to move it to the right,\n * this option should reflect that so that the calculations can be\n * updated to match the expected behavior of which column(s) grow/shrink\n *\n * Valid values are 'left' or 'right'\n */\n handlePosition?: string;\n}\n\ninterface Signature {\n Meta: {\n Column: ColumnMeta;\n Table: TableMeta;\n };\n Options: {\n Plugin: TableOptions;\n Column: ColumnOptions;\n };\n}\n\n/**\n * One instance of a plugin exists per table\n * but a plugin can have a \"Meta\" for each column\n */\nexport class ColumnResizing extends BasePlugin<Signature> {\n name = 'column-resizing';\n static features = ['columnWidth'];\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n };\n\n headerCellModifier = (element: HTMLElement, { column }: ColumnApi) => {\n let columnMeta = meta.forColumn(column, ColumnResizing);\n\n element.setAttribute('data-test-is-resizable', `${columnMeta.isResizable}`);\n\n applyStyles(element, columnMeta.style);\n };\n\n /**\n * This is what ends up calling resize when the browesr changes\n * (assuming that the containing element's styles stretch to fill the space)\n *\n * Later, when container queries are more broadly supported, we'll want to watch\n * the container instead of the window to prevent unneeded updates (as a window can change\n * size without the container changing size)\n */\n containerModifier = resizeObserver;\n\n reset() {\n let tableMeta = meta.forTable(this.table, ColumnResizing);\n\n tableMeta.reset();\n }\n}\n\nconst DEFAULT_COLUMN_OPTIONS = {\n minWidth: 128,\n};\n\n/**\n * @private\n *\n * Contains resizable information for a particular column\n */\nexport class ColumnMeta {\n constructor(private column: Column) {}\n\n @tracked _width?: number;\n @tracked isResizing = false;\n\n get tableMeta() {\n return meta.forTable(this.column.table, ColumnResizing);\n }\n\n @cached\n get options() {\n let columnOptions = options.forColumn(this.column, ColumnResizing);\n let filteredOptions = Object.entries(columnOptions || {}).reduce((result, [k, v]) => {\n if (v) {\n result[k] = v;\n }\n\n return result;\n }, {} as Record<string, unknown>) as ColumnOptions;\n\n return {\n ...DEFAULT_COLUMN_OPTIONS,\n ...filteredOptions,\n };\n }\n\n get minWidth() {\n return this.options.minWidth;\n }\n\n get initialWidth() {\n return this.options.width;\n }\n\n get canShrink() {\n return this.width && this.width > this.minWidth;\n }\n\n get roomToShrink() {\n return this.width ? this.width - this.minWidth : 0;\n }\n\n get isResizable() {\n return this.options.isResizable ?? this.tableMeta.isResizable;\n }\n\n get hasResizeHandle() {\n let previous = columns.previous(this.column);\n\n if (!previous) return false;\n\n return this.isResizable && meta.forColumn(previous, ColumnResizing).isResizable;\n }\n\n get width() {\n let width = this._width ?? this.initialWidth;\n\n if (!width) {\n let { defaultColumnWidth } = this.tableMeta;\n\n width = defaultColumnWidth ? Math.max(defaultColumnWidth, this.minWidth) : this.minWidth;\n }\n\n return width;\n }\n\n set width(value) {\n this._width = value;\n }\n\n get style() {\n let styles: Partial<Pick<CSSStyleDeclaration, 'width' | 'minWidth'>> = {};\n\n if (this.width) styles.width = `${this.width}px`;\n if (this.minWidth) styles.minWidth = `${this.minWidth}px`;\n\n return styles;\n }\n\n @action\n resize(delta: number) {\n this.tableMeta.resizeColumn(this.column, delta);\n }\n}\n\n/**\n * @private\n *\n * individual column width must exclude:\n * - padding\n * - margin\n * - gap (partial)\n * - any other positioning offsets\n *\n * Otherwise the table will infinitely resize itself\n */\nfunction distributeDelta(delta: number, visibleColumns: Column[]) {\n if (delta === 0) return;\n\n let metas = visibleColumns.map((column) => meta.forColumn(column, ColumnResizing));\n\n let resizableMetas = metas.filter(\n (meta) => meta.isResizable && (delta < 0 ? meta.canShrink : true)\n );\n\n let columnDelta = delta / resizableMetas.length;\n\n for (let meta of resizableMetas) {\n assert('cannot resize a column that does not have a width', meta.width);\n meta.width = Math.max(meta.width + columnDelta, meta.minWidth);\n }\n}\n\n/**\n * @private\n *\n * Contains resizable and width information regarding the table as a whole\n */\nexport class TableMeta {\n constructor(private table: Table) {}\n\n @tracked scrollContainerHeight?: number;\n @tracked scrollContainerWidth?: number;\n\n get options() {\n return options.forTable(this.table, ColumnResizing);\n }\n\n get isResizable() {\n return this.options?.enabled ?? true;\n }\n\n get defaultColumnWidth() {\n if (!this.scrollContainerWidth) return;\n\n return (\n (this.scrollContainerWidth - this.totalInitialColumnWidths) /\n this.columnsWithoutInitialWidth.length\n );\n }\n\n get #availableColumns() {\n return columns.for(this.table, ColumnResizing);\n }\n\n get visibleColumnMetas() {\n return this.#availableColumns.map((column) => meta.forColumn(column, ColumnResizing));\n }\n\n get totalInitialColumnWidths() {\n return this.visibleColumnMetas.reduce((acc, meta) => (acc += meta.initialWidth ?? 0), 0);\n }\n\n get columnsWithoutInitialWidth() {\n return this.visibleColumnMetas.filter((meta) => !meta.initialWidth);\n }\n\n get totalVisibleColumnsWidth() {\n return this.visibleColumnMetas.reduce((acc, column) => (acc += column.width ?? 0), 0);\n }\n\n @action\n reset() {\n if (!this.scrollContainerWidth) return;\n\n for (let column of this.visibleColumnMetas) {\n column._width = undefined;\n }\n }\n\n @action\n onTableResize(entry: ResizeObserverEntry) {\n assert('scroll container element must be an HTMLElement', entry.target instanceof HTMLElement);\n\n this.scrollContainerWidth = getAccurateClientWidth(entry.target);\n this.scrollContainerHeight = getAccurateClientHeight(entry.target);\n\n // TODO: extract this to card-list and remove it from the plugin\n // card-list will provide its own column-resizing plugin\n // by sub-classing this one, and defining its own way of calculating the \"diff\"\n let totalGap = totalGapOf(entry.target.querySelector('[role=\"row\"]'));\n let diff = this.scrollContainerWidth - this.totalVisibleColumnsWidth - totalGap;\n\n distributeDelta(diff, this.#availableColumns);\n }\n\n @action\n resizeColumn(column: Column, delta: number) {\n if (delta === 0) return;\n\n /**\n * When the delta is negative, we are dragging to the next\n * when positive, we are dragging to the right\n * when dragging to the right, we want to grow the column\n * when dragging to the left, we grow the \"next\" column,\n * which shrinks the column we're dragging\n *\n * This assumes the resize handle for any column is on the right-hand\n * side of the column header\n *\n * If the resize handle were on the left-hand side of the column header\n * we'd want the column.next to be column.previous\n *\n * This is CSS dependent, and can be configured in plugin\n * options\n */\n let isDraggingRight = delta > 0;\n let position = this.options?.handlePosition ?? 'left';\n\n let growingColumn: Column | null | undefined;\n\n if (position === 'right') {\n growingColumn = isDraggingRight ? columns.next(column) : column;\n } else {\n growingColumn = isDraggingRight ? columns.previous(column) : column;\n }\n\n if (!growingColumn) return;\n\n let growingColumnMeta = meta.forColumn(growingColumn, ColumnResizing);\n\n assert('cannot resize a column that does not have a width', growingColumnMeta.width);\n\n let shrinkableColumns =\n delta > 0 ? columns.after(growingColumn) : columns.before(growingColumn).reverse();\n\n let shrinkableColumnsMetas = shrinkableColumns\n .map((column) => meta.forColumn(column, ColumnResizing))\n .filter((meta) => meta.canShrink);\n\n let remainder = Math.abs(delta);\n\n while (shrinkableColumnsMetas.length > 0) {\n let shrinkingColumnMeta = shrinkableColumnsMetas.shift();\n\n assert('cannot resize a column that does not have a width', shrinkingColumnMeta?.width);\n\n let actualDelta = Math.min(remainder, shrinkingColumnMeta.roomToShrink);\n\n growingColumnMeta.width += actualDelta;\n shrinkingColumnMeta.width -= actualDelta;\n remainder -= actualDelta;\n }\n }\n}\n\n/**\n * @private\n * included in the same file as the plugin due to circular dependency\n *\n * This goes on the containing element\n *\n * @example\n * ```hbs\n * <div {{resizeObserver @table}}>\n * <table>\n * ```\n */\nfunction resizeObserver(element: HTMLElement, table: Table) {\n let observer = getObserver(element, table);\n\n observer.observe(element);\n\n return () => {\n observer.unobserve(element);\n };\n}\n\nlet CACHE = new WeakMap<HTMLElement, ResizeObserver>();\n\n/**\n * This is technically \"inefficient\" as you don't want too many resize\n * observers on a page, but tables are so big, that I don't see too many use cases\n * where you'd have 10+ tables on a page\n */\nfunction getObserver(element: HTMLElement, table: Table): ResizeObserver {\n let existing = CACHE.get(element);\n\n if (existing) return existing;\n\n existing = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n for (let entry of entries) {\n meta.forTable(table, ColumnResizing).onTableResize(entry);\n }\n });\n\n return existing;\n}\n"],"names":["ColumnResizing","BasePlugin","column","ColumnMeta","table","TableMeta","element","columnMeta","meta","forColumn","setAttribute","isResizable","applyStyles","style","resizeObserver","reset","tableMeta","forTable","DEFAULT_COLUMN_OPTIONS","minWidth","constructor","options","columnOptions","filteredOptions","Object","entries","reduce","result","k","v","initialWidth","width","canShrink","roomToShrink","hasResizeHandle","previous","columns","_width","defaultColumnWidth","Math","max","value","styles","resize","delta","resizeColumn","tracked","cached","action","distributeDelta","visibleColumns","metas","map","resizableMetas","filter","columnDelta","length","assert","enabled","scrollContainerWidth","totalInitialColumnWidths","columnsWithoutInitialWidth","visibleColumnMetas","acc","totalVisibleColumnsWidth","undefined","onTableResize","entry","target","HTMLElement","getAccurateClientWidth","scrollContainerHeight","getAccurateClientHeight","totalGap","totalGapOf","querySelector","diff","isDraggingRight","position","handlePosition","growingColumn","next","growingColumnMeta","shrinkableColumns","after","before","reverse","shrinkableColumnsMetas","remainder","abs","shrinkingColumnMeta","shift","actualDelta","min","for","observer","getObserver","observe","unobserve","CACHE","WeakMap","existing","get","ResizeObserver"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"plugin.js","sources":["../../../src/plugins/column-resizing/plugin.ts"],"sourcesContent":["import { cached, tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\n\nimport { BasePlugin, columns, meta, options } from '../-private/base';\nimport { applyStyles } from '../-private/utils';\nimport { getAccurateClientHeight, getAccurateClientWidth, totalGapOf } from './utils';\n\nimport type { ColumnApi } from '[public-plugin-types]';\nimport type { Column, Table } from '[public-types]';\n\nexport interface ColumnOptions {\n /**\n * Force a starting width\n * This may not be less than the minWidth\n */\n width?: number;\n /**\n * Default: 128px\n */\n minWidth?: number;\n /**\n * Flip if the column is resizable or not.\n * The default is whatever the table's plugin option is set to\n * (and then yet again true, if not set at all)\n */\n isResizable?: boolean;\n}\n\nexport interface TableOptions {\n /**\n * Toggle whether the table is able to be resized at all\n *\n * default :true\n */\n enabled?: boolean;\n\n /**\n * By default, each column's \"handle\" position is on the\n * left-hand side of the column.\n *\n * If, for style-reasons, you want to move it to the right,\n * this option should reflect that so that the calculations can be\n * updated to match the expected behavior of which column(s) grow/shrink\n *\n * Valid values are 'left' or 'right'\n */\n handlePosition?: string;\n}\n\ninterface Signature {\n Meta: {\n Column: ColumnMeta;\n Table: TableMeta;\n };\n Options: {\n Plugin: TableOptions;\n Column: ColumnOptions;\n };\n}\n\n/**\n * One instance of a plugin exists per table\n * but a plugin can have a \"Meta\" for each column\n */\nexport class ColumnResizing extends BasePlugin<Signature> {\n name = 'column-resizing';\n static features = ['columnWidth'];\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n };\n\n headerCellModifier = (element: HTMLElement, { column }: ColumnApi) => {\n let columnMeta = meta.forColumn(column, ColumnResizing);\n\n element.setAttribute('data-test-is-resizable', `${columnMeta.isResizable}`);\n\n applyStyles(element, columnMeta.style);\n };\n\n /**\n * This is what ends up calling resize when the browesr changes\n * (assuming that the containing element's styles stretch to fill the space)\n *\n * Later, when container queries are more broadly supported, we'll want to watch\n * the container instead of the window to prevent unneeded updates (as a window can change\n * size without the container changing size)\n */\n containerModifier = resizeObserver;\n\n reset() {\n let tableMeta = meta.forTable(this.table, ColumnResizing);\n\n tableMeta.reset();\n }\n}\n\nconst DEFAULT_COLUMN_OPTIONS = {\n minWidth: 128,\n};\n\n/**\n * @private\n *\n * Contains resizable information for a particular column\n */\nexport class ColumnMeta {\n constructor(private column: Column) {}\n\n @tracked _width?: number;\n @tracked isResizing = false;\n\n get tableMeta() {\n return meta.forTable(this.column.table, ColumnResizing);\n }\n\n @cached\n get options() {\n let columnOptions = options.forColumn(this.column, ColumnResizing);\n let filteredOptions = Object.entries(columnOptions || {}).reduce((result, [k, v]) => {\n if (v) {\n result[k] = v;\n }\n\n return result;\n }, {} as Record<string, unknown>) as ColumnOptions;\n\n return {\n ...DEFAULT_COLUMN_OPTIONS,\n ...filteredOptions,\n };\n }\n\n get minWidth() {\n return this.options.minWidth;\n }\n\n get initialWidth() {\n return this.options.width;\n }\n\n get canShrink() {\n return this.width && this.width > this.minWidth;\n }\n\n get roomToShrink() {\n return this.width ? this.width - this.minWidth : 0;\n }\n\n get isResizable() {\n return this.options.isResizable ?? this.tableMeta.isResizable;\n }\n\n get hasResizeHandle() {\n let previous = columns.previous(this.column);\n\n if (!previous) return false;\n\n return this.isResizable && meta.forColumn(previous, ColumnResizing).isResizable;\n }\n\n get width() {\n let width = this._width ?? this.initialWidth;\n\n if (!width) {\n let { defaultColumnWidth } = this.tableMeta;\n\n width = defaultColumnWidth ? Math.max(defaultColumnWidth, this.minWidth) : this.minWidth;\n }\n\n return width;\n }\n\n set width(value) {\n this._width = value;\n }\n\n get style() {\n let styles: Partial<Pick<CSSStyleDeclaration, 'width' | 'minWidth'>> = {};\n\n if (this.width) styles.width = `${this.width}px`;\n if (this.minWidth) styles.minWidth = `${this.minWidth}px`;\n\n return styles;\n }\n\n @action\n resize(delta: number) {\n this.tableMeta.resizeColumn(this.column, delta);\n }\n}\n\n/**\n * @private\n *\n * individual column width must exclude:\n * - padding\n * - margin\n * - gap (partial)\n * - any other positioning offsets\n *\n * Otherwise the table will infinitely resize itself\n */\nfunction distributeDelta(delta: number, visibleColumns: Column[]) {\n if (delta === 0) return;\n\n let metas = visibleColumns.map((column) => meta.forColumn(column, ColumnResizing));\n\n let resizableMetas = metas.filter(\n (meta) => meta.isResizable && (delta < 0 ? meta.canShrink : true)\n );\n\n let columnDelta = delta / resizableMetas.length;\n\n for (let meta of resizableMetas) {\n assert('cannot resize a column that does not have a width', meta.width);\n meta.width = Math.max(meta.width + columnDelta, meta.minWidth);\n }\n}\n\n/**\n * @private\n *\n * Contains resizable and width information regarding the table as a whole\n */\nexport class TableMeta {\n constructor(private table: Table) {}\n\n @tracked scrollContainerHeight?: number;\n @tracked scrollContainerWidth?: number;\n\n get options() {\n return options.forTable(this.table, ColumnResizing);\n }\n\n get isResizable() {\n return this.options?.enabled ?? true;\n }\n\n get defaultColumnWidth() {\n if (!this.scrollContainerWidth) return;\n\n return (\n (this.scrollContainerWidth - this.totalInitialColumnWidths) /\n this.columnsWithoutInitialWidth.length\n );\n }\n\n get #availableColumns() {\n return columns.for(this.table, ColumnResizing);\n }\n\n get visibleColumnMetas() {\n return this.#availableColumns.map((column) => meta.forColumn(column, ColumnResizing));\n }\n\n get totalInitialColumnWidths() {\n return this.visibleColumnMetas.reduce((acc, meta) => (acc += meta.initialWidth ?? 0), 0);\n }\n\n get columnsWithoutInitialWidth() {\n return this.visibleColumnMetas.filter((meta) => !meta.initialWidth);\n }\n\n get totalVisibleColumnsWidth() {\n return this.visibleColumnMetas.reduce((acc, column) => (acc += column.width ?? 0), 0);\n }\n\n @action\n reset() {\n if (!this.scrollContainerWidth) return;\n\n for (let column of this.visibleColumnMetas) {\n column._width = undefined;\n }\n }\n\n @action\n onTableResize(entry: ResizeObserverEntry) {\n assert('scroll container element must be an HTMLElement', entry.target instanceof HTMLElement);\n\n this.scrollContainerWidth = getAccurateClientWidth(entry.target);\n this.scrollContainerHeight = getAccurateClientHeight(entry.target);\n\n // TODO: extract this to card-list and remove it from the plugin\n // card-list will provide its own column-resizing plugin\n // by sub-classing this one, and defining its own way of calculating the \"diff\"\n let totalGap = totalGapOf(entry.target.querySelector('[role=\"row\"]'));\n let diff = this.scrollContainerWidth - this.totalVisibleColumnsWidth - totalGap;\n\n distributeDelta(diff, this.#availableColumns);\n }\n\n @action\n resizeColumn(column: Column, delta: number) {\n if (delta === 0) return;\n\n /**\n * When the delta is negative, we are dragging to the next\n * when positive, we are dragging to the right\n * when dragging to the right, we want to grow the column\n * when dragging to the left, we grow the \"next\" column,\n * which shrinks the column we're dragging\n *\n * This assumes the resize handle for any column is on the right-hand\n * side of the column header\n *\n * If the resize handle were on the left-hand side of the column header\n * we'd want the column.next to be column.previous\n *\n * This is CSS dependent, and can be configured in plugin\n * options\n */\n let isDraggingRight = delta > 0;\n let position = this.options?.handlePosition ?? 'left';\n\n let growingColumn: Column | null | undefined;\n\n if (position === 'right') {\n growingColumn = isDraggingRight ? columns.next(column) : column;\n } else {\n growingColumn = isDraggingRight ? columns.previous(column) : column;\n }\n\n if (!growingColumn) return;\n\n let growingColumnMeta = meta.forColumn(growingColumn, ColumnResizing);\n\n assert('cannot resize a column that does not have a width', growingColumnMeta.width);\n\n let shrinkableColumns =\n delta > 0 ? columns.after(growingColumn) : columns.before(growingColumn).reverse();\n\n let shrinkableColumnsMetas = shrinkableColumns\n .map((column) => meta.forColumn(column, ColumnResizing))\n .filter((meta) => meta.canShrink);\n\n let remainder = Math.abs(delta);\n\n while (shrinkableColumnsMetas.length > 0) {\n let shrinkingColumnMeta = shrinkableColumnsMetas.shift();\n\n assert('cannot resize a column that does not have a width', shrinkingColumnMeta?.width);\n\n let actualDelta = Math.min(remainder, shrinkingColumnMeta.roomToShrink);\n\n growingColumnMeta.width += actualDelta;\n shrinkingColumnMeta.width -= actualDelta;\n remainder -= actualDelta;\n }\n }\n}\n\n/**\n * @private\n * included in the same file as the plugin due to circular dependency\n *\n * This goes on the containing element\n *\n * @example\n * ```hbs\n * <div {{resizeObserver @table}}>\n * <table>\n * ```\n */\nfunction resizeObserver(element: HTMLElement, table: Table) {\n let observer = getObserver(element, table);\n\n observer.observe(element);\n\n return () => {\n observer.unobserve(element);\n };\n}\n\nlet CACHE = new WeakMap<HTMLElement, ResizeObserver>();\n\n/**\n * This is technically \"inefficient\" as you don't want too many resize\n * observers on a page, but tables are so big, that I don't see too many use cases\n * where you'd have 10+ tables on a page\n */\nfunction getObserver(element: HTMLElement, table: Table): ResizeObserver {\n let existing = CACHE.get(element);\n\n if (existing) return existing;\n\n existing = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n for (let entry of entries) {\n meta.forTable(table, ColumnResizing).onTableResize(entry);\n }\n });\n\n return existing;\n}\n"],"names":["ColumnResizing","BasePlugin","column","ColumnMeta","table","TableMeta","element","columnMeta","meta","forColumn","setAttribute","isResizable","applyStyles","style","resizeObserver","reset","tableMeta","forTable","DEFAULT_COLUMN_OPTIONS","minWidth","constructor","options","columnOptions","filteredOptions","Object","entries","reduce","result","k","v","initialWidth","width","canShrink","roomToShrink","hasResizeHandle","previous","columns","_width","defaultColumnWidth","Math","max","value","styles","resize","delta","resizeColumn","tracked","cached","action","distributeDelta","visibleColumns","metas","map","resizableMetas","filter","columnDelta","length","assert","enabled","scrollContainerWidth","totalInitialColumnWidths","columnsWithoutInitialWidth","visibleColumnMetas","acc","totalVisibleColumnsWidth","undefined","onTableResize","entry","target","HTMLElement","getAccurateClientWidth","scrollContainerHeight","getAccurateClientHeight","totalGap","totalGapOf","querySelector","diff","isDraggingRight","position","handlePosition","growingColumn","next","growingColumnMeta","shrinkableColumns","after","before","reverse","shrinkableColumnsMetas","remainder","abs","shrinkingColumnMeta","shift","actualDelta","min","for","observer","getObserver","observe","unobserve","CACHE","WeakMap","existing","get","ResizeObserver"],"mappings":"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"}
|
@@ -12,7 +12,6 @@ import { isDestroyed, isDestroying } from '@ember/destroyable';
|
|
12
12
|
* <table>
|
13
13
|
* ```
|
14
14
|
*/
|
15
|
-
|
16
15
|
function resizeObserver(element, table) {
|
17
16
|
let observer = getObserver(element, table);
|
18
17
|
observer.observe(element);
|
@@ -21,12 +20,12 @@ function resizeObserver(element, table) {
|
|
21
20
|
};
|
22
21
|
}
|
23
22
|
let CACHE = new WeakMap();
|
23
|
+
|
24
24
|
/**
|
25
25
|
* This is technically "inefficient" as you don't want too many resize
|
26
26
|
* observers on a page, but tables are so big, that I don't see too many use cases
|
27
27
|
* where you'd have 10+ tables on a page
|
28
28
|
*/
|
29
|
-
|
30
29
|
function getObserver(element, table) {
|
31
30
|
let existing = CACHE.get(element);
|
32
31
|
if (existing) return existing;
|
@@ -34,7 +33,6 @@ function getObserver(element, table) {
|
|
34
33
|
if (isDestroyed(table) || isDestroying(table)) {
|
35
34
|
return;
|
36
35
|
}
|
37
|
-
|
38
36
|
for (let entry of entries) {
|
39
37
|
table.handleScrollContainerResize(entry);
|
40
38
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resize-observer.js","sources":["../../../src/plugins/column-resizing/resize-observer.ts"],"sourcesContent":["import { isDestroyed, isDestroying } from '@ember/destroyable';\n\n/**\n * @private\n * included in the same file as the plugin due to circular dependency\n *\n * This goes on the containing element\n *\n * @example\n * ```hbs\n * <div {{resizeObserver @table}}>\n * <table>\n * ```\n */\nexport function resizeObserver(element: HTMLElement, table: any) {\n let observer = getObserver(element, table);\n\n observer.observe(element);\n\n return () => {\n observer.unobserve(element);\n };\n}\n\nlet CACHE = new WeakMap<HTMLElement, ResizeObserver>();\n\n/**\n * This is technically \"inefficient\" as you don't want too many resize\n * observers on a page, but tables are so big, that I don't see too many use cases\n * where you'd have 10+ tables on a page\n */\nfunction getObserver(element: HTMLElement, table: any): ResizeObserver {\n let existing = CACHE.get(element);\n\n if (existing) return existing;\n\n existing = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n if (isDestroyed(table) || isDestroying(table)) {\n return;\n }\n\n for (let entry of entries) {\n table.handleScrollContainerResize(entry);\n }\n });\n\n return existing;\n}\n"],"names":["resizeObserver","element","table","observer","getObserver","observe","unobserve","CACHE","WeakMap","existing","get","ResizeObserver","entries","isDestroyed","isDestroying","entry","handleScrollContainerResize"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
|
1
|
+
{"version":3,"file":"resize-observer.js","sources":["../../../src/plugins/column-resizing/resize-observer.ts"],"sourcesContent":["import { isDestroyed, isDestroying } from '@ember/destroyable';\n\n/**\n * @private\n * included in the same file as the plugin due to circular dependency\n *\n * This goes on the containing element\n *\n * @example\n * ```hbs\n * <div {{resizeObserver @table}}>\n * <table>\n * ```\n */\nexport function resizeObserver(element: HTMLElement, table: any) {\n let observer = getObserver(element, table);\n\n observer.observe(element);\n\n return () => {\n observer.unobserve(element);\n };\n}\n\nlet CACHE = new WeakMap<HTMLElement, ResizeObserver>();\n\n/**\n * This is technically \"inefficient\" as you don't want too many resize\n * observers on a page, but tables are so big, that I don't see too many use cases\n * where you'd have 10+ tables on a page\n */\nfunction getObserver(element: HTMLElement, table: any): ResizeObserver {\n let existing = CACHE.get(element);\n\n if (existing) return existing;\n\n existing = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n if (isDestroyed(table) || isDestroying(table)) {\n return;\n }\n\n for (let entry of entries) {\n table.handleScrollContainerResize(entry);\n }\n });\n\n return existing;\n}\n"],"names":["resizeObserver","element","table","observer","getObserver","observe","unobserve","CACHE","WeakMap","existing","get","ResizeObserver","entries","isDestroyed","isDestroying","entry","handleScrollContainerResize"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,cAAc,CAACC,OAAoB,EAAEC,KAAU,EAAE;AAC/D,EAAA,IAAIC,QAAQ,GAAGC,WAAW,CAACH,OAAO,EAAEC,KAAK,CAAC,CAAA;AAE1CC,EAAAA,QAAQ,CAACE,OAAO,CAACJ,OAAO,CAAC,CAAA;AAEzB,EAAA,OAAO,MAAM;AACXE,IAAAA,QAAQ,CAACG,SAAS,CAACL,OAAO,CAAC,CAAA;GAC5B,CAAA;AACH,CAAA;AAEA,IAAIM,KAAK,GAAG,IAAIC,OAAO,EAA+B,CAAA;;AAEtD;AACA;AACA;AACA;AACA;AACA,SAASJ,WAAW,CAACH,OAAoB,EAAEC,KAAU,EAAkB;AACrE,EAAA,IAAIO,QAAQ,GAAGF,KAAK,CAACG,GAAG,CAACT,OAAO,CAAC,CAAA;EAEjC,IAAIQ,QAAQ,EAAE,OAAOA,QAAQ,CAAA;AAE7BA,EAAAA,QAAQ,GAAG,IAAIE,cAAc,CAAEC,OAA8B,IAAK;IAChE,IAAIC,WAAW,CAACX,KAAK,CAAC,IAAIY,YAAY,CAACZ,KAAK,CAAC,EAAE;AAC7C,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,KAAK,IAAIa,KAAK,IAAIH,OAAO,EAAE;AACzBV,MAAAA,KAAK,CAACc,2BAA2B,CAACD,KAAK,CAAC,CAAA;AAC1C,KAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,OAAON,QAAQ,CAAA;AACjB;;;;"}
|
@@ -28,13 +28,11 @@ const totalGapOf = element => {
|
|
28
28
|
let gapSize = parseFloat(style.columnGap);
|
29
29
|
let cells = element.querySelectorAll('[role="cell"], [role="columnheader"]');
|
30
30
|
let totalCellPadding = 0;
|
31
|
-
|
32
31
|
for (let cell of cells) {
|
33
32
|
let style = getComputedStyle(cell);
|
34
33
|
let padding = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
|
35
34
|
totalCellPadding += padding;
|
36
35
|
}
|
37
|
-
|
38
36
|
return gapSize * (element.children.length - 1) + totalCellPadding;
|
39
37
|
};
|
40
38
|
const getAccurateClientHeight = element => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../src/plugins/column-resizing/utils.ts"],"sourcesContent":["/**\n We want to make sure we get the clientWidth rather than the\n offsetWidth so that the width of the scrollbar is not included when we're\n resizing the columns in the table so that they fit within the scroll\n container\n\n Ideally we would just use `entry.contentRect.width`, which we can access\n without triggering any reflows. Unfortunately there are differences in the\n way that this works in Chrome vs Firefox. In Chrome, the\n `entry.contentRect.width` works the same as `entry.target.clientWidth`,\n which does not include the width that is taken up by the vertical scrollbar\n if the element overflows. In Firefox the `entry.contentRect.width` is the\n same as `entry.target.offsetWidth`, which does include the width taken up by\n the scrollbar.\n\n We use `getBoundingClientRect()` because it does not round the value to an\n integer, which can sometimes cause subpixel gaps.\n**/\nexport const getAccurateClientWidth = (element: HTMLElement) => {\n let style = getComputedStyle(element);\n let padding = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n let scrollbarWidth = element.offsetWidth - element.clientWidth;\n\n return element.getBoundingClientRect().width - padding - scrollbarWidth;\n};\n\nexport const totalGapOf = (element?: Element | null) => {\n if (!element) return 0;\n\n let style = getComputedStyle(element);\n let gapSize = parseFloat(style.columnGap);\n let cells = element.querySelectorAll('[role=\"cell\"], [role=\"columnheader\"]');\n\n let totalCellPadding = 0;\n\n for (let cell of cells) {\n let style = getComputedStyle(cell);\n let padding = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n\n totalCellPadding += padding;\n }\n\n return gapSize * (element.children.length - 1) + totalCellPadding;\n};\n\nexport const getAccurateClientHeight = (element: HTMLElement) => {\n let scrollbarHeight = element.offsetHeight - element.clientHeight;\n\n return element.getBoundingClientRect().height - scrollbarHeight;\n};\n"],"names":["getAccurateClientWidth","element","style","getComputedStyle","padding","parseFloat","paddingLeft","paddingRight","scrollbarWidth","offsetWidth","clientWidth","getBoundingClientRect","width","totalGapOf","gapSize","columnGap","cells","querySelectorAll","totalCellPadding","cell","children","length","getAccurateClientHeight","scrollbarHeight","offsetHeight","clientHeight","height"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACaA,MAAAA,sBAAsB,GAAIC,
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/plugins/column-resizing/utils.ts"],"sourcesContent":["/**\n We want to make sure we get the clientWidth rather than the\n offsetWidth so that the width of the scrollbar is not included when we're\n resizing the columns in the table so that they fit within the scroll\n container\n\n Ideally we would just use `entry.contentRect.width`, which we can access\n without triggering any reflows. Unfortunately there are differences in the\n way that this works in Chrome vs Firefox. In Chrome, the\n `entry.contentRect.width` works the same as `entry.target.clientWidth`,\n which does not include the width that is taken up by the vertical scrollbar\n if the element overflows. In Firefox the `entry.contentRect.width` is the\n same as `entry.target.offsetWidth`, which does include the width taken up by\n the scrollbar.\n\n We use `getBoundingClientRect()` because it does not round the value to an\n integer, which can sometimes cause subpixel gaps.\n**/\nexport const getAccurateClientWidth = (element: HTMLElement) => {\n let style = getComputedStyle(element);\n let padding = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n let scrollbarWidth = element.offsetWidth - element.clientWidth;\n\n return element.getBoundingClientRect().width - padding - scrollbarWidth;\n};\n\nexport const totalGapOf = (element?: Element | null) => {\n if (!element) return 0;\n\n let style = getComputedStyle(element);\n let gapSize = parseFloat(style.columnGap);\n let cells = element.querySelectorAll('[role=\"cell\"], [role=\"columnheader\"]');\n\n let totalCellPadding = 0;\n\n for (let cell of cells) {\n let style = getComputedStyle(cell);\n let padding = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n\n totalCellPadding += padding;\n }\n\n return gapSize * (element.children.length - 1) + totalCellPadding;\n};\n\nexport const getAccurateClientHeight = (element: HTMLElement) => {\n let scrollbarHeight = element.offsetHeight - element.clientHeight;\n\n return element.getBoundingClientRect().height - scrollbarHeight;\n};\n"],"names":["getAccurateClientWidth","element","style","getComputedStyle","padding","parseFloat","paddingLeft","paddingRight","scrollbarWidth","offsetWidth","clientWidth","getBoundingClientRect","width","totalGapOf","gapSize","columnGap","cells","querySelectorAll","totalCellPadding","cell","children","length","getAccurateClientHeight","scrollbarHeight","offsetHeight","clientHeight","height"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACaA,MAAAA,sBAAsB,GAAIC,OAAoB,IAAK;AAC9D,EAAA,IAAIC,KAAK,GAAGC,gBAAgB,CAACF,OAAO,CAAC,CAAA;AACrC,EAAA,IAAIG,OAAO,GAAGC,UAAU,CAACH,KAAK,CAACI,WAAW,CAAC,GAAGD,UAAU,CAACH,KAAK,CAACK,YAAY,CAAC,CAAA;EAC5E,IAAIC,cAAc,GAAGP,OAAO,CAACQ,WAAW,GAAGR,OAAO,CAACS,WAAW,CAAA;EAE9D,OAAOT,OAAO,CAACU,qBAAqB,EAAE,CAACC,KAAK,GAAGR,OAAO,GAAGI,cAAc,CAAA;AACzE,EAAC;AAEYK,MAAAA,UAAU,GAAIZ,OAAwB,IAAK;AACtD,EAAA,IAAI,CAACA,OAAO,EAAE,OAAO,CAAC,CAAA;AAEtB,EAAA,IAAIC,KAAK,GAAGC,gBAAgB,CAACF,OAAO,CAAC,CAAA;AACrC,EAAA,IAAIa,OAAO,GAAGT,UAAU,CAACH,KAAK,CAACa,SAAS,CAAC,CAAA;AACzC,EAAA,IAAIC,KAAK,GAAGf,OAAO,CAACgB,gBAAgB,CAAC,sCAAsC,CAAC,CAAA;EAE5E,IAAIC,gBAAgB,GAAG,CAAC,CAAA;AAExB,EAAA,KAAK,IAAIC,IAAI,IAAIH,KAAK,EAAE;AACtB,IAAA,IAAId,KAAK,GAAGC,gBAAgB,CAACgB,IAAI,CAAC,CAAA;AAClC,IAAA,IAAIf,OAAO,GAAGC,UAAU,CAACH,KAAK,CAACI,WAAW,CAAC,GAAGD,UAAU,CAACH,KAAK,CAACK,YAAY,CAAC,CAAA;AAE5EW,IAAAA,gBAAgB,IAAId,OAAO,CAAA;AAC7B,GAAA;EAEA,OAAOU,OAAO,IAAIb,OAAO,CAACmB,QAAQ,CAACC,MAAM,GAAG,CAAC,CAAC,GAAGH,gBAAgB,CAAA;AACnE,EAAC;AAEYI,MAAAA,uBAAuB,GAAIrB,OAAoB,IAAK;EAC/D,IAAIsB,eAAe,GAAGtB,OAAO,CAACuB,YAAY,GAAGvB,OAAO,CAACwB,YAAY,CAAA;AAEjE,EAAA,OAAOxB,OAAO,CAACU,qBAAqB,EAAE,CAACe,MAAM,GAAGH,eAAe,CAAA;AACjE;;;;"}
|
@@ -5,20 +5,20 @@ import { ColumnVisibility } from './plugin.js';
|
|
5
5
|
* Hide a column
|
6
6
|
*/
|
7
7
|
const hide = column => meta.forColumn(column, ColumnVisibility).hide();
|
8
|
+
|
8
9
|
/**
|
9
10
|
* Show a column
|
10
11
|
*/
|
11
|
-
|
12
12
|
const show = column => meta.forColumn(column, ColumnVisibility).show();
|
13
|
+
|
13
14
|
/**
|
14
15
|
* Ask if a column is presently supposed to be visible
|
15
16
|
*/
|
16
|
-
|
17
17
|
const isVisible = column => meta.forColumn(column, ColumnVisibility).isVisible;
|
18
|
+
|
18
19
|
/**
|
19
20
|
* Ask if a column is presently supposed to be hidden
|
20
21
|
*/
|
21
|
-
|
22
22
|
const isHidden = column => meta.forColumn(column, ColumnVisibility).isHidden;
|
23
23
|
|
24
24
|
export { hide, isHidden, isVisible, show };
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../src/plugins/column-visibility/helpers.ts"],"sourcesContent":["import { meta } from '../-private/base';\nimport { ColumnVisibility } from './plugin';\n\nimport type { Column } from '[public-types]';\n\n/**\n * Hide a column\n */\nexport const hide = (column: Column) => meta.forColumn(column, ColumnVisibility).hide();\n\n/**\n * Show a column\n */\nexport const show = (column: Column) => meta.forColumn(column, ColumnVisibility).show();\n\n/**\n * Ask if a column is presently supposed to be visible\n */\nexport const isVisible = (column: Column) => meta.forColumn(column, ColumnVisibility).isVisible;\n\n/**\n * Ask if a column is presently supposed to be hidden\n */\nexport const isHidden = (column: Column) => meta.forColumn(column, ColumnVisibility).isHidden;\n"],"names":["hide","column","meta","forColumn","ColumnVisibility","show","isVisible","isHidden"],"mappings":";;;AAKA;AACA;AACA;AACaA,MAAAA,IAAI,GAAIC,
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../src/plugins/column-visibility/helpers.ts"],"sourcesContent":["import { meta } from '../-private/base';\nimport { ColumnVisibility } from './plugin';\n\nimport type { Column } from '[public-types]';\n\n/**\n * Hide a column\n */\nexport const hide = (column: Column) => meta.forColumn(column, ColumnVisibility).hide();\n\n/**\n * Show a column\n */\nexport const show = (column: Column) => meta.forColumn(column, ColumnVisibility).show();\n\n/**\n * Ask if a column is presently supposed to be visible\n */\nexport const isVisible = (column: Column) => meta.forColumn(column, ColumnVisibility).isVisible;\n\n/**\n * Ask if a column is presently supposed to be hidden\n */\nexport const isHidden = (column: Column) => meta.forColumn(column, ColumnVisibility).isHidden;\n"],"names":["hide","column","meta","forColumn","ColumnVisibility","show","isVisible","isHidden"],"mappings":";;;AAKA;AACA;AACA;AACaA,MAAAA,IAAI,GAAIC,MAAc,IAAKC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACJ,IAAI,GAAE;;AAEvF;AACA;AACA;AACaK,MAAAA,IAAI,GAAIJ,MAAc,IAAKC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACC,IAAI,GAAE;;AAEvF;AACA;AACA;AACaC,MAAAA,SAAS,GAAIL,MAAc,IAAKC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACE,UAAS;;AAE/F;AACA;AACA;AACaC,MAAAA,QAAQ,GAAIN,MAAc,IAAKC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACG;;;;"}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import { _ as _applyDecoratedDescriptor } from '../../applyDecoratedDescriptor-
|
2
|
-
import { _ as _defineProperty } from '../../defineProperty-
|
1
|
+
import { _ as _applyDecoratedDescriptor } from '../../applyDecoratedDescriptor-6b986a67.js';
|
2
|
+
import { _ as _defineProperty } from '../../defineProperty-35ce617b.js';
|
3
3
|
import { macroCondition, dependencySatisfies, importSync } from '@embroider/macros';
|
4
4
|
import '@glimmer/tracking';
|
5
5
|
import { action } from '@ember/object';
|
@@ -10,15 +10,12 @@ let cached = macroCondition(dependencySatisfies('ember-source', '>= 4.1.0-alpha.
|
|
10
10
|
class ColumnVisibility extends BasePlugin {
|
11
11
|
constructor(...args) {
|
12
12
|
super(...args);
|
13
|
-
|
14
13
|
_defineProperty(this, "name", 'column-visibility');
|
15
|
-
|
16
14
|
_defineProperty(this, "meta", {
|
17
15
|
column: ColumnMeta,
|
18
16
|
table: TableMeta
|
19
17
|
});
|
20
18
|
}
|
21
|
-
|
22
19
|
reset() {
|
23
20
|
/**
|
24
21
|
* Global preference, not scoped to plugin
|
@@ -26,21 +23,16 @@ class ColumnVisibility extends BasePlugin {
|
|
26
23
|
for (let column of this.table.columns) {
|
27
24
|
let defaultValue = options.forColumn(column, ColumnVisibility)?.isVisible;
|
28
25
|
let current = meta.forColumn(column, ColumnVisibility).isVisible;
|
29
|
-
|
30
26
|
if (defaultValue !== current) {
|
31
27
|
preferences.forColumn(column, ColumnVisibility).delete('isVisible');
|
32
28
|
}
|
33
29
|
}
|
34
30
|
}
|
35
|
-
|
36
31
|
get columns() {
|
37
32
|
return meta.forTable(this.table, ColumnVisibility).visibleColumns;
|
38
33
|
}
|
39
|
-
|
40
34
|
}
|
41
|
-
|
42
35
|
_defineProperty(ColumnVisibility, "features", ['columnVisibility']);
|
43
|
-
|
44
36
|
class ColumnMeta {
|
45
37
|
constructor(column) {
|
46
38
|
_defineProperty(this, "hide", () => {
|
@@ -49,62 +41,52 @@ class ColumnMeta {
|
|
49
41
|
let myOptions = options.forColumn(this.column, ColumnVisibility);
|
50
42
|
let currentSaved = myPreferences.get('isVisible');
|
51
43
|
let willBeDefault = Boolean(currentSaved) === !myOptions?.isVisible;
|
52
|
-
|
53
44
|
if (willBeDefault) {
|
54
|
-
myPreferences.set('isVisible', false);
|
45
|
+
myPreferences.set('isVisible', false);
|
46
|
+
// TODO: open an issue about tracked-built-ins' delete not being reactive
|
55
47
|
// myPreferences.delete('isVisible');
|
56
48
|
|
57
49
|
return;
|
58
50
|
}
|
59
|
-
|
60
51
|
myPreferences.set('isVisible', false);
|
61
52
|
});
|
62
|
-
|
63
53
|
_defineProperty(this, "show", () => {
|
64
54
|
if (this.isVisible) return;
|
65
55
|
let myPreferences = preferences.forColumn(this.column, ColumnVisibility);
|
66
56
|
let myOptions = options.forColumn(this.column, ColumnVisibility);
|
67
57
|
let currentSaved = myPreferences.get('isVisible');
|
68
58
|
let willBeDefault = currentSaved === !myOptions?.isVisible;
|
69
|
-
|
70
59
|
if (willBeDefault) {
|
71
|
-
myPreferences.set('isVisible', true);
|
60
|
+
myPreferences.set('isVisible', true);
|
61
|
+
// TODO: open an issue about tracked-built-ins' delete not being reactive
|
72
62
|
// myPreferences.delete('isVisible');
|
73
63
|
|
74
64
|
return;
|
75
65
|
}
|
76
|
-
|
77
66
|
myPreferences.set('isVisible', true);
|
78
67
|
});
|
79
|
-
|
80
68
|
_defineProperty(this, "toggle", () => {
|
81
69
|
if (this.isVisible) {
|
82
70
|
this.hide();
|
83
71
|
return;
|
84
72
|
}
|
85
|
-
|
86
73
|
this.show();
|
87
74
|
});
|
88
|
-
|
89
75
|
this.column = column;
|
90
76
|
}
|
91
|
-
|
92
77
|
get isVisible() {
|
93
78
|
let columnPreferences = preferences.forColumn(this.column, ColumnVisibility);
|
94
79
|
let columnOptions = options.forColumn(this.column, ColumnVisibility);
|
95
80
|
return Boolean(columnPreferences.get('isVisible') ?? columnOptions?.isVisible ?? true);
|
96
81
|
}
|
97
|
-
|
98
82
|
get isHidden() {
|
99
83
|
return !this.isVisible;
|
100
84
|
}
|
101
|
-
|
102
85
|
}
|
103
86
|
let TableMeta = (_class = class TableMeta {
|
104
87
|
constructor(table) {
|
105
88
|
this.table = table;
|
106
89
|
}
|
107
|
-
|
108
90
|
get visibleColumns() {
|
109
91
|
let allColumns = this.table.columns.values();
|
110
92
|
return allColumns.filter(column => {
|
@@ -112,12 +94,10 @@ let TableMeta = (_class = class TableMeta {
|
|
112
94
|
return columnMeta.isVisible;
|
113
95
|
});
|
114
96
|
}
|
115
|
-
|
116
97
|
toggleColumnVisibility(column) {
|
117
98
|
let columnMeta = meta.forColumn(column, ColumnVisibility);
|
118
99
|
columnMeta.toggle();
|
119
100
|
}
|
120
|
-
|
121
101
|
}, (_applyDecoratedDescriptor(_class.prototype, "visibleColumns", [cached], Object.getOwnPropertyDescriptor(_class.prototype, "visibleColumns"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "toggleColumnVisibility", [action], Object.getOwnPropertyDescriptor(_class.prototype, "toggleColumnVisibility"), _class.prototype)), _class);
|
122
102
|
|
123
103
|
export { ColumnMeta, ColumnVisibility, TableMeta };
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["../../../src/plugins/column-visibility/plugin.ts"],"sourcesContent":["import { cached } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nimport { BasePlugin, meta, options, preferences } from '../-private/base';\n\nimport type { Plugin, PluginPreferences } from '[public-plugin-types]';\nimport type { Column, Table } from '[public-types]';\n\ninterface ColumnVisibilityPreferences extends PluginPreferences {\n columns: {\n [columnKey: string]: {\n isVisible?: boolean;\n };\n };\n}\n\ndeclare module 'ember-headless-table/plugins' {\n interface Registry {\n ColumnVisibility?: ColumnVisibilityPreferences;\n }\n}\n\nexport interface Signature {\n Meta: {\n Table: TableMeta;\n Column: ColumnMeta;\n };\n Options: {\n Plugin: {\n enabled?: boolean;\n };\n Column: {\n /**\n * The default visibilty of the column, when rendered.\n * The column can still be toggled on and off.\n *\n * When interacting with preferences, the value stored in preferenced\n * will be the inverse of this value (to save space in storage).\n */\n isVisible?: boolean;\n };\n };\n}\n\nexport class ColumnVisibility extends BasePlugin<Signature> implements Plugin<Signature> {\n name = 'column-visibility';\n static features = ['columnVisibility'];\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n };\n\n reset() {\n /**\n * Global preference, not scoped to plugin\n */\n for (let column of this.table.columns) {\n let defaultValue = options.forColumn(column, ColumnVisibility)?.isVisible;\n let current = meta.forColumn(column, ColumnVisibility).isVisible;\n\n if (defaultValue !== current) {\n preferences.forColumn(column, ColumnVisibility).delete('isVisible');\n }\n }\n }\n\n get columns() {\n return meta.forTable(this.table, ColumnVisibility).visibleColumns;\n }\n}\n\nexport class ColumnMeta<Data = unknown> {\n constructor(private column: Column<Data>) {}\n\n get isVisible(): boolean {\n let columnPreferences = preferences.forColumn(this.column, ColumnVisibility);\n let columnOptions = options.forColumn(this.column, ColumnVisibility);\n\n return Boolean(columnPreferences.get('isVisible') ?? columnOptions?.isVisible ?? true);\n }\n\n get isHidden(): boolean {\n return !this.isVisible;\n }\n\n hide = () => {\n if (!this.isVisible) return;\n\n let myPreferences = preferences.forColumn(this.column, ColumnVisibility);\n let myOptions = options.forColumn(this.column, ColumnVisibility);\n let currentSaved = myPreferences.get('isVisible');\n let willBeDefault = Boolean(currentSaved) === !myOptions?.isVisible;\n\n if (willBeDefault) {\n myPreferences.set('isVisible', false);\n // TODO: open an issue about tracked-built-ins' delete not being reactive\n // myPreferences.delete('isVisible');\n\n return;\n }\n\n myPreferences.set('isVisible', false);\n };\n\n show = () => {\n if (this.isVisible) return;\n\n let myPreferences = preferences.forColumn(this.column, ColumnVisibility);\n let myOptions = options.forColumn(this.column, ColumnVisibility);\n let currentSaved = myPreferences.get('isVisible');\n let willBeDefault = currentSaved === !myOptions?.isVisible;\n\n if (willBeDefault) {\n myPreferences.set('isVisible', true);\n // TODO: open an issue about tracked-built-ins' delete not being reactive\n // myPreferences.delete('isVisible');\n\n return;\n }\n\n myPreferences.set('isVisible', true);\n };\n\n toggle = () => {\n if (this.isVisible) {\n this.hide();\n\n return;\n }\n\n this.show();\n };\n}\n\nexport class TableMeta<Data = unknown> {\n constructor(private table: Table<Data>) {}\n\n @cached\n get visibleColumns(): Column<Data>[] {\n let allColumns = this.table.columns.values();\n\n return allColumns.filter((column) => {\n let columnMeta = meta.forColumn(column, ColumnVisibility);\n\n return columnMeta.isVisible;\n });\n }\n\n @action\n toggleColumnVisibility(column: Column<Data>) {\n let columnMeta = meta.forColumn(column, ColumnVisibility);\n\n columnMeta.toggle();\n }\n}\n"],"names":["ColumnVisibility","BasePlugin","column","ColumnMeta","table","TableMeta","reset","columns","defaultValue","options","forColumn","isVisible","current","meta","preferences","delete","forTable","visibleColumns","constructor","myPreferences","myOptions","currentSaved","get","willBeDefault","Boolean","set","hide","show","columnPreferences","columnOptions","isHidden","allColumns","values","filter","columnMeta","toggleColumnVisibility","toggle","cached","action"],"mappings":"
|
1
|
+
{"version":3,"file":"plugin.js","sources":["../../../src/plugins/column-visibility/plugin.ts"],"sourcesContent":["import { cached } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nimport { BasePlugin, meta, options, preferences } from '../-private/base';\n\nimport type { Plugin, PluginPreferences } from '[public-plugin-types]';\nimport type { Column, Table } from '[public-types]';\n\ninterface ColumnVisibilityPreferences extends PluginPreferences {\n columns: {\n [columnKey: string]: {\n isVisible?: boolean;\n };\n };\n}\n\ndeclare module 'ember-headless-table/plugins' {\n interface Registry {\n ColumnVisibility?: ColumnVisibilityPreferences;\n }\n}\n\nexport interface Signature {\n Meta: {\n Table: TableMeta;\n Column: ColumnMeta;\n };\n Options: {\n Plugin: {\n enabled?: boolean;\n };\n Column: {\n /**\n * The default visibilty of the column, when rendered.\n * The column can still be toggled on and off.\n *\n * When interacting with preferences, the value stored in preferenced\n * will be the inverse of this value (to save space in storage).\n */\n isVisible?: boolean;\n };\n };\n}\n\nexport class ColumnVisibility extends BasePlugin<Signature> implements Plugin<Signature> {\n name = 'column-visibility';\n static features = ['columnVisibility'];\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n };\n\n reset() {\n /**\n * Global preference, not scoped to plugin\n */\n for (let column of this.table.columns) {\n let defaultValue = options.forColumn(column, ColumnVisibility)?.isVisible;\n let current = meta.forColumn(column, ColumnVisibility).isVisible;\n\n if (defaultValue !== current) {\n preferences.forColumn(column, ColumnVisibility).delete('isVisible');\n }\n }\n }\n\n get columns() {\n return meta.forTable(this.table, ColumnVisibility).visibleColumns;\n }\n}\n\nexport class ColumnMeta<Data = unknown> {\n constructor(private column: Column<Data>) {}\n\n get isVisible(): boolean {\n let columnPreferences = preferences.forColumn(this.column, ColumnVisibility);\n let columnOptions = options.forColumn(this.column, ColumnVisibility);\n\n return Boolean(columnPreferences.get('isVisible') ?? columnOptions?.isVisible ?? true);\n }\n\n get isHidden(): boolean {\n return !this.isVisible;\n }\n\n hide = () => {\n if (!this.isVisible) return;\n\n let myPreferences = preferences.forColumn(this.column, ColumnVisibility);\n let myOptions = options.forColumn(this.column, ColumnVisibility);\n let currentSaved = myPreferences.get('isVisible');\n let willBeDefault = Boolean(currentSaved) === !myOptions?.isVisible;\n\n if (willBeDefault) {\n myPreferences.set('isVisible', false);\n // TODO: open an issue about tracked-built-ins' delete not being reactive\n // myPreferences.delete('isVisible');\n\n return;\n }\n\n myPreferences.set('isVisible', false);\n };\n\n show = () => {\n if (this.isVisible) return;\n\n let myPreferences = preferences.forColumn(this.column, ColumnVisibility);\n let myOptions = options.forColumn(this.column, ColumnVisibility);\n let currentSaved = myPreferences.get('isVisible');\n let willBeDefault = currentSaved === !myOptions?.isVisible;\n\n if (willBeDefault) {\n myPreferences.set('isVisible', true);\n // TODO: open an issue about tracked-built-ins' delete not being reactive\n // myPreferences.delete('isVisible');\n\n return;\n }\n\n myPreferences.set('isVisible', true);\n };\n\n toggle = () => {\n if (this.isVisible) {\n this.hide();\n\n return;\n }\n\n this.show();\n };\n}\n\nexport class TableMeta<Data = unknown> {\n constructor(private table: Table<Data>) {}\n\n @cached\n get visibleColumns(): Column<Data>[] {\n let allColumns = this.table.columns.values();\n\n return allColumns.filter((column) => {\n let columnMeta = meta.forColumn(column, ColumnVisibility);\n\n return columnMeta.isVisible;\n });\n }\n\n @action\n toggleColumnVisibility(column: Column<Data>) {\n let columnMeta = meta.forColumn(column, ColumnVisibility);\n\n columnMeta.toggle();\n }\n}\n"],"names":["ColumnVisibility","BasePlugin","column","ColumnMeta","table","TableMeta","reset","columns","defaultValue","options","forColumn","isVisible","current","meta","preferences","delete","forTable","visibleColumns","constructor","myPreferences","myOptions","currentSaved","get","willBeDefault","Boolean","set","hide","show","columnPreferences","columnOptions","isHidden","allColumns","values","filter","columnMeta","toggleColumnVisibility","toggle","cached","action"],"mappings":";;;;;;;;AAA2C,IAAA,MAAA,GAAA,cAAA,CAAA,mBAAA,CAAA,cAAA,EAAA,kBAAA,CAAA,CAAA,GAAA,UAAA,CAAA,mBAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,iCAAA,CAAA,CAAA,MAAA,CAAA;AA4CpC,MAAMA,gBAAgB,SAASC,UAAU,CAAyC;AAAA,EAAA,WAAA,CAAA,GAAA,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAChF,mBAAmB,CAAA,CAAA;IAAA,eAGnB,CAAA,IAAA,EAAA,MAAA,EAAA;AACLC,MAAAA,MAAM,EAAEC,UAAU;AAClBC,MAAAA,KAAK,EAAEC,SAAAA;KACR,CAAA,CAAA;AAAA,GAAA;AAEDC,EAAAA,KAAK,GAAG;AACN;AACJ;AACA;IACI,KAAK,IAAIJ,MAAM,IAAI,IAAI,CAACE,KAAK,CAACG,OAAO,EAAE;MACrC,IAAIC,YAAY,GAAGC,OAAO,CAACC,SAAS,CAACR,MAAM,EAAEF,gBAAgB,CAAC,EAAEW,SAAS,CAAA;MACzE,IAAIC,OAAO,GAAGC,IAAI,CAACH,SAAS,CAACR,MAAM,EAAEF,gBAAgB,CAAC,CAACW,SAAS,CAAA;MAEhE,IAAIH,YAAY,KAAKI,OAAO,EAAE;QAC5BE,WAAW,CAACJ,SAAS,CAACR,MAAM,EAAEF,gBAAgB,CAAC,CAACe,MAAM,CAAC,WAAW,CAAC,CAAA;AACrE,OAAA;AACF,KAAA;AACF,GAAA;AAEA,EAAA,IAAIR,OAAO,GAAG;IACZ,OAAOM,IAAI,CAACG,QAAQ,CAAC,IAAI,CAACZ,KAAK,EAAEJ,gBAAgB,CAAC,CAACiB,cAAc,CAAA;AACnE,GAAA;AACF,CAAA;AAAC,eAAA,CA1BYjB,gBAAgB,EAAA,UAAA,EAET,CAAC,kBAAkB,CAAC,CAAA,CAAA;AA0BjC,MAAMG,UAAU,CAAiB;EACtCe,WAAW,CAAShB,MAAoB,EAAE;AAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAanC,MAAM;AACX,MAAA,IAAI,CAAC,IAAI,CAACS,SAAS,EAAE,OAAA;MAErB,IAAIQ,aAAa,GAAGL,WAAW,CAACJ,SAAS,CAAC,IAAI,CAACR,MAAM,EAAEF,gBAAgB,CAAC,CAAA;MACxE,IAAIoB,SAAS,GAAGX,OAAO,CAACC,SAAS,CAAC,IAAI,CAACR,MAAM,EAAEF,gBAAgB,CAAC,CAAA;AAChE,MAAA,IAAIqB,YAAY,GAAGF,aAAa,CAACG,GAAG,CAAC,WAAW,CAAC,CAAA;MACjD,IAAIC,aAAa,GAAGC,OAAO,CAACH,YAAY,CAAC,KAAK,CAACD,SAAS,EAAET,SAAS,CAAA;AAEnE,MAAA,IAAIY,aAAa,EAAE;AACjBJ,QAAAA,aAAa,CAACM,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;AACrC;AACA;;AAEA,QAAA,OAAA;AACF,OAAA;AAEAN,MAAAA,aAAa,CAACM,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;KACtC,CAAA,CAAA;AAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAEM,MAAM;MACX,IAAI,IAAI,CAACd,SAAS,EAAE,OAAA;MAEpB,IAAIQ,aAAa,GAAGL,WAAW,CAACJ,SAAS,CAAC,IAAI,CAACR,MAAM,EAAEF,gBAAgB,CAAC,CAAA;MACxE,IAAIoB,SAAS,GAAGX,OAAO,CAACC,SAAS,CAAC,IAAI,CAACR,MAAM,EAAEF,gBAAgB,CAAC,CAAA;AAChE,MAAA,IAAIqB,YAAY,GAAGF,aAAa,CAACG,GAAG,CAAC,WAAW,CAAC,CAAA;AACjD,MAAA,IAAIC,aAAa,GAAGF,YAAY,KAAK,CAACD,SAAS,EAAET,SAAS,CAAA;AAE1D,MAAA,IAAIY,aAAa,EAAE;AACjBJ,QAAAA,aAAa,CAACM,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;AACpC;AACA;;AAEA,QAAA,OAAA;AACF,OAAA;AAEAN,MAAAA,aAAa,CAACM,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;KACrC,CAAA,CAAA;AAAA,IAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAEQ,MAAM;MACb,IAAI,IAAI,CAACd,SAAS,EAAE;QAClB,IAAI,CAACe,IAAI,EAAE,CAAA;AAEX,QAAA,OAAA;AACF,OAAA;MAEA,IAAI,CAACC,IAAI,EAAE,CAAA;KACZ,CAAA,CAAA;IAAA,IA3DmBzB,CAAAA,MAAoB,GAApBA,MAAoB,CAAA;AAAG,GAAA;AAE3C,EAAA,IAAIS,SAAS,GAAY;IACvB,IAAIiB,iBAAiB,GAAGd,WAAW,CAACJ,SAAS,CAAC,IAAI,CAACR,MAAM,EAAEF,gBAAgB,CAAC,CAAA;IAC5E,IAAI6B,aAAa,GAAGpB,OAAO,CAACC,SAAS,CAAC,IAAI,CAACR,MAAM,EAAEF,gBAAgB,CAAC,CAAA;AAEpE,IAAA,OAAOwB,OAAO,CAACI,iBAAiB,CAACN,GAAG,CAAC,WAAW,CAAC,IAAIO,aAAa,EAAElB,SAAS,IAAI,IAAI,CAAC,CAAA;AACxF,GAAA;AAEA,EAAA,IAAImB,QAAQ,GAAY;IACtB,OAAO,CAAC,IAAI,CAACnB,SAAS,CAAA;AACxB,GAAA;AAiDF,CAAA;AAEA,IAAaN,SAAS,IAAA,MAAA,GAAf,MAAMA,SAAS,CAAiB;EACrCa,WAAW,CAASd,KAAkB,EAAE;IAAA,IAApBA,CAAAA,KAAkB,GAAlBA,KAAkB,CAAA;AAAG,GAAA;AAEzC,EAAA,IACIa,cAAc,GAAmB;IACnC,IAAIc,UAAU,GAAG,IAAI,CAAC3B,KAAK,CAACG,OAAO,CAACyB,MAAM,EAAE,CAAA;AAE5C,IAAA,OAAOD,UAAU,CAACE,MAAM,CAAE/B,MAAM,IAAK;MACnC,IAAIgC,UAAU,GAAGrB,IAAI,CAACH,SAAS,CAACR,MAAM,EAAEF,gBAAgB,CAAC,CAAA;MAEzD,OAAOkC,UAAU,CAACvB,SAAS,CAAA;AAC7B,KAAC,CAAC,CAAA;AACJ,GAAA;EAGAwB,sBAAsB,CAACjC,MAAoB,EAAE;IAC3C,IAAIgC,UAAU,GAAGrB,IAAI,CAACH,SAAS,CAACR,MAAM,EAAEF,gBAAgB,CAAC,CAAA;IAEzDkC,UAAU,CAACE,MAAM,EAAE,CAAA;AACrB,GAAA;AACF,CAAC,GAAA,yBAAA,CAAA,MAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,CAjBEC,MAAM,CAAA,EAAA,MAAA,CAAA,wBAAA,CAAA,MAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,MAAA,CAAA,SAAA,CAAA,EAAA,yBAAA,CAAA,MAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,CAWNC,MAAM,CAAA,EAAA,MAAA,CAAA,wBAAA,CAAA,MAAA,CAAA,SAAA,EAAA,wBAAA,CAAA,EAAA,MAAA,CAAA,SAAA,CAAA,GAAA,MAAA;;;;"}
|
@@ -5,26 +5,27 @@ import { Sorting } from './plugin.js';
|
|
5
5
|
* Query a specific column's current sort direction
|
6
6
|
*/
|
7
7
|
const sortDirection = column => meta.forColumn(column, Sorting).sortDirection;
|
8
|
+
|
8
9
|
/**
|
9
10
|
* Ask if a column is sortable
|
10
11
|
*/
|
11
|
-
|
12
12
|
const isSortable = column => meta.forColumn(column, Sorting).isSortable;
|
13
|
+
|
13
14
|
/**
|
14
15
|
* Ask if a column is ascending
|
15
16
|
*/
|
16
|
-
|
17
17
|
const isAscending = column => meta.forColumn(column, Sorting).isAscending;
|
18
|
+
|
18
19
|
/**
|
19
20
|
* Ask if a column is sorted descending
|
20
21
|
*/
|
21
|
-
|
22
22
|
const isDescending = column => meta.forColumn(column, Sorting).isDescending;
|
23
|
+
|
23
24
|
/**
|
24
25
|
* Ask if a column is not sorted
|
25
26
|
*/
|
26
|
-
|
27
27
|
const isUnsorted = column => meta.forColumn(column, Sorting).isUnsorted;
|
28
|
+
|
28
29
|
/**
|
29
30
|
* Sort the specified column's data using a tri-toggle.
|
30
31
|
*
|
@@ -32,17 +33,16 @@ const isUnsorted = column => meta.forColumn(column, Sorting).isUnsorted;
|
|
32
33
|
* Ascending => None => Descending
|
33
34
|
* ⬑ ---------- <= ---------- ↲
|
34
35
|
*/
|
35
|
-
|
36
36
|
const sort = column => meta.forTable(column.table, Sorting).handleSort(column);
|
37
|
+
|
37
38
|
/**
|
38
39
|
* Toggle a column between descending and not unsorted states
|
39
40
|
*/
|
40
|
-
|
41
41
|
const sortDescending = column => meta.forTable(column.table, Sorting).toggleDescending(column);
|
42
|
+
|
42
43
|
/**
|
43
44
|
* Toggle a column between ascending and not unsorted states
|
44
45
|
*/
|
45
|
-
|
46
46
|
const sortAscending = column => meta.forTable(column.table, Sorting).toggleAscending(column);
|
47
47
|
|
48
48
|
export { isAscending, isDescending, isSortable, isUnsorted, sort, sortAscending, sortDescending, sortDirection };
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../src/plugins/data-sorting/helpers.ts"],"sourcesContent":["import { meta } from '../-private/base';\nimport { Sorting } from './plugin';\n\nimport type { Column } from '[public-types]';\n\n/**\n * Query a specific column's current sort direction\n */\nexport const sortDirection = (column: Column) => meta.forColumn(column, Sorting).sortDirection;\n\n/**\n * Ask if a column is sortable\n */\nexport const isSortable = (column: Column) => meta.forColumn(column, Sorting).isSortable;\n\n/**\n * Ask if a column is ascending\n */\nexport const isAscending = (column: Column) => meta.forColumn(column, Sorting).isAscending;\n\n/**\n * Ask if a column is sorted descending\n */\nexport const isDescending = (column: Column) => meta.forColumn(column, Sorting).isDescending;\n\n/**\n * Ask if a column is not sorted\n */\nexport const isUnsorted = (column: Column) => meta.forColumn(column, Sorting).isUnsorted;\n\n/**\n * Sort the specified column's data using a tri-toggle.\n *\n * States go in this order:\n * Ascending => None => Descending\n * ⬑ ---------- <= ---------- ↲\n */\nexport const sort = (column: Column) => meta.forTable(column.table, Sorting).handleSort(column);\n\n/**\n * Toggle a column between descending and not unsorted states\n */\nexport const sortDescending = (column: Column) =>\n meta.forTable(column.table, Sorting).toggleDescending(column);\n\n/**\n * Toggle a column between ascending and not unsorted states\n */\nexport const sortAscending = (column: Column) =>\n meta.forTable(column.table, Sorting).toggleAscending(column);\n"],"names":["sortDirection","column","meta","forColumn","Sorting","isSortable","isAscending","isDescending","isUnsorted","sort","forTable","table","handleSort","sortDescending","toggleDescending","sortAscending","toggleAscending"],"mappings":";;;AAKA;AACA;AACA;AACaA,MAAAA,aAAa,GAAIC,
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../src/plugins/data-sorting/helpers.ts"],"sourcesContent":["import { meta } from '../-private/base';\nimport { Sorting } from './plugin';\n\nimport type { Column } from '[public-types]';\n\n/**\n * Query a specific column's current sort direction\n */\nexport const sortDirection = (column: Column) => meta.forColumn(column, Sorting).sortDirection;\n\n/**\n * Ask if a column is sortable\n */\nexport const isSortable = (column: Column) => meta.forColumn(column, Sorting).isSortable;\n\n/**\n * Ask if a column is ascending\n */\nexport const isAscending = (column: Column) => meta.forColumn(column, Sorting).isAscending;\n\n/**\n * Ask if a column is sorted descending\n */\nexport const isDescending = (column: Column) => meta.forColumn(column, Sorting).isDescending;\n\n/**\n * Ask if a column is not sorted\n */\nexport const isUnsorted = (column: Column) => meta.forColumn(column, Sorting).isUnsorted;\n\n/**\n * Sort the specified column's data using a tri-toggle.\n *\n * States go in this order:\n * Ascending => None => Descending\n * ⬑ ---------- <= ---------- ↲\n */\nexport const sort = (column: Column) => meta.forTable(column.table, Sorting).handleSort(column);\n\n/**\n * Toggle a column between descending and not unsorted states\n */\nexport const sortDescending = (column: Column) =>\n meta.forTable(column.table, Sorting).toggleDescending(column);\n\n/**\n * Toggle a column between ascending and not unsorted states\n */\nexport const sortAscending = (column: Column) =>\n meta.forTable(column.table, Sorting).toggleAscending(column);\n"],"names":["sortDirection","column","meta","forColumn","Sorting","isSortable","isAscending","isDescending","isUnsorted","sort","forTable","table","handleSort","sortDescending","toggleDescending","sortAscending","toggleAscending"],"mappings":";;;AAKA;AACA;AACA;AACaA,MAAAA,aAAa,GAAIC,MAAc,IAAKC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,OAAO,CAAC,CAACJ,cAAa;;AAE9F;AACA;AACA;AACaK,MAAAA,UAAU,GAAIJ,MAAc,IAAKC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,OAAO,CAAC,CAACC,WAAU;;AAExF;AACA;AACA;AACaC,MAAAA,WAAW,GAAIL,MAAc,IAAKC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,OAAO,CAAC,CAACE,YAAW;;AAE1F;AACA;AACA;AACaC,MAAAA,YAAY,GAAIN,MAAc,IAAKC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,OAAO,CAAC,CAACG,aAAY;;AAE5F;AACA;AACA;AACaC,MAAAA,UAAU,GAAIP,MAAc,IAAKC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,OAAO,CAAC,CAACI,WAAU;;AAExF;AACA;AACA;AACA;AACA;AACA;AACA;MACaC,IAAI,GAAIR,MAAc,IAAKC,IAAI,CAACQ,QAAQ,CAACT,MAAM,CAACU,KAAK,EAAEP,OAAO,CAAC,CAACQ,UAAU,CAACX,MAAM,EAAC;;AAE/F;AACA;AACA;MACaY,cAAc,GAAIZ,MAAc,IAC3CC,IAAI,CAACQ,QAAQ,CAACT,MAAM,CAACU,KAAK,EAAEP,OAAO,CAAC,CAACU,gBAAgB,CAACb,MAAM,EAAC;;AAE/D;AACA;AACA;MACac,aAAa,GAAId,MAAc,IAC1CC,IAAI,CAACQ,QAAQ,CAACT,MAAM,CAACU,KAAK,EAAEP,OAAO,CAAC,CAACY,eAAe,CAACf,MAAM;;;;"}
|