igniteui-webcomponents 7.0.1 → 7.1.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/CHANGELOG.md +14 -0
- package/components/combo/themes/shared/combo.common.css.js +1 -1
- package/components/combo/themes/shared/combo.common.css.js.map +1 -1
- package/components/combo/types.js.map +1 -1
- package/components/common/definitions/defineAllComponents.js +4 -0
- package/components/common/definitions/defineAllComponents.js.map +1 -1
- package/components/common/mixins/forms/form-transformers.js.map +1 -1
- package/components/common/util.d.ts +11 -1
- package/components/common/util.js +3 -0
- package/components/common/util.js.map +1 -1
- package/components/date-picker/date-picker.js.map +1 -1
- package/components/file-input/file-input.js.map +1 -1
- package/components/highlight/highlight.d.ts +130 -0
- package/components/highlight/highlight.js +77 -0
- package/components/highlight/highlight.js.map +1 -0
- package/components/highlight/service.d.ts +58 -0
- package/components/highlight/service.js +132 -0
- package/components/highlight/service.js.map +1 -0
- package/components/highlight/themes/dark/highlight.bootstrap.css.js +3 -0
- package/components/highlight/themes/dark/highlight.bootstrap.css.js.map +1 -0
- package/components/highlight/themes/dark/highlight.fluent.css.d.ts +1 -0
- package/components/highlight/themes/dark/highlight.fluent.css.js +3 -0
- package/components/highlight/themes/dark/highlight.fluent.css.js.map +1 -0
- package/components/highlight/themes/dark/highlight.indigo.css.d.ts +1 -0
- package/components/highlight/themes/dark/highlight.indigo.css.js +3 -0
- package/components/highlight/themes/dark/highlight.indigo.css.js.map +1 -0
- package/components/highlight/themes/dark/highlight.material.css.d.ts +1 -0
- package/components/highlight/themes/dark/highlight.material.css.js +3 -0
- package/components/highlight/themes/dark/highlight.material.css.js.map +1 -0
- package/components/highlight/themes/dark/highlight.shared.css.d.ts +1 -0
- package/components/highlight/themes/dark/highlight.shared.css.js +3 -0
- package/components/highlight/themes/dark/highlight.shared.css.js.map +1 -0
- package/components/highlight/themes/light/highlight.bootstrap.css.d.ts +1 -0
- package/components/highlight/themes/light/highlight.bootstrap.css.js +3 -0
- package/components/highlight/themes/light/highlight.bootstrap.css.js.map +1 -0
- package/components/highlight/themes/light/highlight.fluent.css.d.ts +1 -0
- package/components/highlight/themes/light/highlight.fluent.css.js +3 -0
- package/components/highlight/themes/light/highlight.fluent.css.js.map +1 -0
- package/components/highlight/themes/light/highlight.indigo.css.d.ts +1 -0
- package/components/highlight/themes/light/highlight.indigo.css.js +3 -0
- package/components/highlight/themes/light/highlight.indigo.css.js.map +1 -0
- package/components/highlight/themes/light/highlight.material.css.d.ts +1 -0
- package/components/highlight/themes/light/highlight.material.css.js +3 -0
- package/components/highlight/themes/light/highlight.material.css.js.map +1 -0
- package/components/highlight/themes/light/highlight.shared.css.d.ts +1 -0
- package/components/highlight/themes/light/highlight.shared.css.js +3 -0
- package/components/highlight/themes/light/highlight.shared.css.js.map +1 -0
- package/components/highlight/themes/shared/highlight.common.css.d.ts +1 -0
- package/components/highlight/themes/shared/highlight.common.css.js +3 -0
- package/components/highlight/themes/shared/highlight.common.css.js.map +1 -0
- package/components/highlight/themes/themes.d.ts +2 -0
- package/components/highlight/themes/themes.js +47 -0
- package/components/highlight/themes/themes.js.map +1 -0
- package/components/splitter/splitter.d.ts +240 -0
- package/components/splitter/splitter.js +608 -0
- package/components/splitter/splitter.js.map +1 -0
- package/components/splitter/themes/dark/splitter.bootstrap.css.d.ts +1 -0
- package/components/splitter/themes/dark/splitter.bootstrap.css.js +3 -0
- package/components/splitter/themes/dark/splitter.bootstrap.css.js.map +1 -0
- package/components/splitter/themes/dark/splitter.fluent.css.d.ts +1 -0
- package/components/splitter/themes/dark/splitter.fluent.css.js +3 -0
- package/components/splitter/themes/dark/splitter.fluent.css.js.map +1 -0
- package/components/splitter/themes/dark/splitter.indigo.css.d.ts +1 -0
- package/components/splitter/themes/dark/splitter.indigo.css.js +3 -0
- package/components/splitter/themes/dark/splitter.indigo.css.js.map +1 -0
- package/components/splitter/themes/dark/splitter.material.css.d.ts +1 -0
- package/components/splitter/themes/dark/splitter.material.css.js +3 -0
- package/components/splitter/themes/dark/splitter.material.css.js.map +1 -0
- package/components/splitter/themes/dark/splitter.shared.css.d.ts +1 -0
- package/components/splitter/themes/dark/splitter.shared.css.js +3 -0
- package/components/splitter/themes/dark/splitter.shared.css.js.map +1 -0
- package/components/splitter/themes/light/splitter.bootstrap.css.d.ts +1 -0
- package/components/splitter/themes/light/splitter.bootstrap.css.js +3 -0
- package/components/splitter/themes/light/splitter.bootstrap.css.js.map +1 -0
- package/components/splitter/themes/light/splitter.fluent.css.d.ts +1 -0
- package/components/splitter/themes/light/splitter.fluent.css.js +3 -0
- package/components/splitter/themes/light/splitter.fluent.css.js.map +1 -0
- package/components/splitter/themes/light/splitter.indigo.css.d.ts +1 -0
- package/components/splitter/themes/light/splitter.indigo.css.js +3 -0
- package/components/splitter/themes/light/splitter.indigo.css.js.map +1 -0
- package/components/splitter/themes/light/splitter.material.css.d.ts +1 -0
- package/components/splitter/themes/light/splitter.material.css.js +3 -0
- package/components/splitter/themes/light/splitter.material.css.js.map +1 -0
- package/components/splitter/themes/light/splitter.shared.css.d.ts +1 -0
- package/components/splitter/themes/light/splitter.shared.css.js +3 -0
- package/components/splitter/themes/light/splitter.shared.css.js.map +1 -0
- package/components/splitter/themes/shared/splitter.common.css.d.ts +1 -0
- package/components/splitter/themes/shared/splitter.common.css.js +3 -0
- package/components/splitter/themes/shared/splitter.common.css.js.map +1 -0
- package/components/splitter/themes/shared/splitter.indigo.css.d.ts +1 -0
- package/components/splitter/themes/shared/splitter.indigo.css.js +3 -0
- package/components/splitter/themes/shared/splitter.indigo.css.js.map +1 -0
- package/components/splitter/themes/splitter.base.css.d.ts +1 -0
- package/components/splitter/themes/splitter.base.css.js +3 -0
- package/components/splitter/themes/splitter.base.css.js.map +1 -0
- package/components/splitter/themes/themes.d.ts +2 -0
- package/components/splitter/themes/themes.js +48 -0
- package/components/splitter/themes/themes.js.map +1 -0
- package/components/splitter/types.d.ts +39 -0
- package/components/splitter/types.js +2 -0
- package/components/splitter/types.js.map +1 -0
- package/components/stepper/{animations.d.ts → common/animations.d.ts} +2 -2
- package/components/stepper/{animations.js → common/animations.js} +2 -2
- package/components/stepper/common/animations.js.map +1 -0
- package/components/stepper/common/context.d.ts +9 -0
- package/components/stepper/common/context.js +3 -0
- package/components/stepper/common/context.js.map +1 -0
- package/components/stepper/common/state.d.ts +67 -0
- package/components/stepper/common/state.js +134 -0
- package/components/stepper/common/state.js.map +1 -0
- package/components/stepper/common/types.js +2 -0
- package/components/stepper/common/types.js.map +1 -0
- package/components/stepper/step.d.ts +101 -55
- package/components/stepper/step.js +145 -160
- package/components/stepper/step.js.map +1 -1
- package/components/stepper/stepper.d.ts +98 -53
- package/components/stepper/stepper.js +168 -308
- package/components/stepper/stepper.js.map +1 -1
- package/components/stepper/themes/step/shared/step.bootstrap.css.js +1 -1
- package/components/stepper/themes/step/shared/step.bootstrap.css.js.map +1 -1
- package/components/stepper/themes/step/shared/step.common.css.js +1 -1
- package/components/stepper/themes/step/shared/step.common.css.js.map +1 -1
- package/components/stepper/themes/step/shared/step.indigo.css.js +1 -1
- package/components/stepper/themes/step/shared/step.indigo.css.js.map +1 -1
- package/components/stepper/themes/step/themes.js +2 -3
- package/components/stepper/themes/step/themes.js.map +1 -1
- package/components/tabs/themes/tabs.base.css.js +1 -1
- package/components/tabs/themes/tabs.base.css.js.map +1 -1
- package/components/textarea/textarea.js.map +1 -1
- package/components/types.d.ts +1 -0
- package/components/types.js.map +1 -1
- package/components/visually-hidden/visually-hidden.d.ts +49 -0
- package/components/visually-hidden/visually-hidden.js +26 -0
- package/components/visually-hidden/visually-hidden.js.map +1 -0
- package/custom-elements.json +2681 -379
- package/igniteui-webcomponents.css-data.json +2 -2
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +6 -2
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/package.json +3 -1
- package/web-types.json +3 -3
- package/components/stepper/animations.js.map +0 -1
- package/components/stepper/stepper.common.js +0 -2
- package/components/stepper/stepper.common.js.map +0 -1
- package/components/stepper/themes/step/shared/step.fluent.css.js +0 -3
- package/components/stepper/themes/step/shared/step.fluent.css.js.map +0 -1
- /package/components/{stepper/themes/step/shared/step.fluent.css.d.ts → highlight/themes/dark/highlight.bootstrap.css.d.ts} +0 -0
- /package/components/stepper/{stepper.common.d.ts → common/types.d.ts} +0 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { isServer } from 'lit';
|
|
2
|
+
import { escapeRegex, iterNodes, nanoid, scrollIntoView, wrap, } from '../common/util.js';
|
|
3
|
+
function* matchText(nodes, regexp) {
|
|
4
|
+
for (const node of nodes) {
|
|
5
|
+
if (node.textContent) {
|
|
6
|
+
for (const match of node.textContent.matchAll(regexp)) {
|
|
7
|
+
const [[start, end]] = match.indices;
|
|
8
|
+
yield { node, indices: [start, end] };
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
class HighlightService {
|
|
14
|
+
get size() {
|
|
15
|
+
return this._ranges.length;
|
|
16
|
+
}
|
|
17
|
+
get current() {
|
|
18
|
+
return this._current;
|
|
19
|
+
}
|
|
20
|
+
constructor(host) {
|
|
21
|
+
this._ranges = [];
|
|
22
|
+
this._current = 0;
|
|
23
|
+
this._host = host;
|
|
24
|
+
this._host.addController(this);
|
|
25
|
+
this._id = `igc-highlight-${nanoid()}`;
|
|
26
|
+
this._activeId = `${this._id}-active`;
|
|
27
|
+
this._styles = `
|
|
28
|
+
::highlight(${this._id}) {
|
|
29
|
+
background-color: var(--background, var(--ig-secondary-700));
|
|
30
|
+
color: var(--foreground, var(--ig-secondary-700-contrast));
|
|
31
|
+
}
|
|
32
|
+
::highlight(${this._activeId}) {
|
|
33
|
+
background-color: var(--background-active, var(--ig-primary-500));
|
|
34
|
+
color: var(--foreground-active, var(--ig-primary-500-contrast));
|
|
35
|
+
}`;
|
|
36
|
+
if (!isServer) {
|
|
37
|
+
this._styleSheet = new CSSStyleSheet();
|
|
38
|
+
this._styleSheet.replaceSync(this._styles);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
hostConnected() {
|
|
42
|
+
this._createHighlightEntries();
|
|
43
|
+
this.find(this._host.searchText);
|
|
44
|
+
}
|
|
45
|
+
hostDisconnected() {
|
|
46
|
+
this._removeHighlightEntries();
|
|
47
|
+
this._removeStyleSheet();
|
|
48
|
+
}
|
|
49
|
+
_removeStyleSheet() {
|
|
50
|
+
const root = this._host.renderRoot;
|
|
51
|
+
if (this._styleSheet) {
|
|
52
|
+
root.adoptedStyleSheets = root.adoptedStyleSheets.filter((sheet) => sheet !== this._styleSheet);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
_createHighlightEntries() {
|
|
56
|
+
this._highlight = new Highlight();
|
|
57
|
+
this._highlight.priority = 0;
|
|
58
|
+
this._activeHighlight = new Highlight();
|
|
59
|
+
this._activeHighlight.priority = 1;
|
|
60
|
+
CSS.highlights.set(this._id, this._highlight);
|
|
61
|
+
CSS.highlights.set(this._activeId, this._activeHighlight);
|
|
62
|
+
}
|
|
63
|
+
_removeHighlightEntries() {
|
|
64
|
+
CSS.highlights.delete(this._id);
|
|
65
|
+
CSS.highlights.delete(this._activeId);
|
|
66
|
+
this._ranges.length = 0;
|
|
67
|
+
}
|
|
68
|
+
_createRegex(value) {
|
|
69
|
+
return new RegExp(escapeRegex(value), this._host.caseSensitive ? 'dg' : 'dgi');
|
|
70
|
+
}
|
|
71
|
+
_updateActiveHighlight() {
|
|
72
|
+
if (this.size) {
|
|
73
|
+
this._activeHighlight.clear();
|
|
74
|
+
this._activeHighlight.add(this._ranges[this._current]);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
_goTo(index, options) {
|
|
78
|
+
if (!this.size) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
this._current = wrap(0, this.size - 1, index);
|
|
82
|
+
const range = this._ranges[this._current];
|
|
83
|
+
this._activeHighlight.clear();
|
|
84
|
+
this._activeHighlight.add(range);
|
|
85
|
+
if (!options?.preventScroll) {
|
|
86
|
+
scrollIntoView(range.commonAncestorContainer.parentElement, {
|
|
87
|
+
block: 'center',
|
|
88
|
+
inline: 'center',
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
attachStylesheet() {
|
|
93
|
+
const adoptedSheets = this._host.renderRoot
|
|
94
|
+
.adoptedStyleSheets;
|
|
95
|
+
if (this._styleSheet && !adoptedSheets.includes(this._styleSheet)) {
|
|
96
|
+
adoptedSheets.push(this._styleSheet);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
find(value) {
|
|
100
|
+
if (!value?.trim()) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const iterator = matchText(iterNodes(this._host, { show: 'SHOW_TEXT' }), this._createRegex(value));
|
|
104
|
+
for (const { node, indices: [start, end], } of iterator) {
|
|
105
|
+
const range = new Range();
|
|
106
|
+
range.setStart(node, start);
|
|
107
|
+
range.setEnd(node, end);
|
|
108
|
+
this._ranges.push(range);
|
|
109
|
+
this._highlight.add(range);
|
|
110
|
+
}
|
|
111
|
+
this._updateActiveHighlight();
|
|
112
|
+
}
|
|
113
|
+
next(options) {
|
|
114
|
+
this._goTo(this._current + 1, options);
|
|
115
|
+
}
|
|
116
|
+
previous(options) {
|
|
117
|
+
this._goTo(this._current - 1, options);
|
|
118
|
+
}
|
|
119
|
+
setActive(index, options) {
|
|
120
|
+
this._goTo(index, options);
|
|
121
|
+
}
|
|
122
|
+
clear() {
|
|
123
|
+
this._activeHighlight.clear();
|
|
124
|
+
this._highlight.clear();
|
|
125
|
+
this._ranges.length = 0;
|
|
126
|
+
this._current = 0;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
export function createHighlightController(host) {
|
|
130
|
+
return new HighlightService(host);
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/components/highlight/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { isServer, type ReactiveController } from 'lit';\nimport {\n escapeRegex,\n iterNodes,\n nanoid,\n scrollIntoView,\n wrap,\n} from '../common/util.js';\nimport type IgcHighlightComponent from './highlight.js';\n\ntype Match = { node: Node; indices: [start: number, end: number] };\n\n/**\n * Options for controlling navigation behavior when moving the active highlight.\n */\nexport type HighlightNavigation = {\n /** If true, prevents the component from scrolling the new active match into view. */\n preventScroll?: boolean;\n};\n\nfunction* matchText(\n nodes: IterableIterator<Node>,\n regexp: RegExp\n): Generator<Match> {\n for (const node of nodes) {\n if (node.textContent) {\n for (const match of node.textContent.matchAll(regexp)) {\n const [[start, end]] = match.indices!;\n yield { node, indices: [start, end] } satisfies Match;\n }\n }\n }\n}\n\nclass HighlightService implements ReactiveController {\n //#region Private properties\n\n private readonly _host: IgcHighlightComponent;\n private readonly _id: string;\n private readonly _activeId: string;\n private readonly _styles: string;\n private readonly _styleSheet?: CSSStyleSheet;\n\n private _highlight!: Highlight;\n private _activeHighlight!: Highlight;\n private _ranges: Range[] = [];\n\n private _current = 0;\n\n //#endregion\n\n //#region Public properties\n\n /**\n * The total number of matches found in the component's content.\n */\n public get size(): number {\n return this._ranges.length;\n }\n\n /**\n * The index of the currently active match. Returns 0 if there are no matches.\n */\n public get current(): number {\n return this._current;\n }\n\n //#endregion\n\n constructor(host: IgcHighlightComponent) {\n this._host = host;\n this._host.addController(this);\n this._id = `igc-highlight-${nanoid()}`;\n this._activeId = `${this._id}-active`;\n\n this._styles = `\n ::highlight(${this._id}) {\n background-color: var(--background, var(--ig-secondary-700));\n color: var(--foreground, var(--ig-secondary-700-contrast));\n }\n ::highlight(${this._activeId}) {\n background-color: var(--background-active, var(--ig-primary-500));\n color: var(--foreground-active, var(--ig-primary-500-contrast));\n }`;\n\n if (!isServer) {\n this._styleSheet = new CSSStyleSheet();\n this._styleSheet.replaceSync(this._styles);\n }\n }\n\n //#region Controller life-cycle\n\n /** @internal */\n public hostConnected(): void {\n this._createHighlightEntries();\n this.find(this._host.searchText);\n }\n\n /** @internal */\n public hostDisconnected(): void {\n this._removeHighlightEntries();\n this._removeStyleSheet();\n }\n\n //#endregion\n\n //#region Private methods\n\n private _removeStyleSheet(): void {\n const root = this._host.renderRoot as ShadowRoot;\n\n if (this._styleSheet) {\n root.adoptedStyleSheets = root.adoptedStyleSheets.filter(\n (sheet) => sheet !== this._styleSheet\n );\n }\n }\n\n private _createHighlightEntries(): void {\n this._highlight = new Highlight();\n this._highlight.priority = 0;\n\n this._activeHighlight = new Highlight();\n this._activeHighlight.priority = 1;\n\n CSS.highlights.set(this._id, this._highlight);\n CSS.highlights.set(this._activeId, this._activeHighlight);\n }\n\n private _removeHighlightEntries(): void {\n CSS.highlights.delete(this._id);\n CSS.highlights.delete(this._activeId);\n this._ranges.length = 0;\n }\n\n private _createRegex(value: string): RegExp {\n return new RegExp(\n escapeRegex(value),\n this._host.caseSensitive ? 'dg' : 'dgi'\n );\n }\n\n private _updateActiveHighlight(): void {\n if (this.size) {\n this._activeHighlight.clear();\n this._activeHighlight.add(this._ranges[this._current]);\n }\n }\n\n private _goTo(index: number, options?: HighlightNavigation): void {\n if (!this.size) {\n return;\n }\n\n this._current = wrap(0, this.size - 1, index);\n const range = this._ranges[this._current];\n\n this._activeHighlight.clear();\n this._activeHighlight.add(range);\n\n if (!options?.preventScroll) {\n scrollIntoView(range.commonAncestorContainer.parentElement, {\n block: 'center',\n inline: 'center',\n });\n }\n }\n\n //#endregion\n\n //#region Public methods\n\n /**\n * Attaches the service's stylesheet to the render root.\n * Necessary for the component to apply highlight styles to its content.\n */\n public attachStylesheet(): void {\n const adoptedSheets = (this._host.renderRoot as ShadowRoot)\n .adoptedStyleSheets;\n\n if (this._styleSheet && !adoptedSheets.includes(this._styleSheet)) {\n adoptedSheets.push(this._styleSheet);\n }\n }\n\n /**\n * Finds matches for the given search text in the component's content and creates highlight ranges for them.\n */\n public find(value: string): void {\n if (!value?.trim()) {\n return;\n }\n\n const iterator = matchText(\n iterNodes(this._host, { show: 'SHOW_TEXT' }),\n this._createRegex(value)\n );\n\n for (const {\n node,\n indices: [start, end],\n } of iterator) {\n const range = new Range();\n range.setStart(node, start);\n range.setEnd(node, end);\n\n this._ranges.push(range);\n this._highlight.add(range);\n }\n\n this._updateActiveHighlight();\n }\n\n /** Moves the active state to the next match. */\n public next(options?: HighlightNavigation): void {\n this._goTo(this._current + 1, options);\n }\n\n /** Moves the active state to the previous match. */\n public previous(options?: HighlightNavigation): void {\n this._goTo(this._current - 1, options);\n }\n\n /** Moves the active state to the given index. */\n public setActive(index: number, options?: HighlightNavigation): void {\n this._goTo(index, options);\n }\n\n /** Clears highlight collections. */\n public clear(): void {\n this._activeHighlight.clear();\n this._highlight.clear();\n this._ranges.length = 0;\n this._current = 0;\n }\n\n //#endregion\n}\n\nexport function createHighlightController(\n host: IgcHighlightComponent\n): HighlightService {\n return new HighlightService(host);\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `:host{--resting-background: var(--ig-highlight-resting-background, var(--ig-gray-200));--resting-color: var(--ig-highlight-resting-color, var(--ig-gray-200-contrast));--active-background: var(--ig-highlight-active-background, var(--ig-primary-A100));--active-color: var(--ig-highlight-active-color, var(--ig-primary-A100-contrast));--ig-theme: bootstrap;--ig-theme-variant: dark}`;
|
|
3
|
+
//# sourceMappingURL=highlight.bootstrap.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.bootstrap.css.js","sourceRoot":"","sources":["../../../../../src/components/highlight/themes/dark/highlight.bootstrap.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,6XAA6X,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--resting-background: var(--ig-highlight-resting-background, var(--ig-gray-200));--resting-color: var(--ig-highlight-resting-color, var(--ig-gray-200-contrast));--active-background: var(--ig-highlight-active-background, var(--ig-primary-A100));--active-color: var(--ig-highlight-active-color, var(--ig-primary-A100-contrast));--ig-theme: bootstrap;--ig-theme-variant: dark}`;\n "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `:host{--resting-background: var(--ig-highlight-resting-background, var(--ig-gray-200));--resting-color: var(--ig-highlight-resting-color, var(--ig-gray-200-contrast));--ig-theme: fluent;--ig-theme-variant: dark}`;
|
|
3
|
+
//# sourceMappingURL=highlight.fluent.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.fluent.css.js","sourceRoot":"","sources":["../../../../../src/components/highlight/themes/dark/highlight.fluent.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,qNAAqN,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--resting-background: var(--ig-highlight-resting-background, var(--ig-gray-200));--resting-color: var(--ig-highlight-resting-color, var(--ig-gray-200-contrast));--ig-theme: fluent;--ig-theme-variant: dark}`;\n "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `:host{--resting-background: var(--ig-highlight-resting-background, var(--ig-gray-200));--resting-color: var(--ig-highlight-resting-color, var(--ig-gray-200-contrast));--active-background: var(--ig-highlight-active-background, var(--ig-primary-500));--active-color: var(--ig-highlight-active-color, var(--ig-primary-500-contrast));--ig-theme: indigo;--ig-theme-variant: dark}`;
|
|
3
|
+
//# sourceMappingURL=highlight.indigo.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.indigo.css.js","sourceRoot":"","sources":["../../../../../src/components/highlight/themes/dark/highlight.indigo.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,wXAAwX,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--resting-background: var(--ig-highlight-resting-background, var(--ig-gray-200));--resting-color: var(--ig-highlight-resting-color, var(--ig-gray-200-contrast));--active-background: var(--ig-highlight-active-background, var(--ig-primary-500));--active-color: var(--ig-highlight-active-color, var(--ig-primary-500-contrast));--ig-theme: indigo;--ig-theme-variant: dark}`;\n "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `:host{--resting-background: var(--ig-highlight-resting-background, var(--ig-gray-200));--resting-color: var(--ig-highlight-resting-color, var(--ig-gray-200-contrast));--ig-theme: material;--ig-theme-variant: dark}`;
|
|
3
|
+
//# sourceMappingURL=highlight.material.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.material.css.js","sourceRoot":"","sources":["../../../../../src/components/highlight/themes/dark/highlight.material.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,uNAAuN,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--resting-background: var(--ig-highlight-resting-background, var(--ig-gray-200));--resting-color: var(--ig-highlight-resting-color, var(--ig-gray-200-contrast));--ig-theme: material;--ig-theme-variant: dark}`;\n "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `:host{--resting-background: var(--ig-highlight-resting-background, var(--ig-gray-200));--resting-color: var(--ig-highlight-resting-color, var(--ig-gray-200-contrast));--ig-theme-variant: dark}`;
|
|
3
|
+
//# sourceMappingURL=highlight.shared.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.shared.css.js","sourceRoot":"","sources":["../../../../../src/components/highlight/themes/dark/highlight.shared.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,kMAAkM,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--resting-background: var(--ig-highlight-resting-background, var(--ig-gray-200));--resting-color: var(--ig-highlight-resting-color, var(--ig-gray-200-contrast));--ig-theme-variant: dark}`;\n "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.bootstrap.css.js","sourceRoot":"","sources":["../../../../../src/components/highlight/themes/light/highlight.bootstrap.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,wDAAwD,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--ig-theme: bootstrap;--ig-theme-variant: light}`;\n "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.fluent.css.js","sourceRoot":"","sources":["../../../../../src/components/highlight/themes/light/highlight.fluent.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,qDAAqD,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--ig-theme: fluent;--ig-theme-variant: light}`;\n "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `:host{--active-background: var(--ig-highlight-active-background, var(--ig-primary-500));--active-color: var(--ig-highlight-active-color, var(--ig-primary-500-contrast));--ig-theme: indigo;--ig-theme-variant: light}`;
|
|
3
|
+
//# sourceMappingURL=highlight.indigo.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.indigo.css.js","sourceRoot":"","sources":["../../../../../src/components/highlight/themes/light/highlight.indigo.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,wNAAwN,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--active-background: var(--ig-highlight-active-background, var(--ig-primary-500));--active-color: var(--ig-highlight-active-color, var(--ig-primary-500-contrast));--ig-theme: indigo;--ig-theme-variant: light}`;\n "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.material.css.js","sourceRoot":"","sources":["../../../../../src/components/highlight/themes/light/highlight.material.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,uDAAuD,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--ig-theme: material;--ig-theme-variant: light}`;\n "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `:host{--resting-background: var(--ig-highlight-resting-background, var(--ig-gray-300));--resting-color: var(--ig-highlight-resting-color, var(--ig-gray-300-contrast));--active-background: var(--ig-highlight-active-background, var(--ig-secondary-A100));--active-color: var(--ig-highlight-active-color, var(--ig-secondary-A100-contrast));--ig-theme-variant: light}`;
|
|
3
|
+
//# sourceMappingURL=highlight.shared.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.shared.css.js","sourceRoot":"","sources":["../../../../../src/components/highlight/themes/light/highlight.shared.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,4WAA4W,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--resting-background: var(--ig-highlight-resting-background, var(--ig-gray-300));--resting-color: var(--ig-highlight-resting-color, var(--ig-gray-300-contrast));--active-background: var(--ig-highlight-active-background, var(--ig-secondary-A100));--active-color: var(--ig-highlight-active-color, var(--ig-secondary-A100-contrast));--ig-theme-variant: light}`;\n "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `:host{--background: var(--resting-background);--foreground: var(--resting-color);--background-active: var(--active-background);--foreground-active: var(--active-color);display:contents}`;
|
|
3
|
+
//# sourceMappingURL=highlight.common.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.common.css.js","sourceRoot":"","sources":["../../../../../src/components/highlight/themes/shared/highlight.common.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,2LAA2L,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--background: var(--resting-background);--foreground: var(--resting-color);--background-active: var(--active-background);--foreground-active: var(--active-color);display:contents}`;\n "]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
import { styles as bootstrapDark } from './dark/highlight.bootstrap.css.js';
|
|
3
|
+
import { styles as fluentDark } from './dark/highlight.fluent.css.js';
|
|
4
|
+
import { styles as indigoDark } from './dark/highlight.indigo.css.js';
|
|
5
|
+
import { styles as materialDark } from './dark/highlight.material.css.js';
|
|
6
|
+
import { styles as sharedDark } from './dark/highlight.shared.css.js';
|
|
7
|
+
import { styles as bootstrapLight } from './light/highlight.bootstrap.css.js';
|
|
8
|
+
import { styles as fluentLight } from './light/highlight.fluent.css.js';
|
|
9
|
+
import { styles as indigoLight } from './light/highlight.indigo.css.js';
|
|
10
|
+
import { styles as materialLight } from './light/highlight.material.css.js';
|
|
11
|
+
import { styles as sharedLight } from './light/highlight.shared.css.js';
|
|
12
|
+
const light = {
|
|
13
|
+
shared: css `
|
|
14
|
+
${sharedLight}
|
|
15
|
+
`,
|
|
16
|
+
bootstrap: css `
|
|
17
|
+
${bootstrapLight}
|
|
18
|
+
`,
|
|
19
|
+
material: css `
|
|
20
|
+
${materialLight}
|
|
21
|
+
`,
|
|
22
|
+
indigo: css `
|
|
23
|
+
${indigoLight}
|
|
24
|
+
`,
|
|
25
|
+
fluent: css `
|
|
26
|
+
${fluentLight}
|
|
27
|
+
`,
|
|
28
|
+
};
|
|
29
|
+
const dark = {
|
|
30
|
+
shared: css `
|
|
31
|
+
${sharedDark}
|
|
32
|
+
`,
|
|
33
|
+
bootstrap: css `
|
|
34
|
+
${bootstrapDark}
|
|
35
|
+
`,
|
|
36
|
+
material: css `
|
|
37
|
+
${materialDark}
|
|
38
|
+
`,
|
|
39
|
+
indigo: css `
|
|
40
|
+
${indigoDark}
|
|
41
|
+
`,
|
|
42
|
+
fluent: css `
|
|
43
|
+
${fluentDark}
|
|
44
|
+
`,
|
|
45
|
+
};
|
|
46
|
+
export const all = { light, dark };
|
|
47
|
+
//# sourceMappingURL=themes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../../../../src/components/highlight/themes/themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAK1B,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAExE,MAAM,KAAK,GAAG;IACZ,MAAM,EAAE,GAAG,CAAA;MACP,WAAW;GACd;IACD,SAAS,EAAE,GAAG,CAAA;MACV,cAAc;GACjB;IACD,QAAQ,EAAE,GAAG,CAAA;MACT,aAAa;GAChB;IACD,MAAM,EAAE,GAAG,CAAA;MACP,WAAW;GACd;IACD,MAAM,EAAE,GAAG,CAAA;MACP,WAAW;GACd;CACF,CAAC;AAEF,MAAM,IAAI,GAAG;IACX,MAAM,EAAE,GAAG,CAAA;MACP,UAAU;GACb;IACD,SAAS,EAAE,GAAG,CAAA;MACV,aAAa;GAChB;IACD,QAAQ,EAAE,GAAG,CAAA;MACT,YAAY;GACf;IACD,MAAM,EAAE,GAAG,CAAA;MACP,UAAU;GACb;IACD,MAAM,EAAE,GAAG,CAAA;MACP,UAAU;GACb;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC","sourcesContent":["import { css } from 'lit';\n\nimport type { Themes } from '../../../theming/types.js';\n\n// Dark Overrides\nimport { styles as bootstrapDark } from './dark/highlight.bootstrap.css.js';\nimport { styles as fluentDark } from './dark/highlight.fluent.css.js';\nimport { styles as indigoDark } from './dark/highlight.indigo.css.js';\nimport { styles as materialDark } from './dark/highlight.material.css.js';\nimport { styles as sharedDark } from './dark/highlight.shared.css.js';\n// Light Overrides\nimport { styles as bootstrapLight } from './light/highlight.bootstrap.css.js';\nimport { styles as fluentLight } from './light/highlight.fluent.css.js';\nimport { styles as indigoLight } from './light/highlight.indigo.css.js';\nimport { styles as materialLight } from './light/highlight.material.css.js';\nimport { styles as sharedLight } from './light/highlight.shared.css.js';\n\nconst light = {\n shared: css`\n ${sharedLight}\n `,\n bootstrap: css`\n ${bootstrapLight}\n `,\n material: css`\n ${materialLight}\n `,\n indigo: css`\n ${indigoLight}\n `,\n fluent: css`\n ${fluentLight}\n `,\n};\n\nconst dark = {\n shared: css`\n ${sharedDark}\n `,\n bootstrap: css`\n ${bootstrapDark}\n `,\n material: css`\n ${materialDark}\n `,\n indigo: css`\n ${indigoDark}\n `,\n fluent: css`\n ${fluentDark}\n `,\n};\n\nexport const all: Themes = { light, dark };\n"]}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { LitElement, type PropertyValues } from 'lit';
|
|
2
|
+
import type { Constructor } from '../common/mixins/constructor.js';
|
|
3
|
+
import type { SplitterOrientation } from '../types.js';
|
|
4
|
+
import type { IgcSplitterComponentEventMap, IgcSplitterResizeEventDetail, PanePosition } from './types.js';
|
|
5
|
+
declare const IgcSplitterComponent_base: Constructor<import("../common/mixins/event-emitter.js").EventEmitterInterface<IgcSplitterComponentEventMap>> & Constructor<LitElement>;
|
|
6
|
+
/**
|
|
7
|
+
* The `igc-splitter` component provides a resizable split-pane layout that divides the view
|
|
8
|
+
* into two panels — *start* and *end* — separated by a draggable bar.
|
|
9
|
+
*
|
|
10
|
+
* Panels can be resized by dragging the bar, using keyboard shortcuts, or collapsed/expanded
|
|
11
|
+
* using the built-in collapse buttons or the programmatic `toggle()` API.
|
|
12
|
+
* Nested splitters are supported for more complex layouts.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```html
|
|
16
|
+
* <!-- Basic horizontal splitter -->
|
|
17
|
+
* <igc-splitter>
|
|
18
|
+
* <div slot="start">Start panel</div>
|
|
19
|
+
* <div slot="end">End panel</div>
|
|
20
|
+
* </igc-splitter>
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```html
|
|
25
|
+
* <!-- Vertical splitter with size constraints -->
|
|
26
|
+
* <igc-splitter orientation="vertical" start-min-size="100px" end-min-size="100px">
|
|
27
|
+
* <div slot="start">Top panel</div>
|
|
28
|
+
* <div slot="end">Bottom panel</div>
|
|
29
|
+
* </igc-splitter>
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```html
|
|
34
|
+
* <!-- Nested splitters for a multi-pane layout -->
|
|
35
|
+
* <igc-splitter style="height: 600px;">
|
|
36
|
+
* <igc-splitter slot="start" orientation="vertical">
|
|
37
|
+
* <div slot="start">Top left</div>
|
|
38
|
+
* <div slot="end">Bottom left</div>
|
|
39
|
+
* </igc-splitter>
|
|
40
|
+
* <div slot="end">Right panel</div>
|
|
41
|
+
* </igc-splitter>
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* // Programmatically collapse/expand a pane
|
|
47
|
+
* const splitter = document.querySelector('igc-splitter');
|
|
48
|
+
* splitter.toggle('start'); // collapse start pane
|
|
49
|
+
* splitter.toggle('start'); // expand start pane
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* ## Keyboard interactions
|
|
53
|
+
*
|
|
54
|
+
* When the splitter bar is focused:
|
|
55
|
+
*
|
|
56
|
+
* | Key | Action |
|
|
57
|
+
* |---|---|
|
|
58
|
+
* | `Arrow Left` / `Arrow Right` | Resize panes (horizontal orientation) |
|
|
59
|
+
* | `Arrow Up` / `Arrow Down` | Resize panes (vertical orientation) |
|
|
60
|
+
* | `Home` | Snap start pane to its minimum size |
|
|
61
|
+
* | `End` | Snap start pane to its maximum size |
|
|
62
|
+
* | `Ctrl + Arrow Left` / `Ctrl + Arrow Up` | Collapse or expand the start pane |
|
|
63
|
+
* | `Ctrl + Arrow Right` / `Ctrl + Arrow Down` | Collapse or expand the end pane |
|
|
64
|
+
*
|
|
65
|
+
* @element igc-splitter
|
|
66
|
+
*
|
|
67
|
+
* @fires igcResizeStart - Emitted once when a resize operation begins (pointer drag or keyboard).
|
|
68
|
+
* @fires igcResizing - Emitted continuously while a pane is being resized.
|
|
69
|
+
* @fires igcResizeEnd - Emitted once when a resize operation completes.
|
|
70
|
+
*
|
|
71
|
+
* @slot start - Content projected into the start (left/top) panel.
|
|
72
|
+
* @slot end - Content projected into the end (right/bottom) panel.
|
|
73
|
+
*
|
|
74
|
+
* @csspart splitter-bar - The resizable bar element between the two panels.
|
|
75
|
+
* @csspart drag-handle - The drag handle icon/element on the splitter bar.
|
|
76
|
+
* @csspart start-pane - The container for the start panel content.
|
|
77
|
+
* @csspart end-pane - The container for the end panel content.
|
|
78
|
+
* @csspart start-collapse-btn - The button to collapse the start panel.
|
|
79
|
+
* @csspart end-collapse-btn - The button to collapse the end panel.
|
|
80
|
+
* @csspart start-expand-btn - The button to expand the start panel when collapsed.
|
|
81
|
+
* @csspart end-expand-btn - The button to expand the end panel when collapsed.
|
|
82
|
+
*/
|
|
83
|
+
export default class IgcSplitterComponent extends IgcSplitterComponent_base {
|
|
84
|
+
static readonly tagName = "igc-splitter";
|
|
85
|
+
static styles: import("lit").CSSResult[];
|
|
86
|
+
static register(): void;
|
|
87
|
+
private readonly _internals;
|
|
88
|
+
private readonly _separatorRef;
|
|
89
|
+
private _startPaneState;
|
|
90
|
+
private _endPaneState;
|
|
91
|
+
private _collapsedPane;
|
|
92
|
+
private _resizeState;
|
|
93
|
+
private readonly _base;
|
|
94
|
+
private readonly _startPane;
|
|
95
|
+
private readonly _endPane;
|
|
96
|
+
private get _separator();
|
|
97
|
+
private get _resizeDisallowed();
|
|
98
|
+
private get _isHorizontal();
|
|
99
|
+
private get _separatorCursor();
|
|
100
|
+
/**
|
|
101
|
+
* The orientation of the splitter, which determines the direction of resizing and collapsing.
|
|
102
|
+
*
|
|
103
|
+
* @attr orientation
|
|
104
|
+
* @default 'horizontal'
|
|
105
|
+
*/
|
|
106
|
+
orientation: SplitterOrientation;
|
|
107
|
+
/**
|
|
108
|
+
* When true, prevents the user from collapsing either pane.
|
|
109
|
+
* This also hides the expand/collapse buttons on the splitter bar.
|
|
110
|
+
*
|
|
111
|
+
* @attr disable-collapse
|
|
112
|
+
* @default false
|
|
113
|
+
*/
|
|
114
|
+
disableCollapse: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* When true, prevents the user from resizing the panes by dragging the splitter bar or using keyboard shortcuts.
|
|
117
|
+
* This also hides the drag handle on the splitter bar.
|
|
118
|
+
*
|
|
119
|
+
* @attr disable-resize
|
|
120
|
+
* @default false
|
|
121
|
+
*/
|
|
122
|
+
disableResize: boolean;
|
|
123
|
+
/**
|
|
124
|
+
* When true, hides the expand/collapse buttons on the splitter bar.
|
|
125
|
+
*
|
|
126
|
+
* Note that the buttons will also be hidden if `disable-collapse` is true or
|
|
127
|
+
* if a pane is currently collapsed.
|
|
128
|
+
*
|
|
129
|
+
* @attr hide-collapse-buttons
|
|
130
|
+
* @default false
|
|
131
|
+
*/
|
|
132
|
+
hideCollapseButtons: boolean;
|
|
133
|
+
/**
|
|
134
|
+
* When true, hides the drag handle on the splitter bar.
|
|
135
|
+
*
|
|
136
|
+
* Note that the drag handle will also be hidden if `disable-resize` is true.
|
|
137
|
+
*
|
|
138
|
+
* @attr hide-drag-handle
|
|
139
|
+
* @default false
|
|
140
|
+
*/
|
|
141
|
+
hideDragHandle: boolean;
|
|
142
|
+
/**
|
|
143
|
+
* The minimum size of the start pane.
|
|
144
|
+
*
|
|
145
|
+
* @attr start-min-size
|
|
146
|
+
*/
|
|
147
|
+
set startMinSize(value: string | undefined);
|
|
148
|
+
get startMinSize(): string | undefined;
|
|
149
|
+
/**
|
|
150
|
+
* The minimum size of the end pane.
|
|
151
|
+
*
|
|
152
|
+
* @attr end-min-size
|
|
153
|
+
*/
|
|
154
|
+
set endMinSize(value: string | undefined);
|
|
155
|
+
get endMinSize(): string | undefined;
|
|
156
|
+
/**
|
|
157
|
+
* The maximum size of the start pane.
|
|
158
|
+
*
|
|
159
|
+
* @attr start-max-size
|
|
160
|
+
*/
|
|
161
|
+
set startMaxSize(value: string | undefined);
|
|
162
|
+
get startMaxSize(): string | undefined;
|
|
163
|
+
/**
|
|
164
|
+
* The maximum size of the end pane.
|
|
165
|
+
*
|
|
166
|
+
* @attr end-max-size
|
|
167
|
+
*/
|
|
168
|
+
set endMaxSize(value: string | undefined);
|
|
169
|
+
get endMaxSize(): string | undefined;
|
|
170
|
+
/**
|
|
171
|
+
* The size of the start pane.
|
|
172
|
+
*
|
|
173
|
+
* @attr start-size
|
|
174
|
+
*/
|
|
175
|
+
set startSize(value: string | undefined);
|
|
176
|
+
get startSize(): string | undefined;
|
|
177
|
+
/**
|
|
178
|
+
* The size of the end pane.
|
|
179
|
+
*
|
|
180
|
+
* @attr end-size
|
|
181
|
+
*/
|
|
182
|
+
set endSize(value: string | undefined);
|
|
183
|
+
get endSize(): string | undefined;
|
|
184
|
+
constructor();
|
|
185
|
+
protected update(changed: PropertyValues<this>): void;
|
|
186
|
+
protected updated(): void;
|
|
187
|
+
private _handleBarPointerDown;
|
|
188
|
+
private _getDragDelta;
|
|
189
|
+
private _handleBarPointerMove;
|
|
190
|
+
private _handleEndDrag;
|
|
191
|
+
private _endDrag;
|
|
192
|
+
/** Toggles the collapsed state of the specified pane. */
|
|
193
|
+
toggle(position: PanePosition): void;
|
|
194
|
+
private _savePaneSizes;
|
|
195
|
+
private _restoreSizesOnExpandCollapse;
|
|
196
|
+
/** Measures the actual rendered size of a pane and returns it as a percentage of total size. */
|
|
197
|
+
private _paneRectAsPercent;
|
|
198
|
+
/** Converts a CSS size string (px or %) to a percentage of total size. */
|
|
199
|
+
private _sizeToPercent;
|
|
200
|
+
private _getStartPaneSizePercent;
|
|
201
|
+
private _getMinMaxAsPercent;
|
|
202
|
+
private _isCollapsed;
|
|
203
|
+
private _updateBarAria;
|
|
204
|
+
private _getPaneState;
|
|
205
|
+
private _isPercentageSize;
|
|
206
|
+
private _isAutoSize;
|
|
207
|
+
private _normalizeValue;
|
|
208
|
+
private _getFlex;
|
|
209
|
+
private _handleResizePanes;
|
|
210
|
+
private _preventDefaultForEvent;
|
|
211
|
+
private _resolveDelta;
|
|
212
|
+
private _handleMinMaxResize;
|
|
213
|
+
private _handleExpanderAction;
|
|
214
|
+
private _handleArrowsExpandCollapse;
|
|
215
|
+
private _resizeStart;
|
|
216
|
+
private _createPaneState;
|
|
217
|
+
private _setMinMaxInPx;
|
|
218
|
+
private _resizing;
|
|
219
|
+
private _computeSize;
|
|
220
|
+
private _resizeEnd;
|
|
221
|
+
private _rectSize;
|
|
222
|
+
private _calcNewSizes;
|
|
223
|
+
private _getTotalSize;
|
|
224
|
+
private _updatePanes;
|
|
225
|
+
private _updatePaneStyles;
|
|
226
|
+
private _setPaneMinMaxSizes;
|
|
227
|
+
private _ensureMinConstraintIsWithinBounds;
|
|
228
|
+
private _handleExpanderClick;
|
|
229
|
+
private _resolvePartNames;
|
|
230
|
+
private _renderBarControls;
|
|
231
|
+
private _renderAccessibleLabel;
|
|
232
|
+
private _renderSeparator;
|
|
233
|
+
protected render(): import("lit-html").TemplateResult<1>;
|
|
234
|
+
}
|
|
235
|
+
export type { IgcSplitterComponentEventMap, IgcSplitterResizeEventDetail };
|
|
236
|
+
declare global {
|
|
237
|
+
interface HTMLElementTagNameMap {
|
|
238
|
+
'igc-splitter': IgcSplitterComponent;
|
|
239
|
+
}
|
|
240
|
+
}
|