@esri/calcite-components 5.2.0-next.99 → 5.2.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/README.md +1 -1
- package/dist/cdn/{GST32DAL.js → 27NSJ3NC.js} +1 -1
- package/dist/cdn/{JFWDUC4M.js → 2MIERRJC.js} +1 -1
- package/dist/cdn/{EOMTBPAM.js → 2UCFIX3M.js} +1 -1
- package/dist/cdn/{Y6WHZAVU.js → 2VDNYLFE.js} +1 -1
- package/dist/cdn/{D3AIPJFM.js → 37KAQ4EV.js} +1 -1
- package/dist/cdn/{HOOKFRJ5.js → 3TUYJ6X4.js} +1 -1
- package/dist/cdn/{IWH5NWUU.js → 3UUFTFPC.js} +1 -1
- package/dist/cdn/{VB7JSUGB.js → 4CKWPATT.js} +1 -1
- package/dist/cdn/{SC5XD7BD.js → 4WU5FTJY.js} +1 -1
- package/dist/cdn/{TWOJRSW4.js → 53AO6SIJ.js} +1 -1
- package/dist/cdn/{MW42632J.js → 5FTRHJ6W.js} +1 -1
- package/dist/cdn/{WL3SJO7Q.js → 5GN63MWE.js} +1 -1
- package/dist/cdn/{662PF6RJ.js → 5JRUTA2A.js} +1 -1
- package/dist/cdn/{GBRMQ3Q7.js → 5OCUJ4C5.js} +1 -1
- package/dist/cdn/{VW7FW6X2.js → 5QO2P6GI.js} +1 -1
- package/dist/cdn/{4SNLHQMJ.js → 5VAMNX3B.js} +1 -1
- package/dist/cdn/{JPDFANDQ.js → 62CIR36Q.js} +1 -1
- package/dist/cdn/{RF2E4GRH.js → 6CH35SN4.js} +1 -1
- package/dist/cdn/6RLYKZIV.js +2 -0
- package/dist/cdn/{BAXRS5AA.js → 6S64CJRZ.js} +1 -1
- package/dist/cdn/{Y6NAKDFA.js → 6SQTT7Z6.js} +1 -1
- package/dist/cdn/{J7CPCGSH.js → 6WFEQ2Z6.js} +1 -1
- package/dist/cdn/{O2MNYT36.js → 6XZQRE5F.js} +1 -1
- package/dist/cdn/{JAYFX3Q2.js → 6ZBREHXS.js} +1 -1
- package/dist/cdn/{7TYZDEGX.js → 6ZSIHUKO.js} +1 -1
- package/dist/cdn/{G5STALAI.js → 75HPA4BR.js} +1 -1
- package/dist/cdn/{CZX4YKQD.js → 7LERFY2L.js} +1 -1
- package/dist/cdn/{2CNPC3OB.js → 7M4TWHXM.js} +1 -1
- package/dist/cdn/{U53QKA4H.js → 7RILCHYN.js} +1 -1
- package/dist/cdn/{ZKJVOU5M.js → 7WFGQILO.js} +1 -1
- package/dist/cdn/7Y3Z7SXE.js +2 -0
- package/dist/cdn/{ELUBDVXJ.js → AJLFAFPK.js} +1 -1
- package/dist/cdn/{4ZQAGLEN.js → ATYPU7K3.js} +1 -1
- package/dist/cdn/{3ANAA5WY.js → AYQOJ3VX.js} +1 -1
- package/dist/cdn/{ZYDS4IYB.js → AYXAUSXM.js} +1 -1
- package/dist/cdn/{BWNRKMS3.js → BIM2GIKZ.js} +1 -1
- package/dist/cdn/{4VWHZFWR.js → BR6IQ4MI.js} +1 -1
- package/dist/cdn/{ZKQDDLKK.js → BSJMRW26.js} +1 -1
- package/dist/cdn/{I64YUHND.js → BSPW6SRO.js} +1 -1
- package/dist/cdn/BSXWJ5BI.js +2 -0
- package/dist/cdn/{ZMIPEDSX.js → BXVKMQL6.js} +1 -1
- package/dist/cdn/{W3AEBEFX.js → CJ4MNQVH.js} +1 -1
- package/dist/cdn/{WBHWBQHC.js → CW6MPKMI.js} +1 -1
- package/dist/cdn/{44TFJRAK.js → CYK6CXXC.js} +1 -1
- package/dist/cdn/{N7LHYCP2.js → D37DWI2Z.js} +1 -1
- package/dist/cdn/{RCMSIMRP.js → DAALP2LM.js} +1 -1
- package/dist/cdn/{ZW6MT5KC.js → DIPELQOB.js} +1 -1
- package/dist/cdn/{7FW2RVVH.js → DJD3CC5A.js} +1 -1
- package/dist/cdn/{C65CLC4T.js → DNIMYOKJ.js} +1 -1
- package/dist/cdn/{QHYM366B.js → DNKKEOPE.js} +1 -1
- package/dist/cdn/DP22R3BB.js +2 -0
- package/dist/cdn/{REPXCTLA.js → DPWIAZNN.js} +1 -1
- package/dist/cdn/{OZ4ROR63.js → DQSSRRNX.js} +1 -1
- package/dist/cdn/{4EHMEDLA.js → DW7QYPEX.js} +1 -1
- package/dist/cdn/{OMZBU3IU.js → DWAKXY4G.js} +1 -1
- package/dist/cdn/{V4PS7I6J.js → EK2LCVRD.js} +1 -1
- package/dist/cdn/{DS7YC5ST.js → ESSQB6HQ.js} +1 -1
- package/dist/cdn/{2TZMS7HF.js → EV7CXLZP.js} +1 -1
- package/dist/cdn/{PQ32Y6ZL.js → F4BSY6FM.js} +1 -1
- package/dist/cdn/F4LZH6AB.js +2 -0
- package/dist/cdn/{TEOM4B4H.js → F5CQDWX2.js} +1 -1
- package/dist/cdn/{Y5J3BTH5.js → FFLFQAV5.js} +1 -1
- package/dist/cdn/{YK6HNEMU.js → FHPQEV63.js} +1 -1
- package/dist/cdn/{SAZM37N6.js → FK326MY2.js} +1 -1
- package/dist/cdn/{VFG4QJAL.js → FSIDJITI.js} +1 -1
- package/dist/cdn/{X5QYKRNO.js → FVZC57ZX.js} +1 -1
- package/dist/cdn/{XXWNYX3N.js → GJPJPHKT.js} +1 -1
- package/dist/cdn/{M4XG6CGT.js → GMW5MPTM.js} +1 -1
- package/dist/cdn/H4T7RAVN.js +2 -0
- package/dist/cdn/{XDANG4JV.js → HCL47WJY.js} +1 -1
- package/dist/cdn/{3VHU2XEB.js → HJPEJE7P.js} +1 -1
- package/dist/cdn/HJUXNTJR.js +2 -0
- package/dist/cdn/{RXMQKTJR.js → HTW6CG6E.js} +1 -1
- package/dist/cdn/IEN3AQC5.js +2 -0
- package/dist/cdn/{DA4JUDJU.js → IEYQVHI3.js} +1 -1
- package/dist/cdn/{J4ESZ24C.js → II7BF275.js} +1 -1
- package/dist/cdn/{ILBDCXZZ.js → JFBY7PPK.js} +1 -1
- package/dist/cdn/{C2QTVMRZ.js → JKXNTLXS.js} +1 -1
- package/dist/cdn/{5IFCTQIP.js → JMZJWX72.js} +1 -1
- package/dist/cdn/{DOVDZVPJ.js → JQ42CGMU.js} +1 -1
- package/dist/cdn/{4HAPFKXF.js → JSHH55OX.js} +1 -1
- package/dist/cdn/{263AU5BP.js → JSKNOXYE.js} +1 -1
- package/dist/cdn/{CSEY77KQ.js → JSMMI2WT.js} +1 -1
- package/dist/cdn/{J2FCKTAY.js → JXSD5O3H.js} +1 -1
- package/dist/cdn/{7FGFRTEF.js → JZVY5BQ6.js} +1 -1
- package/dist/cdn/{RYMSHLIL.js → KCUJMVAV.js} +1 -1
- package/dist/cdn/{WFDVIUN7.js → KD7QIPOS.js} +1 -1
- package/dist/cdn/{UBVNE3FR.js → KRRJDCT6.js} +1 -1
- package/dist/cdn/{FRBCEYOV.js → LMOL22ZO.js} +1 -1
- package/dist/cdn/{QYD7C2FO.js → LPAYXBBN.js} +1 -1
- package/dist/cdn/{TJBZHXEN.js → M4RTUV4L.js} +1 -1
- package/dist/cdn/{XZAMAONP.js → ML6YDT4P.js} +1 -1
- package/dist/cdn/{52VPEAZH.js → NI2VVIMS.js} +1 -1
- package/dist/cdn/{IHEH67LY.js → NJE6XK5W.js} +1 -1
- package/dist/cdn/{F2L2ICEF.js → NKWC4TEA.js} +1 -1
- package/dist/cdn/{U6EJO5OV.js → NOQO2PQ7.js} +1 -1
- package/dist/cdn/{BANKSP32.js → O55BBUQF.js} +1 -1
- package/dist/cdn/{ZL33K4C6.js → O6RLADGU.js} +1 -1
- package/dist/cdn/{SHDRKD4O.js → OFRX34HV.js} +1 -1
- package/dist/cdn/{GDFZZ5E5.js → OX26NF6A.js} +1 -1
- package/dist/cdn/{3EL6KHB5.js → P27HDJGR.js} +1 -1
- package/dist/cdn/{PCI32ZDN.js → P5SRIE25.js} +1 -1
- package/dist/cdn/{MTE46QCF.js → PNKRVLX2.js} +1 -1
- package/dist/cdn/{DUNEDDAA.js → PSCSNJ2D.js} +1 -1
- package/dist/cdn/{MWXZ2MTK.js → QLI75LJG.js} +1 -1
- package/dist/cdn/QXAMCDUL.js +2 -0
- package/dist/cdn/{A7S6MND4.js → RDVEB6BQ.js} +1 -1
- package/dist/cdn/{SX33HSBC.js → REFFSBJH.js} +1 -1
- package/dist/cdn/{RF3IKZ6O.js → RHEMSAUF.js} +1 -1
- package/dist/cdn/{73HUIP6T.js → RIJMRODS.js} +1 -1
- package/dist/cdn/RLOJO2TT.js +2 -0
- package/dist/cdn/{Q2QSOF52.js → RZ6D42K5.js} +1 -1
- package/dist/cdn/{KAVQKU3G.js → S7DRNDQJ.js} +1 -1
- package/dist/cdn/{W4GTBLDU.js → STAXE4JE.js} +1 -1
- package/dist/cdn/{ETTFRHP7.js → SVJWD2WC.js} +1 -1
- package/dist/cdn/{QMRRNFHH.js → T3HKGRXT.js} +1 -1
- package/dist/cdn/{ZEMJW5ZS.js → T3N6MMSQ.js} +1 -1
- package/dist/cdn/{3Q2QX2LR.js → TA36XBRX.js} +1 -1
- package/dist/cdn/TA3K6AKE.js +2 -0
- package/dist/cdn/{UTSMZR73.js → TAMVMNFJ.js} +1 -1
- package/dist/cdn/{HZ2KFK3C.js → TCKL6JAB.js} +1 -1
- package/dist/cdn/{QQJJAYFU.js → TYUFR52E.js} +1 -1
- package/dist/cdn/UND3EP47.js +2 -0
- package/dist/cdn/{5UAOUCGT.js → VBELHK2X.js} +1 -1
- package/dist/cdn/{CNEQCIJB.js → VDFLDPGU.js} +1 -1
- package/dist/cdn/{BPYFGYV6.js → VKP4VTXS.js} +1 -1
- package/dist/cdn/{UKC7IODK.js → VMROXW3U.js} +1 -1
- package/dist/cdn/VRVEOLT7.js +2 -0
- package/dist/cdn/{5GISDVW5.js → WITMH6FB.js} +1 -1
- package/dist/cdn/{NAAFIXAF.js → WJ2UOL5B.js} +1 -1
- package/dist/cdn/WONWNOVG.js +2 -0
- package/dist/cdn/{RVZ6FKKI.js → WP2M7UMA.js} +1 -1
- package/dist/cdn/{LCOU5YFI.js → WZNFNYAK.js} +1 -1
- package/dist/cdn/{TPNBE2KI.js → X6J6LR4T.js} +1 -1
- package/dist/cdn/{RJD35A5I.js → XTMSYMTJ.js} +1 -1
- package/dist/cdn/{BDRS3Y7M.js → XVP6M4SS.js} +1 -1
- package/dist/cdn/{WDWHQGW6.js → XZXOYNWT.js} +1 -1
- package/dist/cdn/{6ZPCDJMS.js → Y4RR6IVL.js} +1 -1
- package/dist/cdn/{FLUGGEF5.js → YCZHRWNN.js} +1 -1
- package/dist/cdn/{DS4P2F36.js → YQ3WTV7H.js} +1 -1
- package/dist/cdn/YVBFSYBI.js +2 -0
- package/dist/cdn/{BRCQSLJQ.js → ZDYDBL4C.js} +1 -1
- package/dist/cdn/{LQXCFNQS.js → ZHO4PNKX.js} +1 -1
- package/dist/cdn/{NT5YKL2Y.js → ZQ5L5OTW.js} +1 -1
- package/dist/cdn/{44XJ3KOL.js → ZSQ2QCED.js} +1 -1
- package/dist/cdn/{EES3BYY6.js → ZV4QR6RK.js} +1 -1
- package/dist/cdn/{HKZCFBV6.js → ZXOMX3F4.js} +1 -1
- package/dist/cdn/index.js +2 -2
- package/dist/cdn/main.css +2 -2
- package/dist/chunks/dom.js +7 -1
- package/dist/chunks/resources25.js +0 -1
- package/dist/chunks/runtime.js +4 -4
- package/dist/chunks/useInlineEdit.js +16 -3
- package/dist/components/calcite-action/customElement.d.ts +0 -4
- package/dist/components/calcite-action-bar/customElement.js +0 -6
- package/dist/components/calcite-block-group/customElement.d.ts +4 -4
- package/dist/components/calcite-date-picker/customElement.js +9 -6
- package/dist/components/calcite-input/customElement.d.ts +18 -16
- package/dist/components/calcite-input/customElement.js +9 -4
- package/dist/components/calcite-input-number/customElement.d.ts +18 -16
- package/dist/components/calcite-input-number/customElement.js +8 -4
- package/dist/components/calcite-input-text/customElement.d.ts +18 -16
- package/dist/components/calcite-input-text/customElement.js +8 -4
- package/dist/components/calcite-input-time-zone/customElement.d.ts +2 -0
- package/dist/components/calcite-input-time-zone/customElement.js +2 -2
- package/dist/components/calcite-menu-item/customElement.js +1 -1
- package/dist/components/calcite-shell/customElement.js +3 -56
- package/dist/components/calcite-shell-panel/customElement.d.ts +0 -2
- package/dist/components/calcite-shell-panel/customElement.js +13 -88
- package/dist/components/calcite-slider/customElement.js +1 -1
- package/dist/components/calcite-text/customElement.d.ts +19 -0
- package/dist/components/calcite-text/customElement.js +174 -0
- package/dist/components/calcite-text/index.d.ts +1 -0
- package/dist/components/calcite-text/index.js +1 -0
- package/dist/docs/api.json +1 -1
- package/dist/docs/docs.json +1 -1
- package/dist/docs/vscode.css-custom-data.json +1 -1
- package/dist/docs/vscode.html-custom-data.json +1 -1
- package/dist/docs/web-types.json +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/loader.js +3 -2
- package/dist/types/lumina.d.ts +7 -2
- package/dist/types/preact.d.ts +8 -2
- package/dist/types/react.d.ts +9 -2
- package/dist/types/stencil.d.ts +7 -2
- package/package.json +6 -6
- package/dist/cdn/2AZPDNN5.js +0 -2
- package/dist/cdn/2WGPIXZA.js +0 -2
- package/dist/cdn/CGZCRVLV.js +0 -2
- package/dist/cdn/EFKVMB36.js +0 -2
- package/dist/cdn/FAAQEW6G.js +0 -2
- package/dist/cdn/MOTVD3GS.js +0 -2
- package/dist/cdn/OORHTUDV.js +0 -2
- package/dist/cdn/QHQOBCL5.js +0 -2
- package/dist/cdn/SIBUXQXU.js +0 -2
- package/dist/cdn/SYTC5OFS.js +0 -2
- package/dist/cdn/UK4JBUQZ.js +0 -2
- package/dist/cdn/WTI76WPS.js +0 -2
- package/dist/cdn/ZEYKF5ZX.js +0 -2
- package/dist/cdn/ZLGAOOX7.js +0 -2
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
+
import { c as customElement } from "../../chunks/runtime.js";
|
|
3
|
+
import { LitElement, safeClassMap } from "@arcgis/lumina";
|
|
4
|
+
import { createRef, ref } from "lit/directives/ref.js";
|
|
5
|
+
import { D as getAssignedTextNodesFromSlotEl, k as getTextWidth, E as slotChangeGetTextContent } from "../../chunks/dom.js";
|
|
6
|
+
import { c as createObserver, u as updateRefObserver } from "../../chunks/observers.js";
|
|
7
|
+
import { css, html } from "lit";
|
|
8
|
+
const styles = css`:host{display:block;overflow-wrap:break-word;overflow:hidden;white-space:normal}:host([truncate-position=end]){text-overflow:ellipsis;white-space:nowrap}:host([truncate-position=middle]){white-space:nowrap}.text-container{overflow:inherit;text-overflow:inherit}:host([truncate-position=middle]:not([max-lines])) slot{display:none}:host(:not([truncate-position=middle])) .middle-truncated-text,:host([max-lines]) .middle-truncated-text{display:none}:host([max-lines]) .text-container{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:var(--calcite-internal-text-max-lines, none);white-space:normal}:host([hidden]){display:none}[hidden]{display:none}.assistive-text{position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}`;
|
|
9
|
+
const ELLIPSIS_CHAR = "…";
|
|
10
|
+
const CSS = {
|
|
11
|
+
middleTruncatedText: "middle-truncated-text",
|
|
12
|
+
textContainer: "text-container",
|
|
13
|
+
assistiveText: "assistive-text"
|
|
14
|
+
};
|
|
15
|
+
class Text extends LitElement {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this.assistiveTextSpanRef = createRef();
|
|
19
|
+
this.defaultSlotRef = createRef();
|
|
20
|
+
this.middleTruncatedSpanRef = createRef();
|
|
21
|
+
this.mutationObserver = createObserver("mutation", (mutations) => {
|
|
22
|
+
const assignedTextNodes = getAssignedTextNodesFromSlotEl(this.defaultSlotRef.value);
|
|
23
|
+
if (mutations.some(({ target }) => assignedTextNodes.includes(target))) {
|
|
24
|
+
this.setValue(assignedTextNodes.map((node) => node.textContent).join("").trim());
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
this.resizeObserver = createObserver("resize", () => {
|
|
28
|
+
this.handleTruncation();
|
|
29
|
+
});
|
|
30
|
+
this.renderedText = "";
|
|
31
|
+
}
|
|
32
|
+
static {
|
|
33
|
+
this.properties = { maxLines: [11, {}, { type: Number, reflect: true }], truncatePosition: [3, {}, { reflect: true }] };
|
|
34
|
+
}
|
|
35
|
+
static {
|
|
36
|
+
this.styles = styles;
|
|
37
|
+
}
|
|
38
|
+
connectedCallback() {
|
|
39
|
+
super.connectedCallback();
|
|
40
|
+
this.mutationObserver?.observe(this.el, {
|
|
41
|
+
characterData: true,
|
|
42
|
+
subtree: true
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
willUpdate(changes) {
|
|
46
|
+
if (changes.has("maxLines") && this.hasUpdated) {
|
|
47
|
+
if (!this.maxLines) {
|
|
48
|
+
this.clearTooltipTitle();
|
|
49
|
+
}
|
|
50
|
+
this.updateMaxLinesToken();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
updated(changes) {
|
|
54
|
+
if (changes.has("truncatePosition") && !this.maxLines) {
|
|
55
|
+
this.handleTruncatePositionChange(changes.get("truncatePosition"));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
disconnectedCallback() {
|
|
59
|
+
super.disconnectedCallback();
|
|
60
|
+
this.resizeObserver?.disconnect();
|
|
61
|
+
this.mutationObserver?.disconnect();
|
|
62
|
+
}
|
|
63
|
+
clearTooltipTitle() {
|
|
64
|
+
this.textContainerEl.title = "";
|
|
65
|
+
}
|
|
66
|
+
getTruncatedText(text, maxWidth, font, letterSpacing) {
|
|
67
|
+
let startIndex = 0;
|
|
68
|
+
let endIndex = text.length;
|
|
69
|
+
const truncatedString = (index) => {
|
|
70
|
+
const leftCount = Math.ceil(index / 2);
|
|
71
|
+
const rightCount = Math.floor(index / 2);
|
|
72
|
+
return text.slice(0, leftCount) + ELLIPSIS_CHAR + text.slice(text.length - rightCount);
|
|
73
|
+
};
|
|
74
|
+
while (startIndex < endIndex) {
|
|
75
|
+
const mid = Math.ceil((startIndex + endIndex) / 2);
|
|
76
|
+
const optimalText = truncatedString(mid);
|
|
77
|
+
if (getTextWidth(optimalText, font, letterSpacing) <= maxWidth) {
|
|
78
|
+
startIndex = mid;
|
|
79
|
+
} else {
|
|
80
|
+
endIndex = mid - 1;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const optimalIndex = Math.max(0, startIndex);
|
|
84
|
+
if (optimalIndex <= 1) {
|
|
85
|
+
return ELLIPSIS_CHAR;
|
|
86
|
+
}
|
|
87
|
+
return truncatedString(optimalIndex);
|
|
88
|
+
}
|
|
89
|
+
handleDefaultSlotChange(event) {
|
|
90
|
+
this.setValue(slotChangeGetTextContent(event));
|
|
91
|
+
}
|
|
92
|
+
setValue(value) {
|
|
93
|
+
this.value = value;
|
|
94
|
+
this.renderedText = value;
|
|
95
|
+
this.handleTruncation();
|
|
96
|
+
}
|
|
97
|
+
handleTruncation() {
|
|
98
|
+
if (!this.textContainerEl) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const { truncatePosition, maxLines } = this;
|
|
102
|
+
if (this.isTruncatePositionMiddle()) {
|
|
103
|
+
this.truncateMiddleText();
|
|
104
|
+
this.assistiveTextSpanRef.value.textContent = this.value || "";
|
|
105
|
+
} else if (truncatePosition === "end" || maxLines && maxLines >= 1) {
|
|
106
|
+
this.syncTooltipState();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
hasOverflow() {
|
|
110
|
+
return this.textContainerEl.scrollWidth > this.textContainerEl.clientWidth || this.textContainerEl.scrollHeight > this.textContainerEl.clientHeight;
|
|
111
|
+
}
|
|
112
|
+
syncTooltipState() {
|
|
113
|
+
if (this.hasOverflow()) {
|
|
114
|
+
this.setTooltipTitle();
|
|
115
|
+
} else {
|
|
116
|
+
this.clearTooltipTitle();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
handleTruncatePositionChange(oldValue) {
|
|
120
|
+
const newValue = this.truncatePosition;
|
|
121
|
+
if (oldValue && !newValue) {
|
|
122
|
+
this.clearTooltipTitle();
|
|
123
|
+
} else {
|
|
124
|
+
this.handleTruncation();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
setTooltipTitle() {
|
|
128
|
+
this.textContainerEl.title = this.value || "";
|
|
129
|
+
}
|
|
130
|
+
setMiddleTruncatedText(value) {
|
|
131
|
+
const middleTruncatedTextEl = this.middleTruncatedSpanRef.value;
|
|
132
|
+
if (!middleTruncatedTextEl) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
middleTruncatedTextEl.textContent = value || "";
|
|
136
|
+
}
|
|
137
|
+
truncateMiddleText() {
|
|
138
|
+
requestAnimationFrame(() => {
|
|
139
|
+
if (!this.textContainerEl || !this.textContainerEl.clientWidth || this.maxLines || this.truncatePosition !== "middle") {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const clientWidth = this.textContainerEl.clientWidth;
|
|
143
|
+
const computedStyle = getComputedStyle(this.el);
|
|
144
|
+
const font = computedStyle.font || `${computedStyle.fontSize} ${computedStyle.fontFamily}`;
|
|
145
|
+
const textWidth = getTextWidth(this.value, font, computedStyle.letterSpacing);
|
|
146
|
+
if (textWidth <= clientWidth) {
|
|
147
|
+
this.setMiddleTruncatedText(this.value);
|
|
148
|
+
this.clearTooltipTitle();
|
|
149
|
+
} else {
|
|
150
|
+
const middleTruncatedText = this.getTruncatedText(this.renderedText, clientWidth, font, computedStyle.letterSpacing);
|
|
151
|
+
this.setMiddleTruncatedText(middleTruncatedText);
|
|
152
|
+
this.setTooltipTitle();
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
updateMaxLinesToken() {
|
|
157
|
+
this.textContainerEl?.style.setProperty("--calcite-internal-text-max-lines", this.maxLines?.toString() || null);
|
|
158
|
+
}
|
|
159
|
+
setTextContainerRef(el) {
|
|
160
|
+
updateRefObserver(this.resizeObserver, this.textContainerEl, el);
|
|
161
|
+
this.textContainerEl = el;
|
|
162
|
+
this.updateMaxLinesToken();
|
|
163
|
+
}
|
|
164
|
+
isTruncatePositionMiddle() {
|
|
165
|
+
return this.truncatePosition === "middle" && !this.maxLines;
|
|
166
|
+
}
|
|
167
|
+
render() {
|
|
168
|
+
return html`<div class=${safeClassMap(CSS.textContainer)} ${ref(this.setTextContainerRef)}><slot @slotchange=${this.handleDefaultSlotChange} ${ref(this.defaultSlotRef)}></slot><span aria-hidden=true class=${safeClassMap(CSS.middleTruncatedText)} ${ref(this.middleTruncatedSpanRef)}></span>${this.isTruncatePositionMiddle() && html`<span aria-live=polite class=${safeClassMap(CSS.assistiveText)} ${ref(this.assistiveTextSpanRef)}></span>` || ""}</div>`;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
customElement("calcite-text", Text);
|
|
172
|
+
export {
|
|
173
|
+
Text
|
|
174
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./customElement.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./customElement.js";
|