kibana/packages
Wylie Conlon b35cde568b
[Lens] Formula editor (#99297)
* 💄 Hack to fix suggestion box

* 🐛 Fix validation messages

* 🐛 Relax operations check for managedReferences

* Change completion params

* 🏷️ Fix missing arg issue

*  Add more tinymath fns

* 🐛 Improved validation around math operations + multiple named arguments

* 🐛 Use new onError feature in math expression

* ♻️ Refactor namedArguments validation

* 🐛 Fix circular dependency issue in tests + minor fixes

* Move formula into a tab

* 🔥 Leftovers from previous merge

*  Move over namedArgs from previous function

*  Add tests for transferable scenarios

*  Fixed broken test

*  Use custom label for axis

* Allow switching back and forth to formula tab

* Add a section for the function reference

* Add modal editor and markdown docs

* Change the way math nodes are validated

* Use custom portal to fix monaco positioning

* Fix model sharing issues

* Provide signature help

* 🐛 Fix small test issue

* 🐛 Mark pow arguments as required

* 🐛 validate on first render only if a formula is present

* 🔥 Remove log10 fn for now

*  Improved math validation + add tests for math functions

* Fix mount/unmount issues with Monaco

* [Lens] Fully unmount React when flyout closes

* Fix bug with editor frame unmounting

* Fix type

* Add tests for monaco providers, add hover provider

* Add test for last_value

* Usability improvements

* Add KQL and Lucene named parameters

* Add kql, lucene completion and validation

* Fix autocomplete on weird characters and properly connect KQL

* Highlight functions that have additional requirements after validating

* Fix type error and move help text to popover

* Fix escape characters inside KQL

* 🐛 Fix dataType issue when moving over to Formula

* Automatically insert single quotes on every named param

* Only insert single quotes when typing kql= or lucene=

* Reorganize help popover

* Fix merge issues

* Update grammar for formulas

* Fix bad merge

* Rough fullscreen mode

* Type updates

* Pass through fullscreen state

* Remove more chrome from full screen mode

* Fix minor bugs in formula typing

* 🐛 Decouple column order of references and output

* 🔧 Fix tests and types

*  Add first functional test

* Fix copying formulas and empty formula

* Trigger suggestion prompt when hitting enter on function or typing kql=

* 🐛 Prevent flyout from closing while interacting with monaco

* refactoring

* move main column generation into parse module

* fix tests

* refactor small formula styles and markup

* documentation

* adjustments in formula footer

* Formula refactoring (#12)

* refactoring

* move main column generation into parse module

* fix tests

* more style and markup tweak for custom formula

* Fix tests

* [Expressions] Use table column ID instead of name when set

* [Lens] Create managedReference type for formulas

* Fix test failures

* Fix i18n types

* fix fullscreen flex issues

* Delete managedReference when replacing

* refactor css and markup; add button placeholders

* [Lens] Formulas

* Tests for formula

Co-authored-by: Marco Liberati <marco.liberati@elastic.co>

* added error count placeholder

* Add tooltips

* Refactoring from code review

* Fix some editor issues

* Update ID matching to match by name sometimes

* Improve performance of Monaco, fix formulas with 0, update labels

* Improve performance of full screen toggle

* Fix formula tests

* fix stuff

* Add an extra case to prevent insertion of duplicate column

* Simplify logic and add test for output ID

* add telemetry for Lens formula (#15)

* Respond to review comments

*  Improve the signatures with better documentation and examples

* adjust border styles to account for docs collapse

* refactor docs markup; restructure docs obj; styles

* Fix formula auto reordering (#18)

* fix formula auto reordering

* add unit test

* Fix and improve suggestion experience in Formula (#19)

*  Revisit documentation and suggestions

* 👌 Integrated feedback

*  Add query validation for quotes

* Usability updates & type fixes

* add search to formula

* fix form styles to match designs

* fix text styles; revert to Markdown for control

* 👌 Integrated more feedback

* improve search

* improve suggestions

* improve suggestions even more

* 🐛 Fix i18n issues (#22)

* Persist formula on leave, fix fullscreen and popovers

* Fix documentation tests

* 🏷️ fix type issue

* 🐛 Remove hidden operations from valid functions list

* 🐛 Fix empty string query edge case

* 🐛 Enable more suggestions + extends validation

* Fix tests that depended on setState being called without function

* Error state and text wrapping updates

*  Add new module to CodeEditor for brackets matching (#25)

* Fix type

* show warning

* keep current quick function

*  Improve suggestions within kql query

* 📷 Fix snapshot editor test

* 🐛 Improved suggestion for single quote and refactored debounce

* Fix lodash usage

* Fix tests

* Revert "keep current quick function"

This reverts commit ed477054c5.

* Improve performance of dispatch by using timeout

* Improve memoization of datapanel

* Fix escape characters

* fix reduced suggestions

* fix responsiveness

* fix unit test

* Fix autocomplete on nested math

* Show errors and warnings on first render

* fix transposing column crash

* Update comment

* 🐛 Fix field error message

* fix test types

* 📝 Fix i18n name

* 💄 Manage wordwrap via react component

* Fix selector for palettes that interferes with quick functions

* Use word wrapping by default

* Errors for managed references are handled at the top level

* 🐛 Move the cursor just next to new inserted text

* ⚗️ First pass for performance

* 🐛 Fix unwanted change

*  Memoize as many combobox props as possible

*  More memoization

* Show errors in hover

* Use temporary invalid state when moving away from formula

* Remove setActiveDimension and shouldClose, fixed by async setters

* Fix test dependency

* do not show quick functions tab

* increase documentation popover width

* fix functional test

* Call setActiveDimension when updating visualization

* Simplify handling of flyout with incomplete columns

* Fix test issues

* add description to formula telemetry

* fix schema

* Update from design feedback

* More review comments

* Hide callout border from v7 theme

Co-authored-by: dej611 <dej611@gmail.com>
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Joe Reuter <johannes.reuter@elastic.co>
Co-authored-by: Michael Marcialis <michael.marcialis@elastic.co>
Co-authored-by: Joe Reuter <email@johannes-reuter.de>
Co-authored-by: Marco Liberati <marco.liberati@elastic.co>
Co-authored-by: Marco Liberati <dej611@users.noreply.github.com>
2021-06-10 10:09:16 -04:00
..
elastic-datemath chore(NA): correctly setup dep order on js_library to fix windows build (#100420) 2021-05-21 00:03:54 +01:00
elastic-eslint-config-kibana [kbn/test] move types/ftr into src (#99555) 2021-05-17 09:51:53 -07:00
elastic-safer-lodash-set chore(NA): moving @elastic/safer-lodash-set into bazel (#98187) 2021-04-23 21:28:37 +01:00
kbn-ace chore(NA): correctly setup dep order on js_library to fix windows build (#100420) 2021-05-21 00:03:54 +01:00
kbn-analytics refact(NA): remove extra pkg_npm target and add specific target folders for @kbn/analytics on Bazel (#100569) 2021-05-26 00:58:43 +01:00
kbn-apm-config-loader chore(NA): correctly setup dep order on js_library to fix windows build (#100420) 2021-05-21 00:03:54 +01:00
kbn-apm-utils Improve Task Manager instrumentation (#99160) 2021-06-04 16:30:11 -04:00
kbn-babel-code-parser fix(NA): windows ts_project outside sandbox compilation (#100947) 2021-06-03 17:53:39 +01:00
kbn-babel-preset chore(NA): moving @kbn/monaco into bazel (#100709) 2021-05-27 18:55:28 +01:00
kbn-cli-dev-mode Propagate request cancelation though basePath proxy (#101561) 2021-06-08 17:27:27 +02:00
kbn-config [Deprecations service] make correctiveActions.manualSteps required (#100997) 2021-06-02 15:52:14 +03:00
kbn-config-schema chore(NA): correctly setup dep order on js_library to fix windows build (#100420) 2021-05-21 00:03:54 +01:00
kbn-crypto Upgrade EUI to v33.0.0 (#99382) 2021-06-01 10:53:07 -05:00
kbn-dev-utils Support owner and description attributes inside the Manifest file, use in API docs (#101786) 2021-06-09 16:18:21 -04:00
kbn-docs-utils Support owner and description attributes inside the Manifest file, use in API docs (#101786) 2021-06-09 16:18:21 -04:00
kbn-es fix(NA): windows ts_project outside sandbox compilation (#100947) 2021-06-03 17:53:39 +01:00
kbn-es-archiver [esArchiver] drop support for --dir, use repo-relative paths instead (#101345) 2021-06-08 17:37:42 -04:00
kbn-eslint-import-resolver-kibana chore(NA): moving @kbn/eslint-import-resolver-kibana into bazel (#98798) 2021-04-30 20:14:18 +01:00
kbn-eslint-plugin-eslint chore(NA): moving @kbn/eslint-plugin-eslint into bazel (#98926) 2021-04-30 22:31:38 +01:00
kbn-expect fix(NA): windows ts_project outside sandbox compilation (#100947) 2021-06-03 17:53:39 +01:00
kbn-i18n chore(NA): correctly setup dep order on js_library to fix windows build (#100420) 2021-05-21 00:03:54 +01:00
kbn-interpreter chore(NA): moving @kbn/i18n into bazel (#99390) 2021-05-14 21:12:20 +01:00
kbn-io-ts-utils chore(NA): moving @kbn/io-ts-utils into bazel (#100810) 2021-05-28 15:02:44 +01:00
kbn-legacy-logging chore(NA): include missing dependency on @kbn/legacy-logging (#101331) 2021-06-04 15:52:25 +01:00
kbn-logging chore(NA): correctly setup dep order on js_library to fix windows build (#100420) 2021-05-21 00:03:54 +01:00
kbn-mapbox-gl [Maps] Isolate mapbox-gl types and align downstream package versions. (#100610) 2021-05-26 21:09:38 -04:00
kbn-monaco [Lens] Formula editor (#99297) 2021-06-10 10:09:16 -04:00
kbn-optimizer [ML] Move Index Data Visualizer into separate plugin (Part 1) (#100922) 2021-06-08 14:50:14 -05:00
kbn-plugin-generator chore(NA): correctly setup dep order on js_library to fix windows build (#100420) 2021-05-21 00:03:54 +01:00
kbn-plugin-helpers chore(NA): moving @kbn/dev-utils into bazel (#98496) 2021-04-28 23:46:33 +01:00
kbn-pm Upgrade cheerio from v0.22.0 to v1.0.0-rc.9 (#101394) 2021-06-08 17:40:25 +02:00
kbn-rule-data-utils chore(NA): moving @kbn/rule-data-utils into bazel (#101290) 2021-06-03 21:26:17 +01:00
kbn-securitysolution-es-utils chore(NA): correctly setup dep order on js_library to fix windows build (#100420) 2021-05-21 00:03:54 +01:00
kbn-securitysolution-io-ts-alerting-types [Security Solution] Utilizes constants package and deletes duplicate code (#100513) 2021-05-24 18:38:14 -06:00
kbn-securitysolution-io-ts-list-types fix(NA): windows ts_project outside sandbox compilation (#100947) 2021-06-03 17:53:39 +01:00
kbn-securitysolution-io-ts-types [Security Solution] Utilizes constants package and deletes duplicate code (#100513) 2021-05-24 18:38:14 -06:00
kbn-securitysolution-io-ts-utils [Security Solution] Utilizes constants package and deletes duplicate code (#100513) 2021-05-24 18:38:14 -06:00
kbn-securitysolution-list-api [Security Solution] Utilizes constants package and deletes duplicate code (#100513) 2021-05-24 18:38:14 -06:00
kbn-securitysolution-list-constants [Security Solution] Utilizes constants package and deletes duplicate code (#100513) 2021-05-24 18:38:14 -06:00
kbn-securitysolution-list-hooks [Security Solution] Utilizes constants package and deletes duplicate code (#100513) 2021-05-24 18:38:14 -06:00
kbn-securitysolution-list-utils [Security Solution] Utilizes constants package and deletes duplicate code (#100513) 2021-05-24 18:38:14 -06:00
kbn-securitysolution-utils chore(NA): correctly setup dep order on js_library to fix windows build (#100420) 2021-05-21 00:03:54 +01:00
kbn-server-http-tools chore(NA): correctly setup dep order on js_library to fix windows build (#100420) 2021-05-21 00:03:54 +01:00
kbn-server-route-repository chore(NA): moving @kbn/server-route-repository into bazel (#101484) 2021-06-09 21:39:31 +01:00
kbn-spec-to-console Elastic License 2.0 (#90099) 2021-02-03 18:12:39 -08:00
kbn-std chore(NA): correctly setup dep order on js_library to fix windows build (#100420) 2021-05-21 00:03:54 +01:00
kbn-storybook Storybook theme switcher (#97201) 2021-05-06 15:25:05 -05:00
kbn-telemetry-tools Upgrade EUI to v33.0.0 (#99382) 2021-06-01 10:53:07 -05:00
kbn-test [kbnArchiver] convert archive names to root-relative paths (#101839) 2021-06-09 20:13:00 -04:00
kbn-test-subj-selector Elastic License 2.0 (#90099) 2021-02-03 18:12:39 -08:00
kbn-tinymath [Lens] Formula editor (#99297) 2021-06-10 10:09:16 -04:00
kbn-ui-framework Elastic License 2.0 (#90099) 2021-02-03 18:12:39 -08:00
kbn-ui-shared-deps attempt at tree shaking (#101147) 2021-06-03 12:28:09 +03:00
kbn-utility-types chore(NA): correctly setup dep order on js_library to fix windows build (#100420) 2021-05-21 00:03:54 +01:00
kbn-utils chore(NA): correctly setup dep order on js_library to fix windows build (#100420) 2021-05-21 00:03:54 +01:00
BUILD.bazel chore(NA): moving @kbn/server-route-repository into bazel (#101484) 2021-06-09 21:39:31 +01:00
README.md

Kibana-related packages

This folder contains packages that are intended for use in Kibana and Kibana plugins.

tl;dr:

  • Don't publish to npm registry
  • Always use the @kbn namespace
  • Always set "private": true in package.json

Using these packages

We no longer publish these packages to the npm registry. Now, instead of specifying a version when including these packages, we rely on yarn workspaces, which sets up a symlink to the package.

For example if you want to use the @kbn/i18n package in Kibana itself, you can specify the dependency like this:

"@kbn/i18n": "1.0.0"

However, if you want to use this from a Kibana plugin, you need to use a link: dependency and account for the relative location of the Kibana repo, so it would instead be:

"@kbn/i18n": "link:../../kibana/packages/kbn-i18n"

How all of this works is described in more detail in the @kbn/pm docs.

Creating a new package

Create a new sub-folder. The name of the folder should mirror the name in the package's package.json. E.g. if the name is @kbn/i18n the folder name should be kbn-i18n.

All new packages should use the @kbn namespace, and should be marked with "private": true.

Unit tests for a package

Currently there is only one tool being used in order to test packages which is Jest. Below we will explain how it should be done.

Jest

A package should follow the pattern of having .test.js files as siblings of the source code files, and these run by Jest.

A package using the .test.js naming convention will have those tests automatically picked up by Jest and run by the unit test runner, currently mapped to the Kibana test script in the root package.json.

  • yarn test or yarn grunt test runs all unit tests.
  • yarn jest runs all Jest tests in Kibana.

In order for the plugin or package to use Jest, a jest.config.js file must be present in it's root. However, there are safeguards for this in CI should a test file be added without a corresponding config file.


Each package can also specify its own test script in the package's package.json, for cases where you'd prefer to run the tests from the local package directory.