UNPKG

@adaptabletools/adaptable

Version:

Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements

554 lines (553 loc) 16.9 kB
import { jsx as _jsx } from "react/jsx-runtime"; import * as React from 'react'; import ArrowRight from './arrow-right'; import ArrowDown from './arrow-down'; import ArrowUp from './arrow-up'; import ArrowUpLong from './arrow-up-long'; import ArrowDownLong from './arrow-down-long'; import ArrowLeft from './arrow-left'; import TriangleUp from './triangle-up'; import TriangleDown from './triangle-down'; import Check from './check'; import AttachFile from './attach-file'; import Plus from './plus'; import Person from './person'; import Clone from './clone'; import Chat from './chat'; import Query from './query'; import Info from './info'; import Alert from './alert'; import List from './list'; import Home from './home'; import Call from './call'; import Justify from './justify'; import Err from './error'; import Export from './export'; import FDC3 from './fdc3'; import Campaign from './campaign'; import Build from './build'; import Warning from './warning'; import Dashboard from './dashboard'; import Undo from './undo'; import FastForward from './fast-forward'; import FastBackward from './fast-backward'; import SortAsc from './sort-asc'; import SortDesc from './sort-desc'; import Calendar from './calendar'; import Delete from './delete'; import CSV from './csv'; import Excel from './excel'; import CheckCircle from './check-circle'; import Refresh from './refresh'; import Save from './save'; import Chart from './chart'; import Application from './application'; import BulkUpdate from './bulk-update'; import ImportExport from './import-export'; import Import from './import'; import CalculatedColumn from './calculated-column'; import CellSummary from './cell-summary'; import ColumnChooser from './column-chooser'; import ColumnAdd from './column-add'; import CellValidation from './cell-validation'; import ColumnFilter from './column-filter'; import ColumnOutline from './column-outline'; import SystemStatus from './system-status'; import DataSet from './data-set'; import DataObject from './data-object'; import FlashingCell from './flashing-cell'; import edit from './edit'; import Equation from './equation'; import FormatColumn from './format-column'; import ExportData from './table-arrow-right'; import FreetextColumn from './freetext-column'; import comment from './comment'; import Layout from './layout'; import StateManagement from './state-management'; import ToolPanel from './tool-panel'; import PercentBar from './percent-bar'; import Sparkline from './spark-line'; import BulletChart from './bullet-chart'; import RangeBar from './range-bar'; import IconStyleGlyph from './icon-style'; import Star from './star'; import Resume from './resume'; import PieChart from './pie-chart'; import PlusMinus from './plus-minus'; import QuickSearch from './quick-search'; import Reminder from './reminder'; import Schedule from './schedule'; import Inspector from './inspector'; import Shortcut from './shortcut'; import UpdatedRow from './updated-row'; import logout from './logout'; import Theme from './theme'; import checkBox from './check-box'; import checkBoxOutline from './check-box-outline'; import booleanList from './boolean-list'; import tabUnselected from './tab-unselected'; import CloudUpload from './cloud-upload'; import Upload from './upload'; import ipushpull from './ipushpull'; import FolderOpen from './folder-open'; import OpenInNew from './open-in-new'; import Folder from './folder'; import FolderShared from './folder-shared'; import Play from './play'; import Stop from './stop'; import Pause from './pause'; import NewPage from './newpage'; import Drag from './drag'; import HideColumn from './hide-column'; import ShowColumn from './show-column'; import DateRange from './date-range'; import Settings from './settings'; import Dock from './dock'; import Collapse from './collapse'; import Expand from './expand'; import ArrowExpand from './arrow-expand'; import History from './history'; import Filter from './filter'; import FilterOff from './filter-off'; import Close from './close'; import Function from './function'; import GreaterThanOrEqual from './greater-than-or-equal'; import GreaterThan from './greater-than'; import LessThanOrEqual from './less-than-or-equal'; import LessThan from './less-than'; import Minus from './minus'; import Multiplication from './multiplication'; import Division from './division'; import Percent from './percent'; import Exponent from './exponent'; import Equal from './equal'; import NotEqual from './not-equal'; import EndsWith from './ends-with'; import StartsWith from './starts-with'; import Blanks from './blanks'; import NonBlanks from './non-blanks'; import Contains from './contains'; import NotContains from './not-contains'; import Regex from './regex'; import TrackChanges from './track-changes'; import Menu from './menu'; import StatusBar from './statusbar'; import AddRow from './add-row'; import Brush from './brush'; import Gradient from './gradient'; import Badge from './badge'; import Italic from './italic'; import Bold from './bold'; import AlignLeft from './align-left'; import AlignRight from './align-right'; import AlignCenter from './align-center'; import Overline from './overline'; import Underline from './underline'; import Strikethrough from './strikethrough'; import Lowercase from './case-lower'; import Uppercase from './case-upper'; import SentenceCase from './case-sentence'; import GridFilter from './grid-filter'; import GridInfo from './grid-info'; import Rows from './rows'; import Quote from './quote'; import News from './news'; import Instrument from './instrument'; import Analysis from './analysis'; import Visibility from './visibility'; import VisibilityOff from './visibility-off'; import Mail from './mail'; import Dollar from './dollar'; import Organisation from './organisation'; import Science from './science'; import Interactions from './interactions'; import Money from './money'; import Order from './order'; import Contact from './contact'; import Note from './note'; import Comments from './comments'; import SelectAll from './select-all'; import SelectOff from './select-off'; import SelectFwd from './select-fwd'; import Copy from './copy'; import ExpandAll from './expand-all'; import CollapseAll from './collapse-all'; import Sync from './sync'; import StyledGrid from './styled-grid'; import { isAdaptableCustomIcon, isAdaptableSystemIcon } from '../Icon'; import { AdaptableLogger } from '../../agGrid/AdaptableLogger'; export const allIcons = { search: Query, grid: Layout, cells: CellSummary, columns: ColumnChooser, copy: Copy, 'calculated-column': CalculatedColumn, laptop: Application, alert: Alert, building: Analysis, 'edit-table': BulkUpdate, chart: Chart, 'column-add': ColumnAdd, person: Person, quote: Quote, call: Call, news: News, brush: Brush, 'data-set': DataSet, excel: Excel, json: DataObject, export: Export, broadcast: Campaign, theme: Theme, brain: Instrument, calendar: Calendar, chat: Chat, 'filter-list': ColumnFilter, 'column-outline': ColumnOutline, 'grid-filter': GridFilter, 'grid-info': GridInfo, filter: Filter, 'filter-off': FilterOff, 'search-table': QuickSearch, lightning: FlashingCell, 'color-palette': FormatColumn, 'export-data': ExportData, 'horizontal-lines': FreetextColumn, 'percent-tag': PercentBar, 'spark-line': Sparkline, resume: Resume, csv: CSV, 'pie-chart': PieChart, 'add-circle': PlusMinus, reminder: Reminder, schedule: Schedule, link: Shortcut, assignment: StateManagement, clipboard: ToolPanel, 'traffic-lights': SystemStatus, add: AddRow, downloaded: UpdatedRow, edit: edit, undo: Undo, clone: Clone, save: Save, refresh: Refresh, delete: Delete, 'tab-unselected': tabUnselected, 'select-all': SelectAll, 'select-off': SelectOff, 'select-fwd': SelectFwd, checked: checkBox, unchecked: checkBoxOutline, 'boolean-list': booleanList, 'arrow-right': ArrowRight, 'arrow-left': ArrowLeft, 'arrow-up': ArrowUp, 'arrow-down': ArrowDown, 'arrow-up-long': ArrowUpLong, 'arrow-down-long': ArrowDownLong, 'triangle-up': TriangleUp, 'triangle-down': TriangleDown, 'check-circle': CheckCircle, comment, list: List, spanner: Build, error: Err, play: Play, stop: Stop, pause: Pause, 'fast-forward': FastForward, 'fast-backward': FastBackward, warning: Warning, check: Check, 'open-in-new': OpenInNew, home: Home, 'sort-asc': SortAsc, 'sort-desc': SortDesc, logout: logout, 'import-export': ImportExport, import: Import, inspector: Inspector, paperclip: AttachFile, info: Info, 'cloud-upload': CloudUpload, upload: Upload, download: ipushpull, 'folder-open': FolderOpen, 'folder-shared': FolderShared, folder: Folder, newpage: NewPage, drag: Drag, 'date-range': DateRange, settings: Settings, dock: Dock, collapse: Collapse, expand: Expand, 'arrow-expand': ArrowExpand, history: History, close: Close, function: Function, equation: Equation, equals: Equal, 'not-equal': NotEqual, 'greater-than-or-equal': GreaterThanOrEqual, 'greater-than': GreaterThan, 'less-than-or-equal': LessThanOrEqual, 'less-than': LessThan, plus: Plus, minus: Minus, multiplication: Multiplication, division: Division, percent: Percent, exponent: Exponent, 'ends-with': EndsWith, 'starts-with': StartsWith, 'unfilled-circle': Blanks, 'filled-circle': NonBlanks, 'not-contains': NotContains, contains: Contains, regex: Regex, target: TrackChanges, menu: Menu, statusbar: StatusBar, dashboard: Dashboard, 'visibility-on': Visibility, 'visibility-off': VisibilityOff, 'visibility-off-bold': HideColumn, 'visibility-on-bold': ShowColumn, gradient: Gradient, badge: Badge, 'bullet-chart': BulletChart, 'range-bar': RangeBar, 'icon-style': IconStyleGlyph, star: Star, bold: Bold, italic: Italic, 'align-left': AlignLeft, 'align-right': AlignRight, 'align-center': AlignCenter, 'align-justify': Justify, underline: Underline, overline: Overline, strikethrough: Strikethrough, 'case-lower': Lowercase, 'case-upper': Uppercase, 'case-sentence': SentenceCase, flag: CellValidation, fdc3: FDC3, mail: Mail, dollar: Dollar, organisation: Organisation, science: Science, interactions: Interactions, money: Money, order: Order, contact: Contact, note: Note, comments: Comments, rows: Rows, 'expand-all': ExpandAll, 'collapse-all': CollapseAll, sync: Sync, 'styled-grid': StyledGrid, }; Object.keys(allIcons).forEach((name) => { const ReactCmp = allIcons[name]; allIcons[name] = (props) => _jsx(ReactCmp, { ...props, name: name }); }); export const Icon = ({ name, style, className, tabIndex, ...props }) => { const IconCmp = (allIcons[name] || null); if (!IconCmp) { AdaptableLogger.consoleWarnBase('NO icon found for ' + name); return _jsx("svg", { height: "17", width: "17" }); } return _jsx(IconCmp, { tabIndex: tabIndex, ...props, style: style, name: name, className: className }); }; export const NaturallySizedIcon = (props) => { return _jsx(Icon, { ...props, size: '1.5em', style: { marginTop: '-0.125em', ...props.style } }); }; const SVG_KEEP_AS_IS = new Set([ 'viewBox', 'preserveAspectRatio', 'gradientUnits', 'gradientTransform', 'patternUnits', 'patternContentUnits', 'patternTransform', 'maskUnits', 'maskContentUnits', 'markerUnits', 'markerWidth', 'markerHeight', 'attributeName', 'attributeType', 'spreadMethod', 'baseProfile', 'repeatCount', ]); const REACT_TO_HTML_ATTR = { className: 'class', htmlFor: 'for', tabIndex: 'tabindex', acceptCharset: 'accept-charset', }; const UNITLESS_CSS_PROPS = new Set([ 'animationIterationCount', 'borderImageOutset', 'borderImageSlice', 'borderImageWidth', 'boxFlex', 'boxFlexGroup', 'boxOrdinalGroup', 'columnCount', 'columns', 'flex', 'flexGrow', 'flexPositive', 'flexShrink', 'flexNegative', 'flexOrder', 'fontWeight', 'gridArea', 'gridRow', 'gridRowEnd', 'gridRowSpan', 'gridRowStart', 'gridColumn', 'gridColumnEnd', 'gridColumnSpan', 'gridColumnStart', 'lineClamp', 'lineHeight', 'opacity', 'order', 'orphans', 'tabSize', 'widows', 'zIndex', 'zoom', 'fillOpacity', 'floodOpacity', 'stopOpacity', 'strokeDasharray', 'strokeDashoffset', 'strokeMiterlimit', 'strokeOpacity', 'strokeWidth', ]); const HTML_VOID_TAGS = new Set([ 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr', ]); const camelToKebab = (s) => s.replace(/[A-Z]/g, (c) => '-' + c.toLowerCase()); const escapeAttr = (s) => s.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/</g, '&lt;'); const escapeText = (s) => s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;'); const styleObjectToString = (style) => { const parts = []; for (const key in style) { const raw = style[key]; if (raw == null || raw === false) continue; const cssKey = key.startsWith('--') ? key : camelToKebab(key); let cssVal; if (typeof raw === 'number' && raw !== 0 && !UNITLESS_CSS_PROPS.has(key)) { cssVal = `${raw}px`; } else { cssVal = String(raw); } parts.push(`${cssKey}:${cssVal}`); } return parts.join(';'); }; const propToAttrName = (key) => { if (REACT_TO_HTML_ATTR[key]) return REACT_TO_HTML_ATTR[key]; if (key.startsWith('data-') || key.startsWith('aria-')) return key; if (SVG_KEEP_AS_IS.has(key)) return key; return /[A-Z]/.test(key) ? camelToKebab(key) : key; }; const reactElementToString = (node) => { if (node == null || typeof node === 'boolean') return ''; if (typeof node === 'string') return escapeText(node); if (typeof node === 'number') return String(node); if (Array.isArray(node)) return node.map(reactElementToString).join(''); if (!React.isValidElement(node)) return ''; const { type, props } = node; if (type === React.Fragment) { return reactElementToString(props.children); } if (typeof type === 'function') { return reactElementToString(type(props)); } if (typeof type !== 'string') return ''; const attrs = []; let innerHtml = ''; for (const key in props) { if (key === 'children' || key === 'key' || key === 'ref') continue; const value = props[key]; if (value == null || value === false) continue; if (key === 'style') { const css = typeof value === 'string' ? value : styleObjectToString(value); if (css) attrs.push(`style="${escapeAttr(css)}"`); continue; } if (key === 'dangerouslySetInnerHTML') { innerHtml = value?.__html ?? ''; continue; } const attrName = propToAttrName(key); if (value === true) { attrs.push(attrName); } else { attrs.push(`${attrName}="${escapeAttr(String(value))}"`); } } const attrStr = attrs.length ? ' ' + attrs.join(' ') : ''; const childHtml = innerHtml || reactElementToString(props.children); if (HTML_VOID_TAGS.has(type)) { return `<${type}${attrStr}/>`; } return `<${type}${attrStr}>${childHtml}</${type}>`; }; export const iconToString = (icon, style) => { if (!icon) { return; } const mergedStyle = { ...icon.style, ...style }; if (isAdaptableSystemIcon(icon) && icon.name in allIcons) { const IconCmp = allIcons[icon.name]; return reactElementToString(_jsx(IconCmp, { "aria-hidden": "true", name: icon.name, size: icon.size, style: mergedStyle, className: icon.className })); } if (isAdaptableCustomIcon(icon)) { const width = mergedStyle.width ?? 'var(--ab-cmp-icon__width)'; const height = mergedStyle.height ?? 'var(--ab-cmp-icon__height)'; return reactElementToString(_jsx("img", { src: icon.src, className: icon.className, style: { height, width, ...mergedStyle } })); } return undefined; };