@evotecit/canopyx 0.3.3 → 0.3.5
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/CanopyX.Html/Assets/canopyx-data.js +5 -4
- package/CanopyX.Html/Assets/canopyx-grid-module.mjs +31 -15
- package/CanopyX.Html/Assets/canopyx-grid.js +31 -15
- package/CanopyX.Html/Assets/canopyx-grouping.js +2 -2
- package/CanopyX.Html/Assets/canopyx-interactive.js +4 -4
- package/CanopyX.Html/Assets/canopyx-labels-de.js +33 -0
- package/CanopyX.Html/Assets/canopyx-labels-es.js +33 -0
- package/CanopyX.Html/Assets/canopyx-labels-fr.js +33 -0
- package/CanopyX.Html/Assets/canopyx-labels-it.js +33 -0
- package/CanopyX.Html/Assets/canopyx-labels-pl.js +33 -0
- package/CanopyX.Html/Assets/canopyx-live.js +2 -2
- package/CanopyX.Html/Assets/canopyx-matrix.css +153 -0
- package/CanopyX.Html/Assets/canopyx-matrix.js +153 -0
- package/CanopyX.Html/Assets/canopyx-module.mjs +4 -4
- package/CanopyX.Html/Assets/canopyx-reporting-module.mjs +32 -16
- package/CanopyX.Html/Assets/canopyx-reporting.js +32 -16
- package/CanopyX.Html/Assets/canopyx-tree-tools.js +3 -2
- package/CanopyX.Html/Assets/canopyx.js +4 -4
- package/JavaScript/grid.d.ts +8 -5
- package/JavaScript/locales/de.mjs +33 -0
- package/JavaScript/locales/es.mjs +33 -0
- package/JavaScript/locales/fr.mjs +33 -0
- package/JavaScript/locales/it.mjs +33 -0
- package/JavaScript/locales/pl.mjs +33 -0
- package/JavaScript/matrix.d.ts +160 -0
- package/README.md +3 -2
- package/package.json +5 -1
|
@@ -60,7 +60,7 @@ function fill(template,values){return template.replace(/\{(\w+)\}/g, (match, nam
|
|
|
60
60
|
const pluralRules=new Map();function plural(template,count,lang){if(!template.startsWith("["))return template;const forms={};for(const match of template.matchAll(/\[(zero|one|two|few|many|other)\]([^[]*)/g)) forms[match[1]] = match[2];
|
|
61
61
|
let rules=pluralRules.get(lang);if(!rules){try{rules=new Intl.PluralRules(lang||"en")}catch(_){rules=new Intl.PluralRules("en")}pluralRules.set(lang,rules)}
|
|
62
62
|
return forms[rules.select(Number(count))]??forms.other??template}
|
|
63
|
-
let DEFAULT_LABELS=Object.freeze({searchPlaceholder:"Search",searchResults:"Search results",searchResultCount:"{count} results",searchResultCountOfTotal:"{count} of {total} results",searchResultCountOfMany:"{count} of many results",searchNoResults:"No results",searchTooShort:"Type at least {min} characters",searchWordTooShort:"Type a word of at least {min} characters",searchFailed:"Search failed: {error}",columns:"Columns",visibleColumns:"Visible columns",resizeColumn:"Resize {column}",columnWidth:"{width} pixels",loading:"Loading…",loadError:"Could not load: {error} (Enter to retry)",queryFailed:"Could not update the view: {error}",showMore:"Show more ({loaded} of {total} loaded)",showMoreUnknownTotal:"Show more ({loaded} loaded)",pageLoaded:"{loaded} of {total} loaded",itemsLoaded:"{count} items",yes:"Yes",no:"No",utcTime:"{time} UTC",localTime:"{time} local time",mountError:"This view could not be displayed: {error}"});function labelsFor(...sources){const labels=Object.assign({},DEFAULT_LABELS);for(const source of sources){if(source==null)continue;if(typeof source!=="object"||Array.isArray(source))throw new Error("CanopyX: labels must be an object of strings.");Object.keys(source).forEach((name)=>{if(!Object.hasOwn(DEFAULT_LABELS,name)&&!/^(?:gridEdit|format|calendar|flow)[A-Z]\w{0,63}$/.test(name)) throw new Error("CanopyX: there is no label '" + name + "'.");
|
|
63
|
+
let DEFAULT_LABELS=Object.freeze({searchPlaceholder:"Search",searchResults:"Search results",searchResultCount:"{count} results",searchResultCountOfTotal:"{count} of {total} results",searchResultCountOfMany:"{count} of many results",searchNoResults:"No results",searchTooShort:"Type at least {min} characters",searchWordTooShort:"Type a word of at least {min} characters",searchFailed:"Search failed: {error}",columns:"Columns",visibleColumns:"Visible columns",resizeColumn:"Resize {column}",columnWidth:"{width} pixels",loading:"Loading…",loadError:"Could not load: {error} (Enter to retry)",queryFailed:"Could not update the view: {error}",showMore:"Show more ({loaded} of {total} loaded)",showMoreUnknownTotal:"Show more ({loaded} loaded)",pageLoaded:"{loaded} of {total} loaded",itemsLoaded:"{count} items",yes:"Yes",no:"No",utcTime:"{time} UTC",localTime:"{time} local time",mountError:"This view could not be displayed: {error}"});function labelsFor(...sources){const labels=Object.assign({},DEFAULT_LABELS);for(const source of sources){if(source==null)continue;if(typeof source!=="object"||Array.isArray(source))throw new Error("CanopyX: labels must be an object of strings.");Object.keys(source).forEach((name)=>{if(!Object.hasOwn(DEFAULT_LABELS,name)&&!/^(?:gridEdit|format|calendar|flow|matrix)[A-Z]\w{0,63}$/.test(name)) throw new Error("CanopyX: there is no label '" + name + "'.");
|
|
64
64
|
if(typeof source[name]!=="string"||!/\S/.test(source[name])) throw new Error("CanopyX: label '" + name + "' must be a string with visible text.");
|
|
65
65
|
if((name==="utcTime"||name==="localTime")&&source[name].indexOf("{time}")<0)throw new Error("CanopyX: label '"+name+"' must hold {time}.");labels[name]=source[name]})}
|
|
66
66
|
return Object.freeze(labels)}
|
|
@@ -504,7 +504,7 @@ if(active>=0){list.children[active].setAttribute("aria-selected","false")}
|
|
|
504
504
|
active=active<0?(delta<0?hits.length-1:0):(active+delta+hits.length)%hits.length;const item=list.children[active];item.setAttribute("aria-selected","true");input.setAttribute("aria-activedescendant",item.id);item.scrollIntoView({block:"nearest"})};input.addEventListener("input",()=>{cancelNavigation();sequence++;clearTimeout(timer);hits=[];close();timer=setTimeout(run,150)});input.addEventListener("keydown",(e)=>{if(e.defaultPrevented||e.isComposing)return;if(e.key==="ArrowDown"||e.key==="ArrowUp"){move(e.key==="ArrowDown"?1:-1)}else if(e.key==="Enter"){if(!list.hidden){choose(active>=0?active:0)}}else if(e.key==="Escape"){cancelNavigation();sequence++;clearTimeout(timer);if(list.hidden){input.value=""}
|
|
505
505
|
close()}else{return}
|
|
506
506
|
e.preventDefault()});input.addEventListener("blur",()=>{cancelNavigation();sequence++;clearTimeout(timer);clearTimeout(blurTimer);blurTimer=setTimeout(close,150)});this.cancelSearch=()=>{cancelNavigation();sequence++;clearTimeout(timer);clearTimeout(blurTimer);hits=[];close()};box.appendChild(input);box.appendChild(list);box.appendChild(status);bar.appendChild(box);this.searchInput=input}});function watchFlyout(anchorElement,panel,isOpen){const position=()=>{if(!isOpen())return;const anchor=anchorElement.getBoundingClientRect(),fixed=getComputedStyle(panel).position==="fixed";const below=Math.max(0,global.innerHeight-anchor.bottom-8);const above=Math.max(0,anchor.top-8);const opensAbove=below<120&&above>below,room=opensAbove?above:below;panel.style.maxHeight=(panel.classList.contains("cx-fb")?room:Math.min(320,room))+ "px";panel.style.top=opensAbove?"auto":fixed?anchor.bottom+"px":"100%";panel.style.bottom=opensAbove?fixed?global.innerHeight-anchor.top+"px":"100%":"auto";const width=panel.getBoundingClientRect().width;panel.style.left=Math.max(8,Math.min(anchor.left,global.innerWidth-width-8))-(fixed?0:anchor.left)+ "px"};global.addEventListener("resize",position);global.addEventListener("scroll",position,true);return{position,dispose:()=>{global.removeEventListener("resize",position);global.removeEventListener("scroll",position,true)}}}
|
|
507
|
-
const PART_URL=typeof document!=="undefined"&&document.currentScript?.src;const PARTS={"tree-tools":["
|
|
507
|
+
const PART_URL=typeof document!=="undefined"&&document.currentScript?.src;const PARTS={"tree-tools":["dbc7cd1bfd91ce63","canopyx-tree-tools.879d4297cd1760d6.js","canopyx-tree-tools.ef7a3fb9c9115a82.css"],"export":["8b99c0b7b0ec37c5","canopyx-export.6989ea36f5d6da7b.js"],"links":["f1ab7e32b501ce37","canopyx-links.d96addeefb3eccf5.js"],"search":["521eebd6e1bbbd35","canopyx-search.14c69f4551c69f23.js"],"link":["fa0c9e888463553b","canopyx-link.4ec39bc39fa6cf50.js","canopyx-link.8435c892613926ac.css"],"highlight":["f39423961654c1e2","canopyx-highlight.a6f93893d36ab343.js","canopyx-highlight.5b6d2e0d979f9f9b.css"],"layouts":["fa8c686f21626884","canopyx-layouts.e7250c82a6abf52e.js","canopyx-layouts.0b75738924533ee8.css"],"record-panel":["bcc06276c7933af6","canopyx-record-panel.a374fb4254f9115c.js","canopyx-record-panel.f3691d54cefaab04.css"]},PART_CODE=new Map(),partName=name=>typeof name==="string"&&/^[a-z][a-z\d-]{0,31}$/.test(name);
|
|
508
508
|
function registerPart(name,part){if(!partName(name)||!part||typeof part.version!=="string"||typeof part.install!=="function"||
|
|
509
509
|
part.requires!==undefined&&!(Array.isArray(part.requires)&&part.requires.every(partName)))throw new Error("CanopyX: invalid part.");PART_CODE.set(name,part)}
|
|
510
510
|
function definePart(View,name,label,context){const parts=View.prototype.parts||={};return parts[name]={name,label,context,parts}}
|
|
@@ -740,5 +740,5 @@ watcher.observe(host)}
|
|
|
740
740
|
function mount(root,automatic){const scope=root||document;const created=[];const showError=(host,err,api,view)=>{if(api){api.destroy();if(host.canopyx===api)delete host.canopyx}
|
|
741
741
|
const message=err&&err.message?err.message:String(err);let labels=DEFAULT_LABELS;for(const attempt of[()=>labelsFor(view&&view.labels,view&&configured.has(view.id)?configured.get(view.id).labels:null),()=>labelsFor(view&&view.labels)]){try{labels=attempt();break}catch(e){labels=DEFAULT_LABELS}}
|
|
742
742
|
const notice=document.createElement("div");notice.className="cx-mount-error";notice.setAttribute("role","alert");setText(notice,fill(labels.mountError,{error:message}));host.classList.add("cx-host");host.setAttribute("data-canopyx-mounted","true");host.setAttribute("data-cx-error",message);host.appendChild(notice);if(global.console)global.console.error(err)};const selector="[data-canopyx-host]:not([data-canopyx-mounted])";(scope.matches?.(selector)?[scope]:scope.querySelectorAll(selector)).forEach((host)=>{const config=host.querySelector("script.cx-config"),mode=host.getAttribute("data-cx-mount");if(!config||(automatic===true&&mode==="manual")){return}
|
|
743
|
-
if(mode==="visible"&&host!==scope&&global.IntersectionObserver)return mountWhenVisible(host);watcher?.unobserve(host);host.setAttribute("data-canopyx-mounted","true");let view=null;try{view=JSON.parse(config.textContent);if(view===Object(view))parsedViews.add(view);const flow=view&&view.kind==="flow"&&typeof FLOW_API==="object";const create=flow?FLOW_API.createFlow:view&&view.type==="grid"&&typeof createDataGrid==="function"?createDataGrid:createTreeGrid;const api=create(host,Object.assign({},view&&configured.get(view.id),flow?{flow:view}:{view}));created.push(api);api.ready.catch((err)=>{if(view.type!=="grid"&&activeGrids.get(host)===api&&host.canopyx===api)showError(host,err,api,view)})}catch(err){showError(host,err,null,view)}});return created}
|
|
744
|
-
global.CanopyX=Object.freeze(Object.assign({protocol:PROTOCOL,createTreeGrid,configure,unconfigure,mount:(root)=>mount(root,false),sources:Object.freeze({inline:inlineSource,sidecar:sidecarSource,remote:remoteSource}),badge:hostBadge,labels:DEFAULT_LABELS,registerExportFormat,use,registerPart,setNonce},typeof GRID_API==="object"?GRID_API:{},typeof FLOW_API==="object"?FLOW_API:{}));const navigation=global.performance&&performance.getEntriesByType?performance.getEntriesByType("navigation")[0]:null;if(document.readyState==="loading"||(document.readyState==="interactive"&&navigation&&navigation.domContentLoadedEventStart===0)){document.addEventListener("DOMContentLoaded",()=>mount(document,true))}else{mount(document,true)}})(typeof window!=="undefined"?window:this);
|
|
743
|
+
if(mode==="visible"&&host!==scope&&global.IntersectionObserver)return mountWhenVisible(host);watcher?.unobserve(host);host.setAttribute("data-canopyx-mounted","true");let view=null;try{view=JSON.parse(config.textContent);if(view===Object(view))parsedViews.add(view);const flow=view&&view.kind==="flow"&&typeof FLOW_API==="object",matrix=view&&view.type==="matrix"&&typeof MATRIX_API==="object";const create=flow?FLOW_API.createFlow:matrix?MATRIX_API.createMatrix:view&&view.type==="grid"&&typeof createDataGrid==="function"?createDataGrid:createTreeGrid;const api=create(host,Object.assign({},view&&configured.get(view.id),flow?{flow:view}:{view}));created.push(api);api.ready.catch((err)=>{if(view.type!=="grid"&&!matrix&&activeGrids.get(host)===api&&host.canopyx===api)showError(host,err,api,view)})}catch(err){showError(host,err,null,view)}});return created}
|
|
744
|
+
global.CanopyX=Object.freeze(Object.assign({protocol:PROTOCOL,createTreeGrid,configure,unconfigure,mount:(root)=>mount(root,false),sources:Object.freeze({inline:inlineSource,sidecar:sidecarSource,remote:remoteSource}),badge:hostBadge,labels:DEFAULT_LABELS,registerExportFormat,use,registerPart,setNonce},typeof GRID_API==="object"?GRID_API:{},typeof FLOW_API==="object"?FLOW_API:{},typeof MATRIX_API==="object"?MATRIX_API:{}));const navigation=global.performance&&performance.getEntriesByType?performance.getEntriesByType("navigation")[0]:null;if(document.readyState==="loading"||(document.readyState==="interactive"&&navigation&&navigation.domContentLoadedEventStart===0)){document.addEventListener("DOMContentLoaded",()=>mount(document,true))}else{mount(document,true)}})(typeof window!=="undefined"?window:this);
|
|
@@ -589,6 +589,39 @@ const labels = Object.freeze({
|
|
|
589
589
|
flowCopied: "Kopiert",
|
|
590
590
|
flowSavedIt: "Ich habe es gespeichert",
|
|
591
591
|
flowShownOnce: "Wird nur einmal angezeigt. Jetzt kopieren.",
|
|
592
|
+
matrixRows: "Zeilen",
|
|
593
|
+
matrixColumns: "Spalten",
|
|
594
|
+
matrixSearch: "Zeilen und Spalten suchen",
|
|
595
|
+
matrixSortBy: "Sortieren nach",
|
|
596
|
+
matrixGroupBy: "Gruppieren nach",
|
|
597
|
+
matrixByLabel: "Name",
|
|
598
|
+
matrixByTotal: "Gesamt",
|
|
599
|
+
matrixAsListed: "Wie aufgeführt",
|
|
600
|
+
matrixNoGrouping: "Keine Gruppen",
|
|
601
|
+
matrixDescending: "Absteigend",
|
|
602
|
+
matrixOnlyProblems: "Nur Probleme",
|
|
603
|
+
matrixHideEmpty: "Leere Zeilen und Spalten ausblenden",
|
|
604
|
+
matrixSize: "{rows} × {columns}",
|
|
605
|
+
matrixShown: "Zeilen: {rows} von {totalRows}, Spalten: {columns} von {totalColumns}",
|
|
606
|
+
matrixAttention: "Erfordert Aufmerksamkeit: {count}",
|
|
607
|
+
matrixLegend: "Zustände",
|
|
608
|
+
matrixFilter: "Filtern",
|
|
609
|
+
matrixClearFilters: "Filter löschen",
|
|
610
|
+
matrixNoMatches: "Keine Zeilen oder Spalten passen.",
|
|
611
|
+
matrixSelf: "Dasselbe Element",
|
|
612
|
+
matrixNoData: "Keine Daten",
|
|
613
|
+
matrixCell: "{row} und {column}: {state}",
|
|
614
|
+
matrixTotal: "Gesamt",
|
|
615
|
+
matrixItemTotal: "{item}: {count}",
|
|
616
|
+
matrixExpandGroup: "{group} aufklappen",
|
|
617
|
+
matrixCollapseGroup: "{group} zuklappen",
|
|
618
|
+
matrixGroupCount: "Elemente: {count}",
|
|
619
|
+
matrixDetails: "Details",
|
|
620
|
+
matrixClose: "Schließen",
|
|
621
|
+
matrixValue: "Wert",
|
|
622
|
+
matrixState: "Zustand",
|
|
623
|
+
matrixAllClear: "Nichts erfordert Aufmerksamkeit",
|
|
624
|
+
matrixShowMore: "Mehr anzeigen",
|
|
592
625
|
});
|
|
593
626
|
const staticLabels = Object.freeze({
|
|
594
627
|
overflowNote: "{shown} Zeilen angezeigt. Gesamtzahl: {total}.",
|
|
@@ -589,6 +589,39 @@ const labels = Object.freeze({
|
|
|
589
589
|
flowCopied: "Copiado",
|
|
590
590
|
flowSavedIt: "Lo he guardado",
|
|
591
591
|
flowShownOnce: "Se muestra solo una vez. Cópielo ahora.",
|
|
592
|
+
matrixRows: "Filas",
|
|
593
|
+
matrixColumns: "Columnas",
|
|
594
|
+
matrixSearch: "Buscar filas y columnas",
|
|
595
|
+
matrixSortBy: "Ordenar por",
|
|
596
|
+
matrixGroupBy: "Agrupar por",
|
|
597
|
+
matrixByLabel: "Nombre",
|
|
598
|
+
matrixByTotal: "Total",
|
|
599
|
+
matrixAsListed: "Como en la lista",
|
|
600
|
+
matrixNoGrouping: "Sin grupos",
|
|
601
|
+
matrixDescending: "Descendente",
|
|
602
|
+
matrixOnlyProblems: "Solo problemas",
|
|
603
|
+
matrixHideEmpty: "Ocultar filas y columnas vacías",
|
|
604
|
+
matrixSize: "{rows} × {columns}",
|
|
605
|
+
matrixShown: "Filas: {rows} de {totalRows}, columnas: {columns} de {totalColumns}",
|
|
606
|
+
matrixAttention: "Requieren atención: {count}",
|
|
607
|
+
matrixLegend: "Estados",
|
|
608
|
+
matrixFilter: "Filtrar",
|
|
609
|
+
matrixClearFilters: "Borrar filtros",
|
|
610
|
+
matrixNoMatches: "Ninguna fila o columna coincide.",
|
|
611
|
+
matrixSelf: "El mismo elemento",
|
|
612
|
+
matrixNoData: "Sin datos",
|
|
613
|
+
matrixCell: "{row} y {column}: {state}",
|
|
614
|
+
matrixTotal: "Total",
|
|
615
|
+
matrixItemTotal: "{item}: {count}",
|
|
616
|
+
matrixExpandGroup: "Expandir {group}",
|
|
617
|
+
matrixCollapseGroup: "Contraer {group}",
|
|
618
|
+
matrixGroupCount: "Elementos: {count}",
|
|
619
|
+
matrixDetails: "Detalles",
|
|
620
|
+
matrixClose: "Cerrar",
|
|
621
|
+
matrixValue: "Valor",
|
|
622
|
+
matrixState: "Estado",
|
|
623
|
+
matrixAllClear: "Nada requiere atención",
|
|
624
|
+
matrixShowMore: "Mostrar más",
|
|
592
625
|
});
|
|
593
626
|
const staticLabels = Object.freeze({
|
|
594
627
|
overflowNote: "Filas mostradas: {shown}. Total: {total}.",
|
|
@@ -589,6 +589,39 @@ const labels = Object.freeze({
|
|
|
589
589
|
flowCopied: "Copié",
|
|
590
590
|
flowSavedIt: "Je l'ai enregistré",
|
|
591
591
|
flowShownOnce: "Affiché une seule fois. Copiez-le maintenant.",
|
|
592
|
+
matrixRows: "Lignes",
|
|
593
|
+
matrixColumns: "Colonnes",
|
|
594
|
+
matrixSearch: "Rechercher des lignes et des colonnes",
|
|
595
|
+
matrixSortBy: "Trier par",
|
|
596
|
+
matrixGroupBy: "Regrouper par",
|
|
597
|
+
matrixByLabel: "Nom",
|
|
598
|
+
matrixByTotal: "Total",
|
|
599
|
+
matrixAsListed: "Comme listé",
|
|
600
|
+
matrixNoGrouping: "Aucun groupe",
|
|
601
|
+
matrixDescending: "Décroissant",
|
|
602
|
+
matrixOnlyProblems: "Problèmes uniquement",
|
|
603
|
+
matrixHideEmpty: "Masquer les lignes et colonnes vides",
|
|
604
|
+
matrixSize: "{rows} × {columns}",
|
|
605
|
+
matrixShown: "Lignes : {rows} sur {totalRows}, colonnes : {columns} sur {totalColumns}",
|
|
606
|
+
matrixAttention: "À examiner : {count}",
|
|
607
|
+
matrixLegend: "États",
|
|
608
|
+
matrixFilter: "Filtrer",
|
|
609
|
+
matrixClearFilters: "Effacer les filtres",
|
|
610
|
+
matrixNoMatches: "Aucune ligne ni colonne ne correspond.",
|
|
611
|
+
matrixSelf: "Même élément",
|
|
612
|
+
matrixNoData: "Aucune donnée",
|
|
613
|
+
matrixCell: "{row} et {column} : {state}",
|
|
614
|
+
matrixTotal: "Total",
|
|
615
|
+
matrixItemTotal: "{item} : {count}",
|
|
616
|
+
matrixExpandGroup: "Développer {group}",
|
|
617
|
+
matrixCollapseGroup: "Réduire {group}",
|
|
618
|
+
matrixGroupCount: "Éléments : {count}",
|
|
619
|
+
matrixDetails: "Détails",
|
|
620
|
+
matrixClose: "Fermer",
|
|
621
|
+
matrixValue: "Valeur",
|
|
622
|
+
matrixState: "État",
|
|
623
|
+
matrixAllClear: "Rien à examiner",
|
|
624
|
+
matrixShowMore: "Afficher plus",
|
|
592
625
|
});
|
|
593
626
|
const staticLabels = Object.freeze({
|
|
594
627
|
overflowNote: "{shown} lignes affichées sur {total}.",
|
|
@@ -589,6 +589,39 @@ const labels = Object.freeze({
|
|
|
589
589
|
flowCopied: "Copiato",
|
|
590
590
|
flowSavedIt: "L'ho salvato",
|
|
591
591
|
flowShownOnce: "Mostrato una sola volta. Copialo ora.",
|
|
592
|
+
matrixRows: "Righe",
|
|
593
|
+
matrixColumns: "Colonne",
|
|
594
|
+
matrixSearch: "Cerca righe e colonne",
|
|
595
|
+
matrixSortBy: "Ordina per",
|
|
596
|
+
matrixGroupBy: "Raggruppa per",
|
|
597
|
+
matrixByLabel: "Nome",
|
|
598
|
+
matrixByTotal: "Totale",
|
|
599
|
+
matrixAsListed: "Come elencato",
|
|
600
|
+
matrixNoGrouping: "Nessun gruppo",
|
|
601
|
+
matrixDescending: "Decrescente",
|
|
602
|
+
matrixOnlyProblems: "Solo problemi",
|
|
603
|
+
matrixHideEmpty: "Nascondi righe e colonne vuote",
|
|
604
|
+
matrixSize: "{rows} × {columns}",
|
|
605
|
+
matrixShown: "Righe: {rows} di {totalRows}, colonne: {columns} di {totalColumns}",
|
|
606
|
+
matrixAttention: "Richiedono attenzione: {count}",
|
|
607
|
+
matrixLegend: "Stati",
|
|
608
|
+
matrixFilter: "Filtra",
|
|
609
|
+
matrixClearFilters: "Cancella filtri",
|
|
610
|
+
matrixNoMatches: "Nessuna riga o colonna corrisponde.",
|
|
611
|
+
matrixSelf: "Stesso elemento",
|
|
612
|
+
matrixNoData: "Nessun dato",
|
|
613
|
+
matrixCell: "{row} e {column}: {state}",
|
|
614
|
+
matrixTotal: "Totale",
|
|
615
|
+
matrixItemTotal: "{item}: {count}",
|
|
616
|
+
matrixExpandGroup: "Espandi {group}",
|
|
617
|
+
matrixCollapseGroup: "Comprimi {group}",
|
|
618
|
+
matrixGroupCount: "Elementi: {count}",
|
|
619
|
+
matrixDetails: "Dettagli",
|
|
620
|
+
matrixClose: "Chiudi",
|
|
621
|
+
matrixValue: "Valore",
|
|
622
|
+
matrixState: "Stato",
|
|
623
|
+
matrixAllClear: "Niente richiede attenzione",
|
|
624
|
+
matrixShowMore: "Mostra altro",
|
|
592
625
|
});
|
|
593
626
|
const staticLabels = Object.freeze({
|
|
594
627
|
overflowNote: "Righe mostrate: {shown} su {total}.",
|
|
@@ -589,6 +589,39 @@ const labels = Object.freeze({
|
|
|
589
589
|
flowCopied: "Skopiowano",
|
|
590
590
|
flowSavedIt: "Mam to zapisane",
|
|
591
591
|
flowShownOnce: "Widoczne tylko raz. Skopiuj teraz.",
|
|
592
|
+
matrixRows: "Wiersze",
|
|
593
|
+
matrixColumns: "Kolumny",
|
|
594
|
+
matrixSearch: "Szukaj wierszy i kolumn",
|
|
595
|
+
matrixSortBy: "Sortuj według",
|
|
596
|
+
matrixGroupBy: "Grupuj według",
|
|
597
|
+
matrixByLabel: "Nazwa",
|
|
598
|
+
matrixByTotal: "Razem",
|
|
599
|
+
matrixAsListed: "Jak na liście",
|
|
600
|
+
matrixNoGrouping: "Bez grup",
|
|
601
|
+
matrixDescending: "Malejąco",
|
|
602
|
+
matrixOnlyProblems: "Tylko problemy",
|
|
603
|
+
matrixHideEmpty: "Ukryj puste wiersze i kolumny",
|
|
604
|
+
matrixSize: "{rows} × {columns}",
|
|
605
|
+
matrixShown: "Wiersze: {rows} z {totalRows}, kolumny: {columns} z {totalColumns}",
|
|
606
|
+
matrixAttention: "Wymaga uwagi: {count}",
|
|
607
|
+
matrixLegend: "Stany",
|
|
608
|
+
matrixFilter: "Filtruj",
|
|
609
|
+
matrixClearFilters: "Wyczyść filtry",
|
|
610
|
+
matrixNoMatches: "Brak pasujących wierszy lub kolumn.",
|
|
611
|
+
matrixSelf: "Ten sam element",
|
|
612
|
+
matrixNoData: "Brak danych",
|
|
613
|
+
matrixCell: "{row} i {column}: {state}",
|
|
614
|
+
matrixTotal: "Razem",
|
|
615
|
+
matrixItemTotal: "{item}: {count}",
|
|
616
|
+
matrixExpandGroup: "Rozwiń {group}",
|
|
617
|
+
matrixCollapseGroup: "Zwiń {group}",
|
|
618
|
+
matrixGroupCount: "Elementy: {count}",
|
|
619
|
+
matrixDetails: "Szczegóły",
|
|
620
|
+
matrixClose: "Zamknij",
|
|
621
|
+
matrixValue: "Wartość",
|
|
622
|
+
matrixState: "Stan",
|
|
623
|
+
matrixAllClear: "Nic nie wymaga uwagi",
|
|
624
|
+
matrixShowMore: "Pokaż więcej",
|
|
592
625
|
});
|
|
593
626
|
const staticLabels = Object.freeze({
|
|
594
627
|
overflowNote: "Pokazano {shown} z {total} wierszy.",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(global){"use strict";const installed=new WeakSet();const part={version:"
|
|
1
|
+
(function(global){"use strict";const installed=new WeakSet();const part={version:"e49f69556b65916b",install(context){if(installed.has(context.DataGrid.prototype))return;const{DataGrid,h,setText,fill,gridButton,gridIcon,gridQuery,gridResultShape,gridQueryRows,gridCompare,gridOrder,gridIdOrder,validateGridRows,validateGridPage,validateGridCursorPage,gridFreeze,requireIdentifier,checkDocument,cellValue,PROTOCOL,GRID_REPORTING,VIEW_MODES,inlineGridSource}=context;const LIVE_KEYS=new Set(["stableOrder","flash","batchMs","pollMs","load","announce","pauseWhenHidden"]);const LIVE_MAX_ROWS=100000;function liveOptions(view,options){const read=value=>{if(value===undefined||value===true||value===false)return{};if(!value||typeof value!=="object"||Array.isArray(value)||Object.keys(value).some(key=>!LIVE_KEYS.has(key)))
|
|
2
2
|
throw new Error("CanopyX: live takes stableOrder, flash, batchMs, pollMs, load, announce and pauseWhenHidden.");return value};const merged=options.live===false?{}:{...read(view.live),...read(options.live)},flash=merged.flash;const integer=(value,min,max)=>value===undefined||Number.isInteger(value)&&value>=min&&value<=max;if(["stableOrder","announce","pauseWhenHidden"].some(key=>merged[key]!==undefined&&typeof merged[key]!=="boolean")||
|
|
3
3
|
!(flash===undefined||typeof flash==="boolean"||flash&&typeof flash==="object"&&Object.keys(flash).every(key=>key==="durationMs")&&integer(flash.durationMs,100,10000))||
|
|
4
4
|
!integer(merged.batchMs,0,60000)||!(merged.pollMs===undefined||merged.pollMs===0||integer(merged.pollMs,250,86400000))||
|
|
@@ -19,7 +19,7 @@ function liveDiff(rows,current){const add=[],keep=new Set();for(const row of row
|
|
|
19
19
|
return{add,update:[],remove:[...current.keys()].filter(id=>!keep.has(id))}}
|
|
20
20
|
const liveCopy=value=>JSON.parse(JSON.stringify(value));function liveColumns(view){return new Map(view.columns.map(column=>[column.id,column]))}
|
|
21
21
|
function liveComparer(grid,query){const columns=liveColumns(grid.view),compare=GRID_REPORTING.compare?.(grid.view)||gridCompare;const sorts=query.sort.map(sort=>[columns.get(sort.column),sort.direction]);return(a,b)=>{for(const[column,direction]of sorts){const result=compare(a,b,column,direction);if(result)return result}
|
|
22
|
-
return
|
|
22
|
+
return gridIdOrder(a.id,b.id)}}
|
|
23
23
|
function liveMatcher(grid,query){const columns=liveColumns(grid.view),unsorted={...query,sort:[]};const view={columns:grid.view.columns,searchColumns:grid.view.searchColumns,rows:null};return row=>{view.rows=[row];return gridQueryRows(view,unsorted,columns,false).length===1}}
|
|
24
24
|
function liveIndexOrder(order){order.at=new Map();order.ids.forEach((id,index)=>order.at.set(id,index));return order}
|
|
25
25
|
Object.assign(DataGrid.prototype,{liveRows(){if(this.liveRowsOf!==this.view.rows){this.liveRowMap=new Map();for(const row of this.view.rows)this.liveRowMap.set(row.id,row);this.liveRowsOf=this.view.rows}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/* The matrix view: a sticky header with column labels written upwards,sticky row headers and totals,windowed cells. */
|
|
2
|
+
.cx-matrix-host{display:block;}
|
|
3
|
+
.cx-matrix [hidden]{display:none !important;}
|
|
4
|
+
.cx-matrix{display:flex;flex-direction:column;gap:var(--cx-size-8px);box-sizing:border-box;max-height:100%;font:var(--cx-font-size)/1.35 var(--cx-font);color:var(--cx-text);
|
|
5
|
+
--mx-line:color-mix(in srgb,var(--cx-line) 70%,var(--cx-surface));--mx-none:color-mix(in srgb,var(--cx-muted) 42%,var(--cx-surface));
|
|
6
|
+
--mx-raised:color-mix(in srgb,var(--cx-shadow-ink) 18%,transparent);}
|
|
7
|
+
.cx-mx-bar{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:var(--cx-size-8px);}
|
|
8
|
+
.cx-mx-input{box-sizing:border-box;height:var(--cx-size-32px);padding:0 var(--cx-size-10px);font:inherit;color:var(--cx-text);background:var(--cx-surface);
|
|
9
|
+
border:var(--cx-size-1px) solid var(--cx-control-border);border-radius:var(--cx-radius-sm);color-scheme:inherit;}
|
|
10
|
+
.cx-mx-search{flex:1 1 var(--cx-size-180px);max-width:var(--cx-size-320px);}
|
|
11
|
+
.cx-mx-button{box-sizing:border-box;min-height:var(--cx-size-32px);padding:0 var(--cx-size-12px);font:inherit;color:var(--cx-text);background:var(--cx-surface);
|
|
12
|
+
border:var(--cx-size-1px) solid var(--cx-control-border);border-radius:var(--cx-radius-sm);cursor:pointer;}
|
|
13
|
+
.cx-mx-button:hover{background:var(--cx-hover-bg);}
|
|
14
|
+
.cx-mx-button.cx-mx-active{border-color:var(--cx-accent);color:var(--cx-accent-text);}
|
|
15
|
+
.cx-mx-switch{display:inline-flex;align-items:center;gap:var(--cx-size-6px);min-height:var(--cx-size-24px);cursor:pointer;}
|
|
16
|
+
.cx-mx-check{width:var(--cx-size-16px);height:var(--cx-size-16px);margin:0;accent-color:var(--cx-accent);}
|
|
17
|
+
.cx-mx-summary{margin-inline-start:auto;color:var(--cx-muted);font-size:var(--cx-size-13px);font-variant-numeric:tabular-nums;}
|
|
18
|
+
.cx-mx-panel{position:absolute;top:calc(100% + var(--cx-size-4px));inset-inline-start:0;z-index:30;box-sizing:border-box;width:min(var(--cx-size-340px),100%);max-height:var(--cx-size-60vh);
|
|
19
|
+
overflow:auto;display:grid;gap:var(--cx-size-10px);padding:var(--cx-size-12px);background:var(--cx-surface);border:var(--cx-size-1px) solid var(--cx-line-strong);
|
|
20
|
+
border-radius:var(--cx-radius);box-shadow:0 var(--cx-size-8px) var(--cx-size-24px) color-mix(in srgb,var(--cx-shadow-ink) 16%,transparent);}
|
|
21
|
+
.cx-mx-field{display:grid;gap:var(--cx-size-4px);font-size:var(--cx-size-13px);color:var(--cx-muted);}
|
|
22
|
+
.cx-mx-field .cx-mx-input{color:var(--cx-text);}
|
|
23
|
+
.cx-mx-facet{display:grid;gap:var(--cx-size-4px);margin:0;padding:0;border:0;min-width:0;}
|
|
24
|
+
.cx-mx-facet legend{padding:0 0 var(--cx-size-4px);font-size:var(--cx-size-13px);color:var(--cx-muted);}
|
|
25
|
+
.cx-mx-keycount{color:var(--cx-muted);font-variant-numeric:tabular-nums;margin-inline-start:var(--cx-size-4px);}
|
|
26
|
+
.cx-mx-legend{display:flex;flex-wrap:wrap;gap:var(--cx-size-6px) var(--cx-size-16px);font-size:var(--cx-size-13px);}
|
|
27
|
+
.cx-mx-key{display:inline-flex;align-items:center;gap:var(--cx-size-6px);}
|
|
28
|
+
.cx-mx-swatch{display:inline-flex;align-items:center;justify-content:center;width:var(--cx-size-20px);height:var(--cx-size-20px);border-radius:var(--cx-radius-sm);
|
|
29
|
+
border:var(--cx-size-1px) solid var(--mx-line);flex:none;}
|
|
30
|
+
.cx-mx-swatch.cx-mx-none{background:var(--cx-surface);}
|
|
31
|
+
.cx-mx-swatch.cx-mx-none::after{content:"";width:var(--cx-size-3px);height:var(--cx-size-3px);border-radius:50%;background:var(--mx-none);}
|
|
32
|
+
.cx-mx-scroll{position:relative;flex:0 1 auto;box-sizing:border-box;width:fit-content;max-width:100%;min-height:0;max-height:var(--cx-size-100vh);overflow:auto;background:var(--cx-surface);border:var(--cx-size-1px) solid var(--cx-line);border-radius:var(--cx-radius);
|
|
33
|
+
overscroll-behavior:contain;scrollbar-color:var(--cx-scrollbar-thumb,auto) var(--cx-scrollbar-track,auto);}
|
|
34
|
+
.cx-mx-head{position:sticky;top:0;z-index:3;width:var(--mx-content-w);background:var(--cx-head-bg);}
|
|
35
|
+
.cx-mx-head.cx-mx-raised{box-shadow:0 var(--cx-size-6px) var(--cx-size-8px) calc(var(--cx-size-6px) * -1) var(--mx-raised);}
|
|
36
|
+
.cx-mx-band,.cx-mx-hrow,.cx-mx-frow{position:relative;display:flex;}
|
|
37
|
+
.cx-mx-band{height:var(--mx-band-h);border-bottom:var(--cx-size-1px) solid var(--mx-line);}
|
|
38
|
+
.cx-mx-hrow{height:var(--mx-head-h);border-bottom:var(--cx-size-1px) solid var(--cx-line);}
|
|
39
|
+
.cx-mx-spacer{flex:none;width:var(--mx-cols-w);}
|
|
40
|
+
.cx-mx-corner{position:sticky;inset-inline-start:0;z-index:2;box-sizing:border-box;flex:none;width:var(--mx-head-w);display:flex;flex-direction:column;justify-content:flex-end;
|
|
41
|
+
gap:var(--cx-size-2px);padding:var(--cx-size-6px) var(--cx-size-10px);background:var(--cx-head-bg);border-inline-end:var(--cx-size-1px) solid var(--cx-line);
|
|
42
|
+
font-size:var(--cx-size-12px);font-weight:600;color:var(--cx-muted);}
|
|
43
|
+
.cx-mx-corner-columns{align-self:flex-end;}
|
|
44
|
+
.cx-mx-corner-columns::after{content:" \2192";}
|
|
45
|
+
.cx-mx-corner-rows::after{content:" \2193";}
|
|
46
|
+
.cx-mx-corner-columns:dir(rtl)::after{content:" \2190";}
|
|
47
|
+
.cx-mx-hcell{position:absolute;top:0;bottom:0;box-sizing:border-box;width:var(--mx-cell-w);contain:strict;display:flex;align-items:flex-end;justify-content:center;padding-bottom:var(--cx-size-6px);
|
|
48
|
+
border-inline-end:var(--cx-size-1px) solid var(--mx-line);font-size:var(--cx-size-12px);}
|
|
49
|
+
.cx-mx-vlabel{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-height:calc(var(--mx-head-h) - var(--cx-size-12px));}
|
|
50
|
+
.cx-mx-bcell{position:absolute;top:0;bottom:0;box-sizing:border-box;display:flex;align-items:center;padding:0 var(--cx-size-4px);border-inline-end:var(--cx-size-1px) solid var(--cx-line);
|
|
51
|
+
overflow:hidden;font-size:var(--cx-size-12px);font-weight:600;}
|
|
52
|
+
.cx-mx-bandcorner,.cx-mx-bandend{background:var(--cx-head-bg);}
|
|
53
|
+
.cx-mx-bcell .cx-mx-toggle{max-width:100%;overflow:hidden;}
|
|
54
|
+
.cx-mx-bclip .cx-mx-toggle{visibility:hidden;}
|
|
55
|
+
.cx-mx-total{position:sticky;inset-inline-end:0;z-index:2;box-sizing:border-box;flex:none;width:var(--mx-total-w);display:flex;align-items:center;justify-content:flex-end;
|
|
56
|
+
padding:0 var(--cx-size-10px);background:var(--cx-surface);border-inline-start:var(--cx-size-1px) solid var(--cx-line);font-variant-numeric:tabular-nums;font-weight:600;}
|
|
57
|
+
.cx-mx-htotal{background:var(--cx-head-bg);align-items:flex-end;padding-bottom:var(--cx-size-6px);font-size:var(--cx-size-12px);color:var(--cx-muted);}
|
|
58
|
+
.cx-mx-total.cx-mx-zero,.cx-mx-fcell.cx-mx-zero{font-weight:400;color:var(--cx-muted);}
|
|
59
|
+
.cx-mx-body{position:relative;width:var(--mx-content-w);}
|
|
60
|
+
.cx-mx-row{position:absolute;top:0;inset-inline-start:0;display:flex;contain:layout style;width:var(--mx-content-w);height:var(--mx-row-h);box-sizing:border-box;border-bottom:var(--cx-size-1px) solid var(--mx-line);}
|
|
61
|
+
.cx-mx-rowhead{position:sticky;inset-inline-start:0;z-index:2;box-sizing:border-box;flex:none;width:var(--mx-head-w);display:flex;align-items:center;gap:var(--cx-size-6px);
|
|
62
|
+
min-width:0;padding:0 var(--cx-size-10px);background:var(--cx-surface);border-inline-end:var(--cx-size-1px) solid var(--cx-line);white-space:nowrap;overflow:hidden;}
|
|
63
|
+
.cx-mx-member .cx-mx-rowhead{padding-inline-start:var(--cx-size-24px);}
|
|
64
|
+
.cx-mx-label{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;}
|
|
65
|
+
.cx-mx-rowhead > .cx-mx-label{flex:none;max-width:100%;}
|
|
66
|
+
.cx-mx-sub{color:var(--cx-muted);font-size:var(--cx-size-12px);overflow:hidden;text-overflow:ellipsis;}
|
|
67
|
+
.cx-mx-heading{background:var(--cx-head-bg);}
|
|
68
|
+
.cx-mx-heading .cx-mx-rowhead,.cx-mx-rolledrow .cx-mx-rowhead{width:auto;min-width:var(--mx-head-w);background:var(--cx-head-bg);font-weight:600;}
|
|
69
|
+
.cx-mx-heading .cx-mx-total,.cx-mx-rolledrow .cx-mx-total{background:var(--cx-head-bg);}
|
|
70
|
+
.cx-mx-toggle{display:inline-flex;align-items:center;gap:var(--cx-size-6px);min-width:0;min-height:var(--cx-size-24px);padding:0;font:inherit;color:inherit;background:none;border:0;cursor:pointer;}
|
|
71
|
+
.cx-mx-toggle::before{content:"";flex:none;width:0;height:0;border-block:var(--cx-size-4px) solid transparent;border-inline-start:var(--cx-size-6px) solid currentColor;transition:transform .12s;}
|
|
72
|
+
.cx-mx-toggle[aria-expanded="true"]::before{transform:rotate(90deg);}
|
|
73
|
+
.cx-mx-toggle:dir(rtl)[aria-expanded="true"]::before{transform:rotate(-90deg);}
|
|
74
|
+
.cx-mx-hcell .cx-mx-toggle{flex-direction:column;}
|
|
75
|
+
.cx-mx-cell{position:absolute;top:0;box-sizing:border-box;width:var(--mx-cell-w);height:100%;contain:strict;display:flex;align-items:center;justify-content:center;gap:var(--cx-size-2px);
|
|
76
|
+
border-inline-end:var(--cx-size-1px) solid var(--mx-line);font-size:var(--cx-size-11px);font-variant-numeric:tabular-nums;cursor:pointer;color:var(--cx-muted);}
|
|
77
|
+
.cx-mx-cell.cx-tone-danger{color:var(--cx-tone-danger);}
|
|
78
|
+
.cx-mx-cell.cx-tone-warning{color:var(--cx-tone-warning);}
|
|
79
|
+
.cx-mx-cell.cx-tone-info{color:var(--cx-tone-info);}
|
|
80
|
+
.cx-mx-cell.cx-tone-success{color:var(--cx-tone-success);}
|
|
81
|
+
.cx-mx-cell.cx-toned{color:var(--cx-t);}
|
|
82
|
+
.cx-mx-cell.cx-tone-success:not(.cx-mx-attn){color:var(--cx-quiet);}
|
|
83
|
+
.cx-mx-cell.cx-mx-none{color:var(--mx-none);}
|
|
84
|
+
.cx-mx-cell.cx-mx-attn{background:var(--mx-bg,var(--cx-hover-bg));font-weight:600;}
|
|
85
|
+
.cx-mx-attn.cx-tone-danger{--mx-bg:var(--cx-tone-danger-bg);}
|
|
86
|
+
.cx-mx-attn.cx-tone-warning{--mx-bg:var(--cx-tone-warning-bg);}
|
|
87
|
+
.cx-mx-attn.cx-tone-info{--mx-bg:var(--cx-tone-info-bg);}
|
|
88
|
+
.cx-mx-attn.cx-tone-success{--mx-bg:var(--cx-tone-success-bg);}
|
|
89
|
+
.cx-mx-attn.cx-toned{color:var(--cx-t);--mx-bg:var(--cx-t-bg,color-mix(in srgb,var(--cx-t) 12%,var(--cx-surface)));}
|
|
90
|
+
.cx-host[data-cx-theme="dark"] .cx-mx-attn.cx-tone-danger{--mx-bg:color-mix(in srgb,var(--cx-tone-danger-bg) 62%,var(--cx-surface));}
|
|
91
|
+
@media (prefers-color-scheme:dark){.cx-host[data-cx-theme="auto"] .cx-mx-attn.cx-tone-danger{--mx-bg:color-mix(in srgb,var(--cx-tone-danger-bg) 62%,var(--cx-surface));}}
|
|
92
|
+
.cx-mx-cell.cx-mx-self{cursor:default;background:repeating-linear-gradient(135deg,transparent 0 var(--cx-size-4px),var(--mx-line) var(--cx-size-4px) var(--cx-size-5px));}
|
|
93
|
+
.cx-mx-cell.cx-mx-rolled{box-shadow:inset 0 0 0 var(--cx-size-1px) var(--mx-line);}
|
|
94
|
+
.cx-mx-canvas{position:absolute;top:0;cursor:pointer;}
|
|
95
|
+
.cx-mx-cell.cx-mx-focus{z-index:1;background:transparent;border:0;cursor:pointer;}
|
|
96
|
+
.cx-mx-hover{position:absolute;top:0;z-index:1;box-sizing:border-box;width:var(--mx-cell-w);height:100%;pointer-events:none;box-shadow:inset 0 0 0 var(--cx-size-2px) var(--cx-accent);}
|
|
97
|
+
.cx-mx-gridline{color:var(--mx-line);}
|
|
98
|
+
.cx-mx-symbol{width:var(--cx-size-14px);height:var(--cx-size-14px);flex:none;}
|
|
99
|
+
.cx-mx-swatch .cx-mx-symbol{width:var(--cx-size-13px);height:var(--cx-size-13px);}
|
|
100
|
+
.cx-mx-value{overflow:hidden;white-space:nowrap;}
|
|
101
|
+
.cx-mx-foot{position:sticky;bottom:0;z-index:3;width:var(--mx-content-w);background:var(--cx-head-bg);border-top:var(--cx-size-1px) solid var(--cx-line-strong);}
|
|
102
|
+
.cx-mx-foot.cx-mx-raised{box-shadow:0 calc(var(--cx-size-6px) * -1) var(--cx-size-8px) calc(var(--cx-size-6px) * -1) var(--mx-raised);}
|
|
103
|
+
.cx-mx-frow{height:var(--mx-row-h);}
|
|
104
|
+
.cx-mx-foothead{background:var(--cx-head-bg);font-weight:600;}
|
|
105
|
+
.cx-mx-fcell{position:absolute;top:0;bottom:0;box-sizing:border-box;width:var(--mx-cell-w);contain:strict;display:flex;align-items:center;justify-content:center;
|
|
106
|
+
border-inline-end:var(--cx-size-1px) solid var(--mx-line);font-size:var(--cx-size-11px);font-weight:600;font-variant-numeric:tabular-nums;}
|
|
107
|
+
.cx-mx-foot .cx-mx-total{background:var(--cx-head-bg);}
|
|
108
|
+
.cx-matrix :is(.cx-mx-cell,.cx-mx-rowhead,.cx-mx-hcell,.cx-mx-total,.cx-mx-fcell,.cx-mx-corner):focus-visible{outline:var(--cx-size-2px) solid var(--cx-accent);outline-offset:calc(var(--cx-size-2px) * -1);z-index:4;}
|
|
109
|
+
.cx-mx-empty{padding:var(--cx-size-24px);text-align:center;color:var(--cx-muted);border:var(--cx-size-1px) dashed var(--cx-line);border-radius:var(--cx-radius);}
|
|
110
|
+
.cx-mx-tip{position:absolute;z-index:20;box-sizing:border-box;max-width:var(--cx-size-320px);padding:var(--cx-size-8px) var(--cx-size-10px);pointer-events:none;
|
|
111
|
+
background:var(--cx-surface);border:var(--cx-size-1px) solid var(--cx-line-strong);border-radius:var(--cx-radius);font-size:var(--cx-size-13px);
|
|
112
|
+
box-shadow:0 var(--cx-size-4px) var(--cx-size-16px) color-mix(in srgb,var(--cx-shadow-ink) 14%,transparent);}
|
|
113
|
+
.cx-matrix{position:relative;}
|
|
114
|
+
.cx-mx-tiptitle{font-weight:600;margin-bottom:var(--cx-size-4px);}
|
|
115
|
+
.cx-mx-tiplist,.cx-mx-details{display:grid;grid-template-columns:auto 1fr;gap:var(--cx-size-2px) var(--cx-size-10px);margin:0;}
|
|
116
|
+
.cx-mx-tiplist dt,.cx-mx-details dt{color:var(--cx-muted);}
|
|
117
|
+
.cx-mx-tiplist dd,.cx-mx-details dd{margin:0;overflow-wrap:anywhere;}
|
|
118
|
+
.cx-mx-dialog{box-sizing:border-box;width:min(var(--cx-size-420px),calc(100vw - var(--cx-size-32px)));padding:var(--cx-size-16px);color:var(--cx-text);background:var(--cx-surface);
|
|
119
|
+
border:var(--cx-size-1px) solid var(--cx-line-strong);border-radius:var(--cx-radius);}
|
|
120
|
+
.cx-mx-dialog::backdrop{background:color-mix(in srgb,var(--cx-shadow-ink) 35%,transparent);}
|
|
121
|
+
.cx-mx-dialoghead{display:flex;align-items:center;gap:var(--cx-size-10px);margin-bottom:var(--cx-size-12px);}
|
|
122
|
+
.cx-mx-dialogtitle{margin:0;font-size:var(--cx-size-17px);}
|
|
123
|
+
.cx-mx-dialog .cx-mx-button{margin-top:var(--cx-size-16px);}
|
|
124
|
+
.cx-mx-cards{display:grid;align-content:start;gap:var(--cx-size-8px);flex:0 1 auto;min-height:0;max-height:var(--cx-size-100vh);overflow:auto;overscroll-behavior:contain;}
|
|
125
|
+
.cx-mx-cardlist,.cx-mx-cardcells{list-style:none;margin:0;padding:0;display:grid;gap:var(--cx-size-8px);}
|
|
126
|
+
.cx-mx-card{padding:var(--cx-size-10px) var(--cx-size-12px);border:var(--cx-size-1px) solid var(--cx-line);border-radius:var(--cx-radius);background:var(--cx-surface);}
|
|
127
|
+
.cx-mx-cardgroup{padding:var(--cx-size-4px) 0 0;font-size:var(--cx-size-13px);font-weight:600;color:var(--cx-muted);}
|
|
128
|
+
.cx-mx-cardhead{display:flex;align-items:center;justify-content:space-between;gap:var(--cx-size-8px);font-weight:600;}
|
|
129
|
+
.cx-mx-card .cx-mx-total{position:static;width:auto;padding:0;border:0;background:none;}
|
|
130
|
+
.cx-mx-cardcells{gap:var(--cx-size-4px);margin-top:var(--cx-size-6px);}
|
|
131
|
+
.cx-mx-cardcell{display:flex;align-items:center;gap:var(--cx-size-8px);font-size:var(--cx-size-13px);}
|
|
132
|
+
.cx-mx-print{display:none;}
|
|
133
|
+
.cx-mx-phone .cx-mx-input,.cx-mx-phone .cx-mx-button{min-height:var(--cx-size-44px);height:auto;}
|
|
134
|
+
.cx-mx-phone .cx-mx-search{max-width:none;flex-basis:100%;}
|
|
135
|
+
.cx-mx-phone .cx-mx-switch{min-height:var(--cx-size-44px);}
|
|
136
|
+
.cx-mx-phone .cx-mx-rowhead .cx-mx-sub:not(.cx-mx-toggle .cx-mx-sub){display:none;}
|
|
137
|
+
.cx-mx-phone .cx-mx-total{padding:0 var(--cx-size-6px);}
|
|
138
|
+
.cx-mx-phone .cx-mx-summary{margin-inline-start:0;flex-basis:100%;}
|
|
139
|
+
@media print{
|
|
140
|
+
.cx-matrix .cx-mx-bar,.cx-matrix .cx-mx-scroll,.cx-matrix .cx-mx-cards,.cx-matrix .cx-mx-tip{display:none !important;}
|
|
141
|
+
.cx-matrix .cx-mx-print{display:block;}
|
|
142
|
+
.cx-matrix-host{max-height:none !important;}
|
|
143
|
+
.cx-mx-printtable{border-collapse:collapse;font-size:var(--cx-size-11px);}
|
|
144
|
+
.cx-mx-printtable :is(th,td){border:var(--cx-size-1px) solid var(--cx-line);padding:var(--cx-size-2px) var(--cx-size-4px);text-align:center;}
|
|
145
|
+
.cx-mx-printtable th[scope="row"]{text-align:start;}
|
|
146
|
+
.cx-mx-printtable caption{text-align:start;font-weight:600;padding-bottom:var(--cx-size-6px);}
|
|
147
|
+
.cx-mx-printattn{font-weight:700;}
|
|
148
|
+
}
|
|
149
|
+
@media (forced-colors:active){
|
|
150
|
+
.cx-mx-cell.cx-mx-attn{border:var(--cx-size-1px) solid CanvasText;}
|
|
151
|
+
.cx-matrix :is(.cx-mx-cell,.cx-mx-rowhead,.cx-mx-hcell):focus-visible{outline-color:Highlight;}
|
|
152
|
+
}
|
|
153
|
+
@media (prefers-reduced-motion:reduce){.cx-mx-toggle::before{transition:none;}}
|