@ytsaurus/components 0.2.2 → 0.2.4

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.
Files changed (28) hide show
  1. package/build/esm/components/ClipboardButton/ClipboardButton.d.ts +5 -1
  2. package/build/esm/components/ClipboardButton/ClipboardButton.d.ts.map +1 -1
  3. package/build/esm/components/ClipboardButton/ClipboardButton.js +21 -11
  4. package/build/esm/components/ClipboardButton/ClipboardButton.js.map +1 -1
  5. package/build/esm/components/ClipboardButton/ClipboardButton.stories.d.ts +1 -0
  6. package/build/esm/components/ClipboardButton/ClipboardButton.stories.d.ts.map +1 -1
  7. package/build/esm/components/ClipboardButton/ClipboardButton.stories.js +1 -0
  8. package/build/esm/components/ClipboardButton/ClipboardButton.stories.js.map +1 -1
  9. package/build/esm/modules/NavigationTable/NavigationTable.css +3 -0
  10. package/build/esm/modules/NavigationTable/NavigationTable.css.map +1 -1
  11. package/build/esm/modules/NavigationTable/NavigationTable.d.ts +1 -1
  12. package/build/esm/modules/NavigationTable/NavigationTable.d.ts.map +1 -1
  13. package/build/esm/modules/NavigationTable/NavigationTable.js +18 -6
  14. package/build/esm/modules/NavigationTable/NavigationTable.js.map +1 -1
  15. package/build/esm/modules/NavigationTable/NavigationTable.scss +6 -0
  16. package/build/esm/modules/NavigationTable/NavigationTable.stories.js +1 -1
  17. package/build/esm/modules/NavigationTable/NavigationTable.stories.js.map +1 -1
  18. package/build/esm/modules/NavigationTable/SchemaTab.js +1 -1
  19. package/build/esm/modules/NavigationTable/SchemaTab.js.map +1 -1
  20. package/build/esm/modules/NavigationTable/helpers/filterSchema.d.ts +3 -0
  21. package/build/esm/modules/NavigationTable/helpers/filterSchema.d.ts.map +1 -0
  22. package/build/esm/modules/NavigationTable/helpers/filterSchema.js +12 -0
  23. package/build/esm/modules/NavigationTable/helpers/filterSchema.js.map +1 -0
  24. package/build/esm/modules/NavigationTable/helpers/sortColumnsBySchema.d.ts +3 -0
  25. package/build/esm/modules/NavigationTable/helpers/sortColumnsBySchema.d.ts.map +1 -0
  26. package/build/esm/modules/NavigationTable/helpers/sortColumnsBySchema.js +25 -0
  27. package/build/esm/modules/NavigationTable/helpers/sortColumnsBySchema.js.map +1 -0
  28. package/package.json +2 -2
@@ -4,7 +4,7 @@ import './ClipboardButton.scss';
4
4
  type ClipboardButtonProps = Omit<ButtonProps, 'onCopy' | 'view'> & {
5
5
  view?: ButtonProps['view'] | 'clear';
6
6
  className?: string;
7
- text?: string | number;
7
+ text: string | number;
8
8
  shiftText?: string;
9
9
  buttonText?: string | null;
10
10
  title?: string;
@@ -75,8 +75,12 @@ export declare class ClipboardButton extends Component<ClipboardButtonProps> {
75
75
  error: React.FC<React.SVGProps<SVGSVGElement>>;
76
76
  };
77
77
  buttonRef: React.RefObject<HTMLButtonElement>;
78
+ shiftKeyPressed: boolean;
78
79
  handleHotkey: () => void;
79
80
  renderHotkey(): import("react/jsx-runtime").JSX.Element | null;
81
+ getTextToCopy: () => string;
82
+ onClickCapture: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
83
+ onCopy: (text: string) => void;
80
84
  onClick: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
81
85
  render(): import("react/jsx-runtime").JSX.Element;
82
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ClipboardButton.d.ts","sourceRoot":"","sources":["../../../../src/components/ClipboardButton/ClipboardButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAGvC,OAAO,EAGH,WAAW,EAGX,SAAS,EAEZ,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,wBAAwB,CAAC;AAIhC,KAAK,oBAAoB,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,MAAM,CAAC,GAAG;IAC/D,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF,qBAAa,eAAgB,SAAQ,SAAS,CAAC,oBAAoB,CAAC;IAChE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAKhD;IAEF,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAIT;IAEF,SAAS,qCAAwC;IAEjD,YAAY,aAKV;IAEF,YAAY;IAmBZ,OAAO,GAAI,OAAO,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,UAazD;IAEF,MAAM;CA2DT"}
1
+ {"version":3,"file":"ClipboardButton.d.ts","sourceRoot":"","sources":["../../../../src/components/ClipboardButton/ClipboardButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAGvC,OAAO,EAGH,WAAW,EAGX,SAAS,EACZ,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,wBAAwB,CAAC;AAIhC,KAAK,oBAAoB,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,MAAM,CAAC,GAAG;IAC/D,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF,qBAAa,eAAgB,SAAQ,SAAS,CAAC,oBAAoB,CAAC;IAChE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAKhD;IAEF,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAIT;IAEF,SAAS,qCAAwC;IACjD,eAAe,UAAS;IAExB,YAAY,aAKV;IAEF,YAAY;IAmBZ,aAAa,eAQX;IAEF,cAAc,GAAI,OAAO,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,UAEhE;IAEF,MAAM,GAAI,MAAM,MAAM,UAKpB;IAEF,OAAO,GAAI,OAAO,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,UAGzD;IAEF,MAAM;CAgET"}
@@ -4,10 +4,10 @@ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4
4
  import _createClass from "@babel/runtime/helpers/createClass";
5
5
  import _callSuper from "@babel/runtime/helpers/callSuper";
6
6
  import _inherits from "@babel/runtime/helpers/inherits";
7
- var _excluded = ["text", "buttonText", "hotkey", "timeout", "hoverContent", "className", "visibleOnRowHover", "inlineMargins", "iconSize"];
7
+ var _excluded = ["buttonText", "hotkey", "timeout", "hoverContent", "className", "visibleOnRowHover", "inlineMargins", "iconSize"];
8
8
  import React, { Component } from 'react';
9
9
  import cn from 'bem-cn-lite';
10
- import { Button, CopyToClipboard, Icon, copyTextToClipboard } from '@gravity-ui/uikit';
10
+ import { Button, CopyToClipboard, Icon } from '@gravity-ui/uikit';
11
11
  var FilesIcon = function FilesIcon(props) {
12
12
  return /*#__PURE__*/_jsx("svg", _objectSpread(_objectSpread({}, props), {}, {
13
13
  children: /*#__PURE__*/_jsx("path", {
@@ -78,25 +78,33 @@ export var ClipboardButton = /*#__PURE__*/function (_Component) {
78
78
  error: XmarkIcon
79
79
  };
80
80
  _this.buttonRef = /*#__PURE__*/React.createRef();
81
+ _this.shiftKeyPressed = false;
81
82
  _this.handleHotkey = function () {
82
83
  var current = _this.buttonRef.current;
83
84
  if (current !== null && current !== void 0 && current.click) {
84
85
  current.click();
85
86
  }
86
87
  };
87
- _this.onClick = function (event) {
88
+ _this.getTextToCopy = function () {
88
89
  var _this$props = _this.props,
89
90
  text = _this$props.text,
90
- shiftText = _this$props.shiftText,
91
- onCopy = _this$props.onCopy;
92
- var resText = (text === null || text === void 0 ? void 0 : text.toString()) || '';
93
- if (event !== null && event !== void 0 && event.shiftKey && shiftText) {
91
+ shiftText = _this$props.shiftText;
92
+ var resText = text.toString() || '';
93
+ if (_this.shiftKeyPressed && shiftText) {
94
94
  resText = shiftText;
95
- copyTextToClipboard(resText);
96
95
  }
96
+ return resText;
97
+ };
98
+ _this.onClickCapture = function (event) {
99
+ _this.shiftKeyPressed = event.shiftKey;
100
+ };
101
+ _this.onCopy = function (text) {
102
+ var onCopy = _this.props.onCopy;
97
103
  if ('function' === typeof onCopy) {
98
- onCopy(resText);
104
+ onCopy(text);
99
105
  }
106
+ };
107
+ _this.onClick = function (event) {
100
108
  event.preventDefault();
101
109
  event.stopPropagation();
102
110
  };
@@ -125,7 +133,6 @@ export var ClipboardButton = /*#__PURE__*/function (_Component) {
125
133
  value: function render() {
126
134
  var _this2 = this;
127
135
  var _this$props3 = this.props,
128
- text = _this$props3.text,
129
136
  buttonText = _this$props3.buttonText,
130
137
  hotkey = _this$props3.hotkey,
131
138
  timeout = _this$props3.timeout,
@@ -146,13 +153,15 @@ export var ClipboardButton = /*#__PURE__*/function (_Component) {
146
153
  children: /*#__PURE__*/_jsxs(Tooltip, {
147
154
  content: hoverContent,
148
155
  children: [/*#__PURE__*/_jsx(CopyToClipboard, {
149
- text: (text === null || text === void 0 ? void 0 : text.toString()) || '',
156
+ text: this.getTextToCopy,
150
157
  timeout: timeout,
158
+ onCopy: this.onCopy,
151
159
  children: function children(state) {
152
160
  return buttonText ? /*#__PURE__*/_jsxs(Button, _objectSpread(_objectSpread({}, buttonProps), {}, {
153
161
  view: buttonView,
154
162
  ref: _this2.buttonRef,
155
163
  onClick: _this2.onClick,
164
+ onClickCapture: _this2.onClickCapture,
156
165
  children: [/*#__PURE__*/_jsx(Icon, {
157
166
  data: _this2.iconByState[state],
158
167
  size: resultIconSize
@@ -161,6 +170,7 @@ export var ClipboardButton = /*#__PURE__*/function (_Component) {
161
170
  view: buttonView,
162
171
  ref: _this2.buttonRef,
163
172
  onClick: _this2.onClick,
173
+ onClickCapture: _this2.onClickCapture,
164
174
  children: /*#__PURE__*/_jsx(Icon, {
165
175
  data: _this2.iconByState[state],
166
176
  size: resultIconSize
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","cn","Button","CopyToClipboard","Icon","copyTextToClipboard","FilesIcon","props","_jsx","_objectSpread","children","fill","fillRule","d","clipRule","defaultProps","xmlns","width","height","viewBox","CheckIcon","XmarkIcon","Hotkey","Tooltip","jsx","jsxs","_jsxs","block","ClipboardButton","_Component","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","concat","iconByState","pending","icon","success","error","buttonRef","createRef","handleHotkey","current","click","onClick","event","_this$props","text","shiftText","onCopy","resText","toString","shiftKey","preventDefault","stopPropagation","_inherits","_createClass","key","value","renderHotkey","_this$props2","hotkey","hotkeyScope","settings","keys","scope","handler","render","_this2","_this$props3","buttonText","timeout","hoverContent","className","visibleOnRowHover","inlineMargins","iconSize","buttonProps","_objectWithoutProperties","_excluded","resultIconSize","buttonView","view","content","state","ref","data","size"],"sources":["ClipboardButton.tsx"],"sourcesContent":["import React, {Component} from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {\n Button,\n ButtonButtonProps,\n ButtonProps,\n CopyToClipboard,\n Icon,\n IconProps,\n copyTextToClipboard,\n} from '@gravity-ui/uikit';\nimport FilesIcon from '@gravity-ui/icons/svgs/files.svg';\nimport CheckIcon from '@gravity-ui/icons/svgs/check.svg';\nimport XmarkIcon from '@gravity-ui/icons/svgs/xmark.svg';\n\nimport {Hotkey} from '../Hotkey';\nimport {Tooltip} from '../Tooltip';\n\nimport './ClipboardButton.scss';\n\nconst block = cn('yt-clipboard-button');\n\ntype ClipboardButtonProps = Omit<ButtonProps, 'onCopy' | 'view'> & {\n view?: ButtonProps['view'] | 'clear';\n className?: string;\n text?: string | number;\n shiftText?: string;\n buttonText?: string | null;\n title?: string;\n hoverContent?: React.ReactNode;\n hotkey?: string;\n hotkeyScope?: string;\n onCopy?: (text: string) => void;\n timeout?: number;\n visibleOnRowHover?: boolean;\n inlineMargins?: boolean;\n icon?: IconProps['data'];\n iconSize?: IconProps['size'];\n};\n\nexport class ClipboardButton extends Component<ClipboardButtonProps> {\n static defaultProps: Partial<ClipboardButtonProps> = {\n size: 'm',\n hotkeyScope: 'all',\n timeout: 500,\n view: 'outlined',\n };\n\n iconByState = {\n pending: this.props.icon || FilesIcon,\n success: CheckIcon,\n error: XmarkIcon,\n };\n\n buttonRef = React.createRef<HTMLButtonElement>();\n\n handleHotkey = () => {\n const {current} = this.buttonRef;\n if (current?.click) {\n current.click();\n }\n };\n\n renderHotkey() {\n const {hotkey, hotkeyScope} = this.props;\n if (!hotkey || !hotkeyScope) {\n return null;\n }\n\n return (\n <Hotkey\n settings={[\n {\n keys: hotkey,\n scope: hotkeyScope,\n handler: this.handleHotkey,\n },\n ]}\n />\n );\n }\n\n onClick = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n const {text, shiftText, onCopy} = this.props;\n let resText = text?.toString() || '';\n if (event?.shiftKey && shiftText) {\n resText = shiftText;\n copyTextToClipboard(resText);\n }\n if ('function' === typeof onCopy) {\n onCopy(resText);\n }\n\n event.preventDefault();\n event.stopPropagation();\n };\n\n render() {\n const {\n text,\n buttonText,\n hotkey,\n timeout,\n hoverContent,\n className,\n visibleOnRowHover,\n inlineMargins,\n iconSize,\n ...buttonProps\n } = this.props;\n\n const resultIconSize = iconSize || 13;\n const buttonView =\n this.props.view === 'clear' ? 'flat' : (this.props.view as ButtonProps['view']);\n\n return (\n <span\n className={block(\n {\n 'visbile-on-row-hover': visibleOnRowHover,\n 'inline-margin': inlineMargins,\n view: this.props.view,\n },\n className,\n )}\n >\n <Tooltip content={hoverContent}>\n <CopyToClipboard text={text?.toString() || ''} timeout={timeout}>\n {(state) =>\n buttonText ? (\n <Button\n {...(buttonProps as ButtonButtonProps)}\n view={buttonView}\n ref={this.buttonRef}\n onClick={this.onClick}\n >\n <Icon data={this.iconByState[state]} size={resultIconSize} />\n {buttonText}\n </Button>\n ) : (\n <Button\n {...(buttonProps as ButtonButtonProps)}\n view={buttonView}\n ref={this.buttonRef}\n onClick={this.onClick}\n >\n <Icon data={this.iconByState[state]} size={resultIconSize} />\n </Button>\n )\n }\n </CopyToClipboard>\n {hotkey && this.renderHotkey()}\n </Tooltip>\n </span>\n );\n }\n}\n"],"mappings":";;;;;;;AAAA,OAAOA,KAAK,IAAGC,SAAS,QAAO,OAAO;AACtC,OAAOC,EAAE,MAAM,aAAa;AAE5B,SACIC,MAAM,EAGNC,eAAe,EACfC,IAAI,EAEJC,mBAAmB,QAChB,mBAAmB;AAAC,IACpBC,SAAS,YAATA,SAASA,CAAAC,KAAA;EAAA,oBAAAC,IAAA,QAAAC,aAAA,CAAAA,aAAA,KAAAF,KAAA;IAAAG,QAAA,eAAAF,IAAA;MAAAG,IAAA;MAAAC,QAAA;MAAAC,CAAA;MAAAC,QAAA;IAAA;EAAA;AAAA;AAATR,SAAS,CAAAS,YAAA;EAAAC,KAAA;EAAAC,KAAA;EAAAC,MAAA;EAAAP,IAAA;EAAAQ,OAAA;AAAA;AAAA,IACTC,SAAS,YAATA,SAASA,CAAAb,KAAA;EAAA,oBAAAC,IAAA,QAAAC,aAAA,CAAAA,aAAA,KAAAF,KAAA;IAAAG,QAAA,eAAAF,IAAA;MAAAG,IAAA;MAAAC,QAAA;MAAAC,CAAA;MAAAC,QAAA;IAAA;EAAA;AAAA;AAATM,SAAS,CAAAL,YAAA;EAAAC,KAAA;EAAAC,KAAA;EAAAC,MAAA;EAAAP,IAAA;EAAAQ,OAAA;AAAA;AAAA,IACTE,SAAS,YAATA,SAASA,CAAAd,KAAA;EAAA,oBAAAC,IAAA,QAAAC,aAAA,CAAAA,aAAA,KAAAF,KAAA;IAAAG,QAAA,eAAAF,IAAA;MAAAG,IAAA;MAAAC,QAAA;MAAAC,CAAA;MAAAC,QAAA;IAAA;EAAA;AAAA;AAATO,SAAS,CAAAN,YAAA;EAAAC,KAAA;EAAAC,KAAA;EAAAC,MAAA;EAAAP,IAAA;EAAAQ,OAAA;AAAA;AAEhB,SAAQG,MAAM,QAAO,WAAW;AAChC,SAAQC,OAAO,QAAO,YAAY;AAElC,OAAO,uBAAwB;AAAC,SAAAC,GAAA,IAAAhB,IAAA,EAAAiB,IAAA,IAAAC,KAAA;AAEhC,IAAMC,KAAK,GAAG1B,EAAE,CAAC,qBAAqB,CAAC;AAoBvC,WAAa2B,eAAe,0BAAAC,UAAA;EAAA,SAAAD,gBAAA;IAAA,IAAAE,KAAA;IAAAC,eAAA,OAAAH,eAAA;IAAA,SAAAI,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IAAAP,KAAA,GAAAQ,UAAA,OAAAV,eAAA,KAAAW,MAAA,CAAAJ,IAAA;IAAAL,KAAA,CAQxBU,WAAW,GAAG;MACVC,OAAO,EAAEX,KAAA,CAAKvB,KAAK,CAACmC,IAAI,IAAIpC,SAAS;MACrCqC,OAAO,EAAEvB,SAAS;MAClBwB,KAAK,EAAEvB;IACX,CAAC;IAAAS,KAAA,CAEDe,SAAS,gBAAG9C,KAAK,CAAC+C,SAAS,CAAoB,CAAC;IAAAhB,KAAA,CAEhDiB,YAAY,GAAG,YAAM;MACjB,IAAOC,OAAO,GAAIlB,KAAA,CAAKe,SAAS,CAAzBG,OAAO;MACd,IAAIA,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEC,KAAK,EAAE;QAChBD,OAAO,CAACC,KAAK,CAAC,CAAC;MACnB;IACJ,CAAC;IAAAnB,KAAA,CAqBDoB,OAAO,GAAG,UAACC,KAAgD,EAAK;MAC5D,IAAAC,WAAA,GAAkCtB,KAAA,CAAKvB,KAAK;QAArC8C,IAAI,GAAAD,WAAA,CAAJC,IAAI;QAAEC,SAAS,GAAAF,WAAA,CAATE,SAAS;QAAEC,MAAM,GAAAH,WAAA,CAANG,MAAM;MAC9B,IAAIC,OAAO,GAAG,CAAAH,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEI,QAAQ,CAAC,CAAC,KAAI,EAAE;MACpC,IAAIN,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEO,QAAQ,IAAIJ,SAAS,EAAE;QAC9BE,OAAO,GAAGF,SAAS;QACnBjD,mBAAmB,CAACmD,OAAO,CAAC;MAChC;MACA,IAAI,UAAU,KAAK,OAAOD,MAAM,EAAE;QAC9BA,MAAM,CAACC,OAAO,CAAC;MACnB;MAEAL,KAAK,CAACQ,cAAc,CAAC,CAAC;MACtBR,KAAK,CAACS,eAAe,CAAC,CAAC;IAC3B,CAAC;IAAA,OAAA9B,KAAA;EAAA;EAAA+B,SAAA,CAAAjC,eAAA,EAAAC,UAAA;EAAA,OAAAiC,YAAA,CAAAlC,eAAA;IAAAmC,GAAA;IAAAC,KAAA,EAhCD,SAAAC,YAAYA,CAAA,EAAG;MACX,IAAAC,YAAA,GAA8B,IAAI,CAAC3D,KAAK;QAAjC4D,MAAM,GAAAD,YAAA,CAANC,MAAM;QAAEC,WAAW,GAAAF,YAAA,CAAXE,WAAW;MAC1B,IAAI,CAACD,MAAM,IAAI,CAACC,WAAW,EAAE;QACzB,OAAO,IAAI;MACf;MAEA,oBACI5D,IAAA,CAACc,MAAM;QACH+C,QAAQ,EAAE,CACN;UACIC,IAAI,EAAEH,MAAM;UACZI,KAAK,EAAEH,WAAW;UAClBI,OAAO,EAAE,IAAI,CAACzB;QAClB,CAAC;MACH,CACL,CAAC;IAEV;EAAC;IAAAgB,GAAA;IAAAC,KAAA,EAiBD,SAAAS,MAAMA,CAAA,EAAG;MAAA,IAAAC,MAAA;MACL,IAAAC,YAAA,GAWI,IAAI,CAACpE,KAAK;QAVV8C,IAAI,GAAAsB,YAAA,CAAJtB,IAAI;QACJuB,UAAU,GAAAD,YAAA,CAAVC,UAAU;QACVT,MAAM,GAAAQ,YAAA,CAANR,MAAM;QACNU,OAAO,GAAAF,YAAA,CAAPE,OAAO;QACPC,YAAY,GAAAH,YAAA,CAAZG,YAAY;QACZC,SAAS,GAAAJ,YAAA,CAATI,SAAS;QACTC,iBAAiB,GAAAL,YAAA,CAAjBK,iBAAiB;QACjBC,aAAa,GAAAN,YAAA,CAAbM,aAAa;QACbC,QAAQ,GAAAP,YAAA,CAARO,QAAQ;QACLC,WAAW,GAAAC,wBAAA,CAAAT,YAAA,EAAAU,SAAA;MAGlB,IAAMC,cAAc,GAAGJ,QAAQ,IAAI,EAAE;MACrC,IAAMK,UAAU,GACZ,IAAI,CAAChF,KAAK,CAACiF,IAAI,KAAK,OAAO,GAAG,MAAM,GAAI,IAAI,CAACjF,KAAK,CAACiF,IAA4B;MAEnF,oBACIhF,IAAA;QACIuE,SAAS,EAAEpD,KAAK,CACZ;UACI,sBAAsB,EAAEqD,iBAAiB;UACzC,eAAe,EAAEC,aAAa;UAC9BO,IAAI,EAAE,IAAI,CAACjF,KAAK,CAACiF;QACrB,CAAC,EACDT,SACJ,CAAE;QAAArE,QAAA,eAEFgB,KAAA,CAACH,OAAO;UAACkE,OAAO,EAAEX,YAAa;UAAApE,QAAA,gBAC3BF,IAAA,CAACL,eAAe;YAACkD,IAAI,EAAE,CAAAA,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEI,QAAQ,CAAC,CAAC,KAAI,EAAG;YAACoB,OAAO,EAAEA,OAAQ;YAAAnE,QAAA,EAC3D,SAAAA,SAACgF,KAAK;cAAA,OACHd,UAAU,gBACNlD,KAAA,CAACxB,MAAM,EAAAO,aAAA,CAAAA,aAAA,KACE0E,WAAW;gBAChBK,IAAI,EAAED,UAAW;gBACjBI,GAAG,EAAEjB,MAAI,CAAC7B,SAAU;gBACpBK,OAAO,EAAEwB,MAAI,CAACxB,OAAQ;gBAAAxC,QAAA,gBAEtBF,IAAA,CAACJ,IAAI;kBAACwF,IAAI,EAAElB,MAAI,CAAClC,WAAW,CAACkD,KAAK,CAAE;kBAACG,IAAI,EAAEP;gBAAe,CAAE,CAAC,EAC5DV,UAAU;cAAA,EACP,CAAC,gBAETpE,IAAA,CAACN,MAAM,EAAAO,aAAA,CAAAA,aAAA,KACE0E,WAAW;gBAChBK,IAAI,EAAED,UAAW;gBACjBI,GAAG,EAAEjB,MAAI,CAAC7B,SAAU;gBACpBK,OAAO,EAAEwB,MAAI,CAACxB,OAAQ;gBAAAxC,QAAA,eAEtBF,IAAA,CAACJ,IAAI;kBAACwF,IAAI,EAAElB,MAAI,CAAClC,WAAW,CAACkD,KAAK,CAAE;kBAACG,IAAI,EAAEP;gBAAe,CAAE;cAAC,EACzD,CACX;YAAA;UAAA,CAEQ,CAAC,EACjBnB,MAAM,IAAI,IAAI,CAACF,YAAY,CAAC,CAAC;QAAA,CACzB;MAAC,CACR,CAAC;IAEf;EAAC;AAAA,EAnHgCjE,SAAS;AAAjC4B,eAAe,CACjBb,YAAY,GAAkC;EACjD8E,IAAI,EAAE,GAAG;EACTzB,WAAW,EAAE,KAAK;EAClBS,OAAO,EAAE,GAAG;EACZW,IAAI,EAAE;AACV,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","Component","cn","Button","CopyToClipboard","Icon","FilesIcon","props","_jsx","_objectSpread","children","fill","fillRule","d","clipRule","defaultProps","xmlns","width","height","viewBox","CheckIcon","XmarkIcon","Hotkey","Tooltip","jsx","jsxs","_jsxs","block","ClipboardButton","_Component","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","concat","iconByState","pending","icon","success","error","buttonRef","createRef","shiftKeyPressed","handleHotkey","current","click","getTextToCopy","_this$props","text","shiftText","resText","toString","onClickCapture","event","shiftKey","onCopy","onClick","preventDefault","stopPropagation","_inherits","_createClass","key","value","renderHotkey","_this$props2","hotkey","hotkeyScope","settings","keys","scope","handler","render","_this2","_this$props3","buttonText","timeout","hoverContent","className","visibleOnRowHover","inlineMargins","iconSize","buttonProps","_objectWithoutProperties","_excluded","resultIconSize","buttonView","view","content","state","ref","data","size"],"sources":["ClipboardButton.tsx"],"sourcesContent":["import React, {Component} from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {\n Button,\n ButtonButtonProps,\n ButtonProps,\n CopyToClipboard,\n Icon,\n IconProps,\n} from '@gravity-ui/uikit';\nimport FilesIcon from '@gravity-ui/icons/svgs/files.svg';\nimport CheckIcon from '@gravity-ui/icons/svgs/check.svg';\nimport XmarkIcon from '@gravity-ui/icons/svgs/xmark.svg';\n\nimport {Hotkey} from '../Hotkey';\nimport {Tooltip} from '../Tooltip';\n\nimport './ClipboardButton.scss';\n\nconst block = cn('yt-clipboard-button');\n\ntype ClipboardButtonProps = Omit<ButtonProps, 'onCopy' | 'view'> & {\n view?: ButtonProps['view'] | 'clear';\n className?: string;\n text: string | number;\n shiftText?: string;\n buttonText?: string | null;\n title?: string;\n hoverContent?: React.ReactNode;\n hotkey?: string;\n hotkeyScope?: string;\n onCopy?: (text: string) => void;\n timeout?: number;\n visibleOnRowHover?: boolean;\n inlineMargins?: boolean;\n icon?: IconProps['data'];\n iconSize?: IconProps['size'];\n};\n\nexport class ClipboardButton extends Component<ClipboardButtonProps> {\n static defaultProps: Partial<ClipboardButtonProps> = {\n size: 'm',\n hotkeyScope: 'all',\n timeout: 500,\n view: 'outlined',\n };\n\n iconByState = {\n pending: this.props.icon || FilesIcon,\n success: CheckIcon,\n error: XmarkIcon,\n };\n\n buttonRef = React.createRef<HTMLButtonElement>();\n shiftKeyPressed = false;\n\n handleHotkey = () => {\n const {current} = this.buttonRef;\n if (current?.click) {\n current.click();\n }\n };\n\n renderHotkey() {\n const {hotkey, hotkeyScope} = this.props;\n if (!hotkey || !hotkeyScope) {\n return null;\n }\n\n return (\n <Hotkey\n settings={[\n {\n keys: hotkey,\n scope: hotkeyScope,\n handler: this.handleHotkey,\n },\n ]}\n />\n );\n }\n\n getTextToCopy = () => {\n const {text, shiftText} = this.props;\n let resText = text.toString() || '';\n if (this.shiftKeyPressed && shiftText) {\n resText = shiftText;\n }\n\n return resText;\n };\n\n onClickCapture = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n this.shiftKeyPressed = event.shiftKey;\n };\n\n onCopy = (text: string) => {\n const {onCopy} = this.props;\n if ('function' === typeof onCopy) {\n onCopy(text);\n }\n };\n\n onClick = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n render() {\n const {\n buttonText,\n hotkey,\n timeout,\n hoverContent,\n className,\n visibleOnRowHover,\n inlineMargins,\n iconSize,\n ...buttonProps\n } = this.props;\n\n const resultIconSize = iconSize || 13;\n const buttonView =\n this.props.view === 'clear' ? 'flat' : (this.props.view as ButtonProps['view']);\n\n return (\n <span\n className={block(\n {\n 'visbile-on-row-hover': visibleOnRowHover,\n 'inline-margin': inlineMargins,\n view: this.props.view,\n },\n className,\n )}\n >\n <Tooltip content={hoverContent}>\n <CopyToClipboard\n text={this.getTextToCopy}\n timeout={timeout}\n onCopy={this.onCopy}\n >\n {(state) =>\n buttonText ? (\n <Button\n {...(buttonProps as ButtonButtonProps)}\n view={buttonView}\n ref={this.buttonRef}\n onClick={this.onClick}\n onClickCapture={this.onClickCapture}\n >\n <Icon data={this.iconByState[state]} size={resultIconSize} />\n {buttonText}\n </Button>\n ) : (\n <Button\n {...(buttonProps as ButtonButtonProps)}\n view={buttonView}\n ref={this.buttonRef}\n onClick={this.onClick}\n onClickCapture={this.onClickCapture}\n >\n <Icon data={this.iconByState[state]} size={resultIconSize} />\n </Button>\n )\n }\n </CopyToClipboard>\n {hotkey && this.renderHotkey()}\n </Tooltip>\n </span>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -6,6 +6,7 @@ declare const meta: {
6
6
  tags: string[];
7
7
  args: {
8
8
  text: string;
9
+ shiftText: string;
9
10
  view: "outlined";
10
11
  };
11
12
  argTypes: {
@@ -1 +1 @@
1
- {"version":3,"file":"ClipboardButton.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/ClipboardButton/ClipboardButton.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAElD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;CAgB8B,CAAC;AAEzC,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
1
+ {"version":3,"file":"ClipboardButton.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/ClipboardButton/ClipboardButton.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAElD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;CAiB8B,CAAC;AAEzC,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
@@ -5,6 +5,7 @@ var meta = {
5
5
  tags: ['autodocs'],
6
6
  args: {
7
7
  text: 'Some text',
8
+ shiftText: 'Some shift text',
8
9
  view: 'outlined'
9
10
  },
10
11
  argTypes: {
@@ -1 +1 @@
1
- {"version":3,"names":["ClipboardButton","meta","title","component","tags","args","text","view","argTypes","control","options","description","Default"],"sources":["ClipboardButton.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\n\nimport {ClipboardButton} from './ClipboardButton';\n\nconst meta = {\n title: 'Components/ClipboardButton',\n component: ClipboardButton,\n tags: ['autodocs'],\n args: {\n text: 'Some text',\n view: 'outlined',\n },\n argTypes: {\n view: {\n control: 'select',\n options: ['outlined', 'flat', 'action', 'normal', 'raised', 'clear'],\n description:\n 'Button appearance. The `clear` value is mapped to Gravity UI `flat` inside the component.',\n },\n },\n} satisfies Meta<typeof ClipboardButton>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {};\n"],"mappings":"AAEA,SAAQA,eAAe,QAAO,mBAAmB;AAEjD,IAAMC,IAAI,GAAG;EACTC,KAAK,EAAE,4BAA4B;EACnCC,SAAS,EAAEH,eAAe;EAC1BI,IAAI,EAAE,CAAC,UAAU,CAAC;EAClBC,IAAI,EAAE;IACFC,IAAI,EAAE,WAAW;IACjBC,IAAI,EAAE;EACV,CAAC;EACDC,QAAQ,EAAE;IACND,IAAI,EAAE;MACFE,OAAO,EAAE,QAAQ;MACjBC,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;MACpEC,WAAW,EACP;IACR;EACJ;AACJ,CAAwC;AAExC,eAAeV,IAAI;AAInB,OAAO,IAAMW,OAAc,GAAG,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ClipboardButton","meta","title","component","tags","args","text","shiftText","view","argTypes","control","options","description","Default"],"sources":["ClipboardButton.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\n\nimport {ClipboardButton} from './ClipboardButton';\n\nconst meta = {\n title: 'Components/ClipboardButton',\n component: ClipboardButton,\n tags: ['autodocs'],\n args: {\n text: 'Some text',\n shiftText: 'Some shift text',\n view: 'outlined',\n },\n argTypes: {\n view: {\n control: 'select',\n options: ['outlined', 'flat', 'action', 'normal', 'raised', 'clear'],\n description:\n 'Button appearance. The `clear` value is mapped to Gravity UI `flat` inside the component.',\n },\n },\n} satisfies Meta<typeof ClipboardButton>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {};\n"],"mappings":"AAEA,SAAQA,eAAe,QAAO,mBAAmB;AAEjD,IAAMC,IAAI,GAAG;EACTC,KAAK,EAAE,4BAA4B;EACnCC,SAAS,EAAEH,eAAe;EAC1BI,IAAI,EAAE,CAAC,UAAU,CAAC;EAClBC,IAAI,EAAE;IACFC,IAAI,EAAE,WAAW;IACjBC,SAAS,EAAE,iBAAiB;IAC5BC,IAAI,EAAE;EACV,CAAC;EACDC,QAAQ,EAAE;IACND,IAAI,EAAE;MACFE,OAAO,EAAE,QAAQ;MACjBC,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;MACpEC,WAAW,EACP;IACR;EACJ;AACJ,CAAwC;AAExC,eAAeX,IAAI;AAInB,OAAO,IAAMY,OAAc,GAAG,CAAC,CAAC","ignoreList":[]}
@@ -5,6 +5,9 @@
5
5
  margin-top: 8px;
6
6
  overflow-x: auto;
7
7
  }
8
+ .navigation-table__meta .meta-table-item {
9
+ grid-template-columns: 140px auto;
10
+ }
8
11
  .navigation-table .data-table__value {
9
12
  position: relative;
10
13
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["NavigationTable.scss"],"names":[],"mappings":"AAAA;EACI,eAAA;AACJ;AACI;EACI,eAAA;EACA,gBAAA;AACR;AAEI;EACI,kBAAA;AAAR;AAGI;EACI,YAAA;EACA,kBAAA;EACA,MAAA;EACA,QAAA;EACA,UAAA;AADR","file":"NavigationTable.css","sourcesContent":[".navigation-table {\n padding: 0 10px;\n\n &__content {\n margin-top: 8px;\n overflow-x: auto;\n }\n\n .data-table__value {\n position: relative;\n }\n\n .data-table__clipboard-button-wrapper {\n opacity: 0.3;\n position: absolute;\n top: 0;\n right: 0;\n padding: 0;\n }\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["NavigationTable.scss"],"names":[],"mappings":"AAAA;EACI,eAAA;AACJ;AACI;EACI,eAAA;EACA,gBAAA;AACR;AAGQ;EACI,iCAAA;AADZ;AAKI;EACI,kBAAA;AAHR;AAMI;EACI,YAAA;EACA,kBAAA;EACA,MAAA;EACA,QAAA;EACA,UAAA;AAJR","file":"NavigationTable.css","sourcesContent":[".navigation-table {\n padding: 0 10px;\n\n &__content {\n margin-top: 8px;\n overflow-x: auto;\n }\n\n &__meta {\n .meta-table-item {\n grid-template-columns: 140px auto;\n }\n }\n\n .data-table__value {\n position: relative;\n }\n\n .data-table__clipboard-button-wrapper {\n opacity: 0.3;\n position: absolute;\n top: 0;\n right: 0;\n padding: 0;\n }\n}\n"],"sourceRoot":""}
@@ -7,7 +7,7 @@ import type { ErrorBoundaryProps } from '../../internal/DefaultErrorBoundary';
7
7
  /** Pick the tab shown on first render (non-null `table` only). */
8
8
  export type NavigationTableInitialTab = 'schema' | 'preview' | 'meta';
9
9
  export type NavigationTableProps = {
10
- table: NavigationTableData | null;
10
+ table?: NavigationTableData;
11
11
  initialActiveTab?: NavigationTableInitialTab;
12
12
  filter?: string;
13
13
  onFilterChange?: (value: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationTable.d.ts","sourceRoot":"","sources":["../../../../src/modules/NavigationTable/NavigationTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,EAAE,EAAW,MAAM,OAAO,CAAC;AAG1C,OAAO,EACH,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACxB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,wDAAwD,CAAC;AAC5F,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAK1D,OAAO,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AAU5E,kEAAkE;AAClE,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAQtE,MAAM,MAAM,oBAAoB,GAAG;IAC/B,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,mBAAmB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,cAAc,CAAC,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IACvD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACtB,MAAM,EAAE,qBAAqB,EAAE,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACxC,YAAY,CAAC,EAAE,eAAe,CAAC;KAClC,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,KAAK,EAAE,mBAAmB,CAAC;QAC3B,cAAc,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5C,YAAY,CAAC,EAAE,eAAe,CAAC;QAC/B,cAAc,CAAC,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;KAC1D,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAC,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAA;KAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,sBAAsB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACpE,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CA8EpD,CAAC"}
1
+ {"version":3,"file":"NavigationTable.d.ts","sourceRoot":"","sources":["../../../../src/modules/NavigationTable/NavigationTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,EAAE,EAAoB,MAAM,OAAO,CAAC;AAGnD,OAAO,EACH,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACxB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,wDAAwD,CAAC;AAC5F,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAK1D,OAAO,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AAY5E,kEAAkE;AAClE,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAQtE,MAAM,MAAM,oBAAoB,GAAG;IAC/B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,mBAAmB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,cAAc,CAAC,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IACvD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACtB,MAAM,EAAE,qBAAqB,EAAE,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACxC,YAAY,CAAC,EAAE,eAAe,CAAC;KAClC,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,KAAK,EAAE,mBAAmB,CAAC;QAC3B,cAAc,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5C,YAAY,CAAC,EAAE,eAAe,CAAC;QAC/B,cAAc,CAAC,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;KAC1D,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAC,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAA;KAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,sBAAsB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACpE,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CAgGpD,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- import React, { useState } from 'react';
3
+ import React, { useMemo, useState } from 'react';
4
4
  import cn from 'bem-cn-lite';
5
5
  import { SegmentedRadioGroup } from '@gravity-ui/uikit';
6
6
  import { MetaTable } from '../../components';
@@ -8,6 +8,8 @@ import i18n from './i18n';
8
8
  import { SchemaTab } from './SchemaTab';
9
9
  import { PreviewTab } from './PreviewTab';
10
10
  import "./NavigationTable.css";
11
+ import { sortColumnsBySchema } from './helpers/sortColumnsBySchema';
12
+ import { filterSchema } from './helpers/filterSchema';
11
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
14
  var b = cn('navigation-table');
13
15
 
@@ -45,24 +47,33 @@ export var NavigationTable = function NavigationTable(_ref) {
45
47
  setInternalFilter = _useState4[1];
46
48
  var filter = controlledFilter !== null && controlledFilter !== void 0 ? controlledFilter : internalFilter;
47
49
  var setFilter = controlledOnFilterChange !== null && controlledOnFilterChange !== void 0 ? controlledOnFilterChange : setInternalFilter;
50
+ var normalizedTable = useMemo(function () {
51
+ if (!table) return null;
52
+ return _objectSpread(_objectSpread({}, table), {}, {
53
+ columns: sortColumnsBySchema(table.columns, table.schema)
54
+ });
55
+ }, [table]);
56
+ var filteredSchema = useMemo(function () {
57
+ return normalizedTable ? filterSchema(normalizedTable.schema, filter) : [];
58
+ }, [normalizedTable, filter]);
48
59
  var handleChangeTab = function handleChangeTab(id) {
49
60
  setActiveTab(id);
50
61
  };
51
- if (!table) {
62
+ if (!normalizedTable) {
52
63
  return /*#__PURE__*/_jsx("div", {
53
64
  className: b(null, className),
54
65
  children: emptyMessage !== null && emptyMessage !== void 0 ? emptyMessage : i18n('context_empty-data')
55
66
  });
56
67
  }
57
68
  var schemaData = {
58
- schema: table.schema,
69
+ schema: filteredSchema,
59
70
  filter: filter,
60
71
  onFilterChange: setFilter,
61
72
  ysonSettings: ysonSettings
62
73
  };
63
74
  var schemaContent = activeTab === "schema" && (renderSchemaTab ? renderSchemaTab(schemaData) : /*#__PURE__*/_jsx(SchemaTab, _objectSpread({}, schemaData)));
64
75
  var previewData = {
65
- table: table,
76
+ table: normalizedTable,
66
77
  onEditorInsert: onInsertTableSelect,
67
78
  ysonSettings: ysonSettings,
68
79
  primitiveTypes: primitiveTypes
@@ -72,9 +83,10 @@ export var NavigationTable = function NavigationTable(_ref) {
72
83
  ErrorBoundaryComponent: ErrorBoundaryComponent
73
84
  })));
74
85
  var metaContent = activeTab === "meta" && (renderMetaTab ? renderMetaTab({
75
- items: table.meta
86
+ items: normalizedTable.meta
76
87
  }) : /*#__PURE__*/_jsx(MetaTable, {
77
- items: table.meta
88
+ className: b('meta'),
89
+ items: normalizedTable.meta
78
90
  }));
79
91
  return /*#__PURE__*/_jsxs("div", {
80
92
  className: b(null, className),
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","cn","SegmentedRadioGroup","MetaTable","i18n","SchemaTab","PreviewTab","jsx","_jsx","jsxs","_jsxs","b","TABLE_TAB_FROM_INITIAL","schema","preview","meta","NavigationTable","_ref","table","initialActiveTab","controlledFilter","filter","controlledOnFilterChange","onFilterChange","onInsertTableSelect","ysonSettings","emptyMessage","primitiveTypes","renderSchemaTab","renderPreviewTab","renderMetaTab","className","logError","ErrorBoundaryComponent","_useState","_useState2","_slicedToArray","activeTab","setActiveTab","_useState3","_useState4","internalFilter","setInternalFilter","setFilter","handleChangeTab","id","children","schemaData","schemaContent","_objectSpread","previewData","onEditorInsert","previewContent","metaContent","items","defaultValue","onUpdate","options","value","content"],"sources":["NavigationTable.tsx"],"sourcesContent":["import React, {FC, useState} from 'react';\nimport cn from 'bem-cn-lite';\nimport {SegmentedRadioGroup} from '@gravity-ui/uikit';\nimport {\n LogErrorFn,\n NavigationTableData,\n NavigationTableMeta,\n NavigationTableSchema,\n} from '../../types';\nimport type {UnipikaSettings} from '../../internal/Yson/StructuredYson/StructuredYsonTypes';\nimport type {SchemaDataTypeProps} from '../../components';\nimport {MetaTable} from '../../components';\nimport i18n from './i18n';\nimport {SchemaTab} from './SchemaTab';\nimport {PreviewTab} from './PreviewTab';\nimport './NavigationTable.scss';\nimport type {ErrorBoundaryProps} from '../../internal/DefaultErrorBoundary';\n\nconst b = cn('navigation-table');\n\nconst enum TableTab {\n Schema = 'schema',\n Preview = 'preview',\n Meta = 'meta',\n}\n\n/** Pick the tab shown on first render (non-null `table` only). */\nexport type NavigationTableInitialTab = 'schema' | 'preview' | 'meta';\n\nconst TABLE_TAB_FROM_INITIAL: Record<NavigationTableInitialTab, TableTab> = {\n schema: TableTab.Schema,\n preview: TableTab.Preview,\n meta: TableTab.Meta,\n};\n\nexport type NavigationTableProps = {\n table: NavigationTableData | null;\n initialActiveTab?: NavigationTableInitialTab;\n filter?: string;\n onFilterChange?: (value: string) => void;\n onInsertTableSelect?: () => void | Promise<void>;\n ysonSettings?: UnipikaSettings;\n emptyMessage?: React.ReactNode;\n primitiveTypes?: SchemaDataTypeProps['primitiveTypes'];\n renderSchemaTab?: (props: {\n schema: NavigationTableSchema[];\n filter: string;\n onFilterChange: (value: string) => void;\n ysonSettings?: UnipikaSettings;\n }) => React.ReactNode;\n renderPreviewTab?: (props: {\n table: NavigationTableData;\n onEditorInsert?: () => void | Promise<void>;\n ysonSettings?: UnipikaSettings;\n primitiveTypes?: SchemaDataTypeProps['primitiveTypes'];\n }) => React.ReactNode;\n renderMetaTab?: (props: {items: NavigationTableMeta[][]}) => React.ReactNode;\n className?: string;\n logError?: LogErrorFn;\n ErrorBoundaryComponent?: React.ComponentType<ErrorBoundaryProps>;\n};\n\nexport const NavigationTable: FC<NavigationTableProps> = ({\n table,\n initialActiveTab,\n filter: controlledFilter,\n onFilterChange: controlledOnFilterChange,\n onInsertTableSelect,\n ysonSettings,\n emptyMessage,\n primitiveTypes,\n renderSchemaTab,\n renderPreviewTab,\n renderMetaTab,\n className,\n logError,\n ErrorBoundaryComponent,\n}) => {\n const [activeTab, setActiveTab] = useState<TableTab>(() =>\n initialActiveTab ? TABLE_TAB_FROM_INITIAL[initialActiveTab] : TableTab.Schema,\n );\n const [internalFilter, setInternalFilter] = useState('');\n const filter = controlledFilter ?? internalFilter;\n const setFilter = controlledOnFilterChange ?? setInternalFilter;\n\n const handleChangeTab = (id: string) => {\n setActiveTab(id as TableTab);\n };\n\n if (!table) {\n return (\n <div className={b(null, className)}>{emptyMessage ?? i18n('context_empty-data')}</div>\n );\n }\n\n const schemaData = {schema: table.schema, filter, onFilterChange: setFilter, ysonSettings};\n const schemaContent =\n activeTab === TableTab.Schema &&\n (renderSchemaTab ? renderSchemaTab(schemaData) : <SchemaTab {...schemaData} />);\n\n const previewData = {\n table,\n onEditorInsert: onInsertTableSelect,\n ysonSettings,\n primitiveTypes,\n };\n const previewContent =\n activeTab === TableTab.Preview &&\n (renderPreviewTab ? (\n renderPreviewTab(previewData)\n ) : (\n <PreviewTab\n {...previewData}\n logError={logError}\n ErrorBoundaryComponent={ErrorBoundaryComponent}\n />\n ));\n\n const metaContent =\n activeTab === TableTab.Meta &&\n (renderMetaTab ? renderMetaTab({items: table.meta}) : <MetaTable items={table.meta} />);\n\n return (\n <div className={b(null, className)}>\n <SegmentedRadioGroup\n defaultValue={activeTab}\n onUpdate={handleChangeTab}\n options={[\n {value: TableTab.Schema, content: i18n('title_schema')},\n {value: TableTab.Preview, content: i18n('title_preview')},\n {value: TableTab.Meta, content: i18n('title_meta')},\n ]}\n />\n <div className={b('content')}>\n {schemaContent}\n {previewContent}\n {metaContent}\n </div>\n </div>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","useState","cn","SegmentedRadioGroup","MetaTable","i18n","SchemaTab","PreviewTab","sortColumnsBySchema","filterSchema","jsx","_jsx","jsxs","_jsxs","b","TABLE_TAB_FROM_INITIAL","schema","preview","meta","NavigationTable","_ref","table","initialActiveTab","controlledFilter","filter","controlledOnFilterChange","onFilterChange","onInsertTableSelect","ysonSettings","emptyMessage","primitiveTypes","renderSchemaTab","renderPreviewTab","renderMetaTab","className","logError","ErrorBoundaryComponent","_useState","_useState2","_slicedToArray","activeTab","setActiveTab","_useState3","_useState4","internalFilter","setInternalFilter","setFilter","normalizedTable","_objectSpread","columns","filteredSchema","handleChangeTab","id","children","schemaData","schemaContent","previewData","onEditorInsert","previewContent","metaContent","items","defaultValue","onUpdate","options","value","content"],"sources":["NavigationTable.tsx"],"sourcesContent":["import React, {FC, useMemo, useState} from 'react';\nimport cn from 'bem-cn-lite';\nimport {SegmentedRadioGroup} from '@gravity-ui/uikit';\nimport {\n LogErrorFn,\n NavigationTableData,\n NavigationTableMeta,\n NavigationTableSchema,\n} from '../../types';\nimport type {UnipikaSettings} from '../../internal/Yson/StructuredYson/StructuredYsonTypes';\nimport type {SchemaDataTypeProps} from '../../components';\nimport {MetaTable} from '../../components';\nimport i18n from './i18n';\nimport {SchemaTab} from './SchemaTab';\nimport {PreviewTab} from './PreviewTab';\nimport './NavigationTable.scss';\nimport type {ErrorBoundaryProps} from '../../internal/DefaultErrorBoundary';\nimport {sortColumnsBySchema} from './helpers/sortColumnsBySchema';\nimport {filterSchema} from './helpers/filterSchema';\n\nconst b = cn('navigation-table');\n\nconst enum TableTab {\n Schema = 'schema',\n Preview = 'preview',\n Meta = 'meta',\n}\n\n/** Pick the tab shown on first render (non-null `table` only). */\nexport type NavigationTableInitialTab = 'schema' | 'preview' | 'meta';\n\nconst TABLE_TAB_FROM_INITIAL: Record<NavigationTableInitialTab, TableTab> = {\n schema: TableTab.Schema,\n preview: TableTab.Preview,\n meta: TableTab.Meta,\n};\n\nexport type NavigationTableProps = {\n table?: NavigationTableData;\n initialActiveTab?: NavigationTableInitialTab;\n filter?: string;\n onFilterChange?: (value: string) => void;\n onInsertTableSelect?: () => void | Promise<void>;\n ysonSettings?: UnipikaSettings;\n emptyMessage?: React.ReactNode;\n primitiveTypes?: SchemaDataTypeProps['primitiveTypes'];\n renderSchemaTab?: (props: {\n schema: NavigationTableSchema[];\n filter: string;\n onFilterChange: (value: string) => void;\n ysonSettings?: UnipikaSettings;\n }) => React.ReactNode;\n renderPreviewTab?: (props: {\n table: NavigationTableData;\n onEditorInsert?: () => void | Promise<void>;\n ysonSettings?: UnipikaSettings;\n primitiveTypes?: SchemaDataTypeProps['primitiveTypes'];\n }) => React.ReactNode;\n renderMetaTab?: (props: {items: NavigationTableMeta[][]}) => React.ReactNode;\n className?: string;\n logError?: LogErrorFn;\n ErrorBoundaryComponent?: React.ComponentType<ErrorBoundaryProps>;\n};\n\nexport const NavigationTable: FC<NavigationTableProps> = ({\n table,\n initialActiveTab,\n filter: controlledFilter,\n onFilterChange: controlledOnFilterChange,\n onInsertTableSelect,\n ysonSettings,\n emptyMessage,\n primitiveTypes,\n renderSchemaTab,\n renderPreviewTab,\n renderMetaTab,\n className,\n logError,\n ErrorBoundaryComponent,\n}) => {\n const [activeTab, setActiveTab] = useState<TableTab>(() =>\n initialActiveTab ? TABLE_TAB_FROM_INITIAL[initialActiveTab] : TableTab.Schema,\n );\n const [internalFilter, setInternalFilter] = useState('');\n const filter = controlledFilter ?? internalFilter;\n const setFilter = controlledOnFilterChange ?? setInternalFilter;\n\n const normalizedTable = useMemo(() => {\n if (!table) return null;\n\n return {\n ...table,\n columns: sortColumnsBySchema(table.columns, table.schema),\n };\n }, [table]);\n\n const filteredSchema = useMemo(\n () => (normalizedTable ? filterSchema(normalizedTable.schema, filter) : []),\n [normalizedTable, filter],\n );\n\n const handleChangeTab = (id: string) => {\n setActiveTab(id as TableTab);\n };\n\n if (!normalizedTable) {\n return (\n <div className={b(null, className)}>{emptyMessage ?? i18n('context_empty-data')}</div>\n );\n }\n\n const schemaData = {schema: filteredSchema, filter, onFilterChange: setFilter, ysonSettings};\n const schemaContent =\n activeTab === TableTab.Schema &&\n (renderSchemaTab ? renderSchemaTab(schemaData) : <SchemaTab {...schemaData} />);\n\n const previewData = {\n table: normalizedTable,\n onEditorInsert: onInsertTableSelect,\n ysonSettings,\n primitiveTypes,\n };\n const previewContent =\n activeTab === TableTab.Preview &&\n (renderPreviewTab ? (\n renderPreviewTab(previewData)\n ) : (\n <PreviewTab\n {...previewData}\n logError={logError}\n ErrorBoundaryComponent={ErrorBoundaryComponent}\n />\n ));\n\n const metaContent =\n activeTab === TableTab.Meta &&\n (renderMetaTab ? (\n renderMetaTab({items: normalizedTable.meta})\n ) : (\n <MetaTable className={b('meta')} items={normalizedTable.meta} />\n ));\n\n return (\n <div className={b(null, className)}>\n <SegmentedRadioGroup\n defaultValue={activeTab}\n onUpdate={handleChangeTab}\n options={[\n {value: TableTab.Schema, content: i18n('title_schema')},\n {value: TableTab.Preview, content: i18n('title_preview')},\n {value: TableTab.Meta, content: i18n('title_meta')},\n ]}\n />\n <div className={b('content')}>\n {schemaContent}\n {previewContent}\n {metaContent}\n </div>\n </div>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -6,6 +6,12 @@
6
6
  overflow-x: auto;
7
7
  }
8
8
 
9
+ &__meta {
10
+ .meta-table-item {
11
+ grid-template-columns: 140px auto;
12
+ }
13
+ }
14
+
9
15
  .data-table__value {
10
16
  position: relative;
11
17
  }
@@ -24,7 +24,7 @@ var meta = {
24
24
  return /*#__PURE__*/_jsx("div", {
25
25
  style: navigationTableStoryFrameStyle,
26
26
  children: /*#__PURE__*/_jsx(NavigationTable, {
27
- table: state === 'empty' ? null : navigationTableSampleTable,
27
+ table: state === 'empty' ? undefined : navigationTableSampleTable,
28
28
  emptyMessage: navigationTableStoryEmptyMessage,
29
29
  ysonSettings: YSON_DEFAULT_UNIPIKA_SETTINGS,
30
30
  logError: function logError() {
@@ -1 +1 @@
1
- {"version":3,"names":["YSON_DEFAULT_UNIPIKA_SETTINGS","NavigationTable","navigationTableSampleTable","navigationTableStoryEmptyMessage","navigationTableStoryFrameStyle","navigationTableVisualCaseOrder","jsx","_jsx","meta","title","tags","args","state","argTypes","control","options","_toConsumableArray","description","parameters","layout","render","_ref","style","children","table","emptyMessage","ysonSettings","logError","undefined","onInsertTableSelect","Default"],"sources":["NavigationTable.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\n\nimport {YSON_DEFAULT_UNIPIKA_SETTINGS} from '../../internal/Yson';\nimport {NavigationTable} from './NavigationTable';\nimport {\n type NavigationTableStoryState,\n navigationTableSampleTable,\n navigationTableStoryEmptyMessage,\n navigationTableStoryFrameStyle,\n navigationTableVisualCaseOrder,\n} from './navigationTableStorySetup';\n\ntype DemoArgs = {\n state: NavigationTableStoryState;\n};\n\nconst meta: Meta<DemoArgs> = {\n title: 'Modules/NavigationTable',\n tags: ['autodocs'],\n args: {\n state: 'withData',\n },\n argTypes: {\n state: {\n control: 'inline-radio',\n options: [...navigationTableVisualCaseOrder],\n description:\n 'Loaded table (Schema / Preview / Meta tabs) or empty state when `table` is null.',\n },\n },\n parameters: {\n layout: 'padded',\n },\n render: ({state}: DemoArgs) => (\n <div style={navigationTableStoryFrameStyle}>\n <NavigationTable\n table={state === 'empty' ? null : navigationTableSampleTable}\n emptyMessage={navigationTableStoryEmptyMessage}\n ysonSettings={YSON_DEFAULT_UNIPIKA_SETTINGS}\n logError={() => undefined}\n onInsertTableSelect={() => undefined}\n />\n </div>\n ),\n};\n\nexport default meta;\n\nexport const Default: StoryObj<DemoArgs> = {};\n"],"mappings":";AAEA,SAAQA,6BAA6B,QAAO,qBAAqB;AACjE,SAAQC,eAAe,QAAO,mBAAmB;AACjD,SAEIC,0BAA0B,EAC1BC,gCAAgC,EAChCC,8BAA8B,EAC9BC,8BAA8B,QAC3B,6BAA6B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAMrC,IAAMC,IAAoB,GAAG;EACzBC,KAAK,EAAE,yBAAyB;EAChCC,IAAI,EAAE,CAAC,UAAU,CAAC;EAClBC,IAAI,EAAE;IACFC,KAAK,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACND,KAAK,EAAE;MACHE,OAAO,EAAE,cAAc;MACvBC,OAAO,EAAAC,kBAAA,CAAMX,8BAA8B,CAAC;MAC5CY,WAAW,EACP;IACR;EACJ,CAAC;EACDC,UAAU,EAAE;IACRC,MAAM,EAAE;EACZ,CAAC;EACDC,MAAM,EAAE,SAARA,MAAMA,CAAAC,IAAA;IAAA,IAAIT,KAAK,GAAAS,IAAA,CAALT,KAAK;IAAA,oBACXL,IAAA;MAAKe,KAAK,EAAElB,8BAA+B;MAAAmB,QAAA,eACvChB,IAAA,CAACN,eAAe;QACZuB,KAAK,EAAEZ,KAAK,KAAK,OAAO,GAAG,IAAI,GAAGV,0BAA2B;QAC7DuB,YAAY,EAAEtB,gCAAiC;QAC/CuB,YAAY,EAAE1B,6BAA8B;QAC5C2B,QAAQ,EAAE,SAAVA,QAAQA,CAAA;UAAA,OAAQC,SAAS;QAAA,CAAC;QAC1BC,mBAAmB,EAAE,SAArBA,mBAAmBA,CAAA;UAAA,OAAQD,SAAS;QAAA;MAAC,CACxC;IAAC,CACD,CAAC;EAAA;AAEd,CAAC;AAED,eAAepB,IAAI;AAEnB,OAAO,IAAMsB,OAA2B,GAAG,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["YSON_DEFAULT_UNIPIKA_SETTINGS","NavigationTable","navigationTableSampleTable","navigationTableStoryEmptyMessage","navigationTableStoryFrameStyle","navigationTableVisualCaseOrder","jsx","_jsx","meta","title","tags","args","state","argTypes","control","options","_toConsumableArray","description","parameters","layout","render","_ref","style","children","table","undefined","emptyMessage","ysonSettings","logError","onInsertTableSelect","Default"],"sources":["NavigationTable.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\n\nimport {YSON_DEFAULT_UNIPIKA_SETTINGS} from '../../internal/Yson';\nimport {NavigationTable} from './NavigationTable';\nimport {\n type NavigationTableStoryState,\n navigationTableSampleTable,\n navigationTableStoryEmptyMessage,\n navigationTableStoryFrameStyle,\n navigationTableVisualCaseOrder,\n} from './navigationTableStorySetup';\n\ntype DemoArgs = {\n state: NavigationTableStoryState;\n};\n\nconst meta: Meta<DemoArgs> = {\n title: 'Modules/NavigationTable',\n tags: ['autodocs'],\n args: {\n state: 'withData',\n },\n argTypes: {\n state: {\n control: 'inline-radio',\n options: [...navigationTableVisualCaseOrder],\n description:\n 'Loaded table (Schema / Preview / Meta tabs) or empty state when `table` is null.',\n },\n },\n parameters: {\n layout: 'padded',\n },\n render: ({state}: DemoArgs) => (\n <div style={navigationTableStoryFrameStyle}>\n <NavigationTable\n table={state === 'empty' ? undefined : navigationTableSampleTable}\n emptyMessage={navigationTableStoryEmptyMessage}\n ysonSettings={YSON_DEFAULT_UNIPIKA_SETTINGS}\n logError={() => undefined}\n onInsertTableSelect={() => undefined}\n />\n </div>\n ),\n};\n\nexport default meta;\n\nexport const Default: StoryObj<DemoArgs> = {};\n"],"mappings":";AAEA,SAAQA,6BAA6B,QAAO,qBAAqB;AACjE,SAAQC,eAAe,QAAO,mBAAmB;AACjD,SAEIC,0BAA0B,EAC1BC,gCAAgC,EAChCC,8BAA8B,EAC9BC,8BAA8B,QAC3B,6BAA6B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAMrC,IAAMC,IAAoB,GAAG;EACzBC,KAAK,EAAE,yBAAyB;EAChCC,IAAI,EAAE,CAAC,UAAU,CAAC;EAClBC,IAAI,EAAE;IACFC,KAAK,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACND,KAAK,EAAE;MACHE,OAAO,EAAE,cAAc;MACvBC,OAAO,EAAAC,kBAAA,CAAMX,8BAA8B,CAAC;MAC5CY,WAAW,EACP;IACR;EACJ,CAAC;EACDC,UAAU,EAAE;IACRC,MAAM,EAAE;EACZ,CAAC;EACDC,MAAM,EAAE,SAARA,MAAMA,CAAAC,IAAA;IAAA,IAAIT,KAAK,GAAAS,IAAA,CAALT,KAAK;IAAA,oBACXL,IAAA;MAAKe,KAAK,EAAElB,8BAA+B;MAAAmB,QAAA,eACvChB,IAAA,CAACN,eAAe;QACZuB,KAAK,EAAEZ,KAAK,KAAK,OAAO,GAAGa,SAAS,GAAGvB,0BAA2B;QAClEwB,YAAY,EAAEvB,gCAAiC;QAC/CwB,YAAY,EAAE3B,6BAA8B;QAC5C4B,QAAQ,EAAE,SAAVA,QAAQA,CAAA;UAAA,OAAQH,SAAS;QAAA,CAAC;QAC1BI,mBAAmB,EAAE,SAArBA,mBAAmBA,CAAA;UAAA,OAAQJ,SAAS;QAAA;MAAC,CACxC;IAAC,CACD,CAAC;EAAA;AAEd,CAAC;AAED,eAAejB,IAAI;AAEnB,OAAO,IAAMsB,OAA2B,GAAG,CAAC,CAAC","ignoreList":[]}
@@ -92,7 +92,7 @@ export var SchemaTab = function SchemaTab(_ref) {
92
92
  data: schema,
93
93
  columns: columns,
94
94
  useThemeYT: true
95
- })]
95
+ }, filter)]
96
96
  });
97
97
  };
98
98
  // #sourceMappingURL=SchemaTab.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","Flex","Text","GravityText","Icon","TextInput","BarsAscendingAlignLeftArrowUpIcon","props","_jsx","_objectSpread","children","fill","fillRule","d","clipRule","defaultProps","xmlns","width","height","viewBox","BarsAscendingAlignLeftArrowDownIcon","unipika","DataTableYT","YSON_DEFAULT_UNIPIKA_SETTINGS","Yson","i18n","jsx","jsxs","_jsxs","Fragment","_Fragment","SchemaTab","_ref","schema","filter","onFilterChange","ysonSettings","cellUnipikaSettings","columns","name","header","render","_ref2","row","alignItems","gap","Boolean","sort_order","data","size","value","unescapeKeyValue","settings","asHTML","inline","_ref3","type","required","variant","placeholder","onUpdate","hasClear","useThemeYT"],"sources":["SchemaTab.tsx"],"sourcesContent":["import {FC, useMemo} from 'react';\nimport {Flex, Text as GravityText, Icon, TextInput} from '@gravity-ui/uikit';\nimport BarsAscendingAlignLeftArrowUpIcon from '@gravity-ui/icons/svgs/bars-ascending-align-left-arrow-up.svg';\nimport BarsAscendingAlignLeftArrowDownIcon from '@gravity-ui/icons/svgs/bars-ascending-align-left-arrow-down.svg';\nimport type {NavigationTableSchema} from '../../types';\nimport {Column} from '@gravity-ui/react-data-table';\nimport unipika from '../../utils/unipika';\nimport {DataTableYT} from '../../components';\nimport {YSON_DEFAULT_UNIPIKA_SETTINGS, Yson} from '../../internal/Yson';\nimport type {UnipikaSettings} from '../../internal/Yson/StructuredYson/StructuredYsonTypes';\nimport i18n from './i18n';\n\ntype SchemaTabProps = {\n schema: NavigationTableSchema[];\n filter: string;\n onFilterChange: (value: string) => void;\n ysonSettings?: UnipikaSettings;\n};\n\nexport const SchemaTab: FC<SchemaTabProps> = ({schema, filter, onFilterChange, ysonSettings}) => {\n const cellUnipikaSettings = ysonSettings ?? YSON_DEFAULT_UNIPIKA_SETTINGS;\n\n const columns: Column<NavigationTableSchema>[] = useMemo(\n () => [\n {\n name: 'name',\n header: 'Name',\n render: ({row}) => {\n return (\n <Flex alignItems=\"center\" gap={1}>\n {Boolean(row.sort_order) && (\n <Icon\n data={\n row.sort_order === 'descending'\n ? BarsAscendingAlignLeftArrowUpIcon\n : BarsAscendingAlignLeftArrowDownIcon\n }\n size={16}\n />\n )}{' '}\n <Yson\n value={unipika.unescapeKeyValue(row.name)}\n settings={{...cellUnipikaSettings, asHTML: false}}\n inline\n />\n </Flex>\n );\n },\n },\n {\n name: 'type',\n header: 'Type v3',\n render: ({row}) => {\n return (\n <>\n {row.type}{' '}\n {!row.required && (\n <GravityText variant=\"caption-1\">optional</GravityText>\n )}\n </>\n );\n },\n },\n ],\n [cellUnipikaSettings],\n );\n\n return (\n <>\n <TextInput\n value={filter}\n placeholder={i18n('field_filter-by-name')}\n onUpdate={onFilterChange}\n hasClear\n />\n <DataTableYT data={schema} columns={columns} useThemeYT />\n </>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useMemo","Flex","Text","GravityText","Icon","TextInput","BarsAscendingAlignLeftArrowUpIcon","props","_jsx","_objectSpread","children","fill","fillRule","d","clipRule","defaultProps","xmlns","width","height","viewBox","BarsAscendingAlignLeftArrowDownIcon","unipika","DataTableYT","YSON_DEFAULT_UNIPIKA_SETTINGS","Yson","i18n","jsx","jsxs","_jsxs","Fragment","_Fragment","SchemaTab","_ref","schema","filter","onFilterChange","ysonSettings","cellUnipikaSettings","columns","name","header","render","_ref2","row","alignItems","gap","Boolean","sort_order","data","size","value","unescapeKeyValue","settings","asHTML","inline","_ref3","type","required","variant","placeholder","onUpdate","hasClear","useThemeYT"],"sources":["SchemaTab.tsx"],"sourcesContent":["import {FC, useMemo} from 'react';\nimport {Flex, Text as GravityText, Icon, TextInput} from '@gravity-ui/uikit';\nimport BarsAscendingAlignLeftArrowUpIcon from '@gravity-ui/icons/svgs/bars-ascending-align-left-arrow-up.svg';\nimport BarsAscendingAlignLeftArrowDownIcon from '@gravity-ui/icons/svgs/bars-ascending-align-left-arrow-down.svg';\nimport type {NavigationTableSchema} from '../../types';\nimport {Column} from '@gravity-ui/react-data-table';\nimport unipika from '../../utils/unipika';\nimport {DataTableYT} from '../../components';\nimport {YSON_DEFAULT_UNIPIKA_SETTINGS, Yson} from '../../internal/Yson';\nimport type {UnipikaSettings} from '../../internal/Yson/StructuredYson/StructuredYsonTypes';\nimport i18n from './i18n';\n\ntype SchemaTabProps = {\n schema: NavigationTableSchema[];\n filter: string;\n onFilterChange: (value: string) => void;\n ysonSettings?: UnipikaSettings;\n};\n\nexport const SchemaTab: FC<SchemaTabProps> = ({schema, filter, onFilterChange, ysonSettings}) => {\n const cellUnipikaSettings = ysonSettings ?? YSON_DEFAULT_UNIPIKA_SETTINGS;\n\n const columns: Column<NavigationTableSchema>[] = useMemo(\n () => [\n {\n name: 'name',\n header: 'Name',\n render: ({row}) => {\n return (\n <Flex alignItems=\"center\" gap={1}>\n {Boolean(row.sort_order) && (\n <Icon\n data={\n row.sort_order === 'descending'\n ? BarsAscendingAlignLeftArrowUpIcon\n : BarsAscendingAlignLeftArrowDownIcon\n }\n size={16}\n />\n )}{' '}\n <Yson\n value={unipika.unescapeKeyValue(row.name)}\n settings={{...cellUnipikaSettings, asHTML: false}}\n inline\n />\n </Flex>\n );\n },\n },\n {\n name: 'type',\n header: 'Type v3',\n render: ({row}) => {\n return (\n <>\n {row.type}{' '}\n {!row.required && (\n <GravityText variant=\"caption-1\">optional</GravityText>\n )}\n </>\n );\n },\n },\n ],\n [cellUnipikaSettings],\n );\n\n return (\n <>\n <TextInput\n value={filter}\n placeholder={i18n('field_filter-by-name')}\n onUpdate={onFilterChange}\n hasClear\n />\n <DataTableYT key={filter} data={schema} columns={columns} useThemeYT />\n </>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { NavigationTableSchema } from '../../../types';
2
+ export declare const filterSchema: (schema: NavigationTableSchema[], filter: string) => NavigationTableSchema[];
3
+ //# sourceMappingURL=filterSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterSchema.d.ts","sourceRoot":"","sources":["../../../../../src/modules/NavigationTable/helpers/filterSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,gBAAgB,CAAC;AAKrD,eAAO,MAAM,YAAY,GAAI,QAAQ,qBAAqB,EAAE,EAAE,QAAQ,MAAM,4BAM3E,CAAC"}
@@ -0,0 +1,12 @@
1
+ var filterValueInText = function filterValueInText(value, filter) {
2
+ return value.toLowerCase().includes(filter.toLowerCase());
3
+ };
4
+ export var filterSchema = function filterSchema(schema, filter) {
5
+ if (!filter) return schema;
6
+ return schema.filter(function (_ref) {
7
+ var name = _ref.name,
8
+ type = _ref.type;
9
+ return filterValueInText(name, filter) || filterValueInText(type, filter);
10
+ });
11
+ };
12
+ // #sourceMappingURL=filterSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["filterValueInText","value","filter","toLowerCase","includes","filterSchema","schema","_ref","name","type"],"sources":["filterSchema.ts"],"sourcesContent":["import {NavigationTableSchema} from '../../../types';\n\nconst filterValueInText = (value: string, filter: string) =>\n value.toLowerCase().includes(filter.toLowerCase());\n\nexport const filterSchema = (schema: NavigationTableSchema[], filter: string) => {\n if (!filter) return schema;\n\n return schema.filter(({name, type}) => {\n return filterValueInText(name, filter) || filterValueInText(type, filter);\n });\n};\n"],"mappings":"AAEA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,KAAa,EAAEC,MAAc;EAAA,OACpDD,KAAK,CAACE,WAAW,CAAC,CAAC,CAACC,QAAQ,CAACF,MAAM,CAACC,WAAW,CAAC,CAAC,CAAC;AAAA;AAEtD,OAAO,IAAME,YAAY,GAAG,SAAfA,YAAYA,CAAIC,MAA+B,EAAEJ,MAAc,EAAK;EAC7E,IAAI,CAACA,MAAM,EAAE,OAAOI,MAAM;EAE1B,OAAOA,MAAM,CAACJ,MAAM,CAAC,UAAAK,IAAA,EAAkB;IAAA,IAAhBC,IAAI,GAAAD,IAAA,CAAJC,IAAI;MAAEC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IAC7B,OAAOT,iBAAiB,CAACQ,IAAI,EAAEN,MAAM,CAAC,IAAIF,iBAAiB,CAACS,IAAI,EAAEP,MAAM,CAAC;EAC7E,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { NavigationTableData, NavigationTableSchema } from '../../../types';
2
+ export declare const sortColumnsBySchema: (columns: NavigationTableData["columns"], schema: NavigationTableSchema[]) => string[];
3
+ //# sourceMappingURL=sortColumnsBySchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortColumnsBySchema.d.ts","sourceRoot":"","sources":["../../../../../src/modules/NavigationTable/helpers/sortColumnsBySchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAE,qBAAqB,EAAC,MAAM,gBAAgB,CAAC;AAE1E,eAAO,MAAM,mBAAmB,GAC5B,SAAS,mBAAmB,CAAC,SAAS,CAAC,EACvC,QAAQ,qBAAqB,EAAE,aAoBlC,CAAC"}
@@ -0,0 +1,25 @@
1
+ export var sortColumnsBySchema = function sortColumnsBySchema(columns, schema) {
2
+ var schemaOrder = new Map(schema.map(function (_ref, index) {
3
+ var name = _ref.name;
4
+ return [name, index];
5
+ }));
6
+ return columns.map(function (name, index) {
7
+ return {
8
+ name: name,
9
+ index: index
10
+ };
11
+ }).sort(function (a, b) {
12
+ var schemaIndexA = schemaOrder.get(a.name);
13
+ var schemaIndexB = schemaOrder.get(b.name);
14
+ if (schemaIndexA !== undefined && schemaIndexB !== undefined) {
15
+ return schemaIndexA - schemaIndexB;
16
+ }
17
+ if (schemaIndexA !== undefined) return -1;
18
+ if (schemaIndexB !== undefined) return 1;
19
+ return a.index - b.index;
20
+ }).map(function (_ref2) {
21
+ var name = _ref2.name;
22
+ return name;
23
+ });
24
+ };
25
+ // #sourceMappingURL=sortColumnsBySchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["sortColumnsBySchema","columns","schema","schemaOrder","Map","map","_ref","index","name","sort","a","b","schemaIndexA","get","schemaIndexB","undefined","_ref2"],"sources":["sortColumnsBySchema.ts"],"sourcesContent":["import {NavigationTableData, NavigationTableSchema} from '../../../types';\n\nexport const sortColumnsBySchema = (\n columns: NavigationTableData['columns'],\n schema: NavigationTableSchema[],\n) => {\n const schemaOrder = new Map(schema.map(({name}, index) => [name, index]));\n\n return columns\n .map((name, index) => ({name, index}))\n .sort((a, b) => {\n const schemaIndexA = schemaOrder.get(a.name);\n const schemaIndexB = schemaOrder.get(b.name);\n\n if (schemaIndexA !== undefined && schemaIndexB !== undefined) {\n return schemaIndexA - schemaIndexB;\n }\n\n if (schemaIndexA !== undefined) return -1;\n if (schemaIndexB !== undefined) return 1;\n\n return a.index - b.index;\n })\n .map(({name}) => name);\n};\n"],"mappings":"AAEA,OAAO,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAC5BC,OAAuC,EACvCC,MAA+B,EAC9B;EACD,IAAMC,WAAW,GAAG,IAAIC,GAAG,CAACF,MAAM,CAACG,GAAG,CAAC,UAAAC,IAAA,EAASC,KAAK;IAAA,IAAZC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IAAA,OAAa,CAACA,IAAI,EAAED,KAAK,CAAC;EAAA,EAAC,CAAC;EAEzE,OAAON,OAAO,CACTI,GAAG,CAAC,UAACG,IAAI,EAAED,KAAK;IAAA,OAAM;MAACC,IAAI,EAAJA,IAAI;MAAED,KAAK,EAALA;IAAK,CAAC;EAAA,CAAC,CAAC,CACrCE,IAAI,CAAC,UAACC,CAAC,EAAEC,CAAC,EAAK;IACZ,IAAMC,YAAY,GAAGT,WAAW,CAACU,GAAG,CAACH,CAAC,CAACF,IAAI,CAAC;IAC5C,IAAMM,YAAY,GAAGX,WAAW,CAACU,GAAG,CAACF,CAAC,CAACH,IAAI,CAAC;IAE5C,IAAII,YAAY,KAAKG,SAAS,IAAID,YAAY,KAAKC,SAAS,EAAE;MAC1D,OAAOH,YAAY,GAAGE,YAAY;IACtC;IAEA,IAAIF,YAAY,KAAKG,SAAS,EAAE,OAAO,CAAC,CAAC;IACzC,IAAID,YAAY,KAAKC,SAAS,EAAE,OAAO,CAAC;IAExC,OAAOL,CAAC,CAACH,KAAK,GAAGI,CAAC,CAACJ,KAAK;EAC5B,CAAC,CAAC,CACDF,GAAG,CAAC,UAAAW,KAAA;IAAA,IAAER,IAAI,GAAAQ,KAAA,CAAJR,IAAI;IAAA,OAAMA,IAAI;EAAA,EAAC;AAC9B,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ytsaurus/components",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "private": false,
5
5
  "description": "YTsaurus UI component library: navigation table, data display (Yson, Schema, DataTable), navigation API and shared config",
6
6
  "repository": {
@@ -100,5 +100,5 @@
100
100
  "hotkeys-js": "^3.13.15",
101
101
  "lodash": "^4.17.21"
102
102
  },
103
- "gitHead": "aac45af376e7b6c806044380b5d041ccdbab88a9"
103
+ "gitHead": "006a2d75ddb7f3a15072fcfa406227669cec7eca"
104
104
  }