@deephaven/components 0.21.2-dhe-vite.5 → 0.22.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/Button.d.ts CHANGED
@@ -15,7 +15,6 @@ interface BaseButtonProps extends React.ComponentPropsWithRef<'button'> {
15
15
  icon?: IconDefinition | JSX.Element;
16
16
  active?: boolean;
17
17
  'data-testid'?: string;
18
- 'aria-label'?: string;
19
18
  }
20
19
  declare type ButtonWithChildren = BaseButtonProps & {
21
20
  children: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../src/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGnE,QAAA,MAAM,YAAY,uFAQR,CAAC;AACX,aAAK,WAAW,GAAG,OAAO,YAAY,CAAC;AACvC,aAAK,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAEtC,QAAA,MAAM,aAAa,wBAAyB,CAAC;AAC7C,aAAK,YAAY,GAAG,OAAO,aAAa,CAAC;AACzC,aAAK,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAExC,aAAK,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEjD,UAAU,eAAgB,SAAQ,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC;IACrE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAC/B,IAAI,CAAC,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,aAAK,kBAAkB,GAAG,eAAe,GAAG;IAC1C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,aAAK,2BAA2B,GAAG,eAAe,GAAG;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,aAAK,wBAAwB,GAAG,eAAe,GAAG;IAChD,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAmCF,QAAA,MAAM,MAAM,4wcAiGX,CAAC;AAuEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../src/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGnE,QAAA,MAAM,YAAY,uFAQR,CAAC;AACX,aAAK,WAAW,GAAG,OAAO,YAAY,CAAC;AACvC,aAAK,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAEtC,QAAA,MAAM,aAAa,wBAAyB,CAAC;AAC7C,aAAK,YAAY,GAAG,OAAO,aAAa,CAAC;AACzC,aAAK,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAExC,aAAK,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEjD,UAAU,eAAgB,SAAQ,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC;IACrE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAC/B,IAAI,CAAC,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,aAAK,kBAAkB,GAAG,eAAe,GAAG;IAC1C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,aAAK,2BAA2B,GAAG,eAAe,GAAG;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,aAAK,wBAAwB,GAAG,eAAe,GAAG;IAChD,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAmCF,QAAA,MAAM,MAAM,4wcAyGX,CAAC;AA+EF,eAAe,MAAM,CAAC"}
package/dist/Button.js CHANGED
@@ -51,8 +51,12 @@ var Button = /*#__PURE__*/React.forwardRef((props, ref) => {
51
51
  disabled,
52
52
  active,
53
53
  onClick,
54
+ onContextMenu,
54
55
  onMouseDown,
55
56
  onMouseUp,
57
+ onMouseEnter,
58
+ onMouseLeave,
59
+ onKeyDown,
56
60
  className,
57
61
  style,
58
62
  children,
@@ -99,8 +103,12 @@ var Button = /*#__PURE__*/React.forwardRef((props, ref) => {
99
103
  active
100
104
  }, className),
101
105
  onClick: onClick,
106
+ onContextMenu: onContextMenu,
102
107
  onMouseUp: onMouseUp,
103
108
  onMouseDown: onMouseDown,
109
+ onMouseEnter: onMouseEnter,
110
+ onMouseLeave: onMouseLeave,
111
+ onKeyDown: onKeyDown,
104
112
  style: style,
105
113
  disabled: disabled,
106
114
  tabIndex: tabIndex,
@@ -169,8 +177,12 @@ Button.propTypes = {
169
177
  return null;
170
178
  },
171
179
 
180
+ onContextMenu: PropTypes.func,
172
181
  onMouseUp: PropTypes.func,
173
182
  onMouseDown: PropTypes.func,
183
+ onMouseEnter: PropTypes.func,
184
+ onMouseLeave: PropTypes.func,
185
+ onKeyDown: PropTypes.func,
174
186
  tabIndex: PropTypes.number,
175
187
  children: PropTypes.node,
176
188
  className: PropTypes.string,
@@ -180,8 +192,12 @@ Button.propTypes = {
180
192
  Button.defaultProps = {
181
193
  type: 'button',
182
194
  onClick: undefined,
195
+ onContextMenu: undefined,
183
196
  onMouseUp: undefined,
184
197
  onMouseDown: undefined,
198
+ onMouseEnter: undefined,
199
+ onMouseLeave: undefined,
200
+ onKeyDown: undefined,
185
201
  variant: undefined,
186
202
  tooltip: undefined,
187
203
  icon: undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","names":["React","PropTypes","classNames","FontAwesomeIcon","Tooltip","BUTTON_KINDS","VARIANT_KINDS","getClassName","kind","iconOnly","getVariantClasses","Button","forwardRef","props","ref","variant","type","tooltip","icon","disabled","active","onClick","onMouseDown","onMouseUp","className","style","children","tabIndex","dataTestId","ariaLabel","Boolean","btnClassName","variantClassName","iconElem","isValidElement","tooltipElem","undefined","ariaLabelString","button","displayName","propTypes","oneOf","isRequired","Error","iconName","bool","func","number","node","string","object","defaultProps"],"sources":["../src/Button.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { Tooltip } from './popper';\n\nconst BUTTON_KINDS = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'success',\n 'danger',\n 'inline',\n 'ghost',\n] as const;\ntype ButtonTuple = typeof BUTTON_KINDS;\ntype ButtonKind = ButtonTuple[number];\n\nconst VARIANT_KINDS = ['group-end'] as const;\ntype VariantTuple = typeof VARIANT_KINDS;\ntype VariantKind = VariantTuple[number];\n\ntype ButtonTypes = 'submit' | 'reset' | 'button';\n\ninterface BaseButtonProps extends React.ComponentPropsWithRef<'button'> {\n kind: ButtonKind;\n type?: ButtonTypes;\n variant?: VariantKind;\n tooltip?: string | JSX.Element;\n icon?: IconDefinition | JSX.Element;\n active?: boolean;\n 'data-testid'?: string;\n 'aria-label'?: string;\n}\n\ntype ButtonWithChildren = BaseButtonProps & {\n children: React.ReactNode;\n};\n\ntype IconOnlyButtonStringTooltip = BaseButtonProps & {\n tooltip: string;\n icon: IconDefinition | JSX.Element;\n children?: undefined;\n};\n\ntype IconOnlyButtonJsxTooltip = BaseButtonProps & {\n tooltip: JSX.Element;\n 'aria-label': string;\n icon: IconDefinition | JSX.Element;\n children?: undefined;\n};\n\ntype IconOnlyButton = IconOnlyButtonStringTooltip | IconOnlyButtonJsxTooltip;\n\ntype ButtonProps = IconOnlyButton | ButtonWithChildren;\n\nfunction getClassName(kind: ButtonKind, iconOnly: boolean): string {\n switch (kind) {\n case 'primary':\n return 'btn-primary';\n case 'secondary':\n return 'btn-outline-primary';\n case 'tertiary':\n return 'btn-secondary';\n case 'success':\n return 'btn-success';\n case 'danger':\n return 'btn-danger';\n case 'inline':\n return 'btn-inline';\n case 'ghost':\n return classNames('btn-link', {\n 'btn-link-icon': iconOnly,\n 'btn-link-icon-only': iconOnly,\n });\n }\n}\n\nfunction getVariantClasses(kind: VariantKind): string {\n switch (kind) {\n case 'group-end':\n return classNames('pl-2', 'pr-3');\n }\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props: ButtonProps, ref) => {\n const {\n kind,\n variant,\n type,\n tooltip,\n icon,\n disabled,\n active,\n onClick,\n onMouseDown,\n onMouseUp,\n className,\n style,\n children,\n tabIndex,\n 'data-testid': dataTestId,\n 'aria-label': ariaLabel,\n } = props;\n\n const iconOnly = Boolean(icon && children == null);\n const btnClassName = getClassName(kind, iconOnly);\n\n let variantClassName;\n if (variant) {\n variantClassName = getVariantClasses(variant);\n }\n\n let iconElem: JSX.Element | undefined;\n if (icon) {\n iconElem = React.isValidElement(icon) ? (\n icon\n ) : (\n <FontAwesomeIcon icon={icon as IconDefinition} />\n );\n }\n\n let tooltipElem: JSX.Element | undefined;\n if (tooltip !== undefined) {\n tooltipElem =\n typeof tooltip === 'string' ? <Tooltip>{tooltip}</Tooltip> : tooltip;\n }\n\n // use tooltip as arial-label for iconOnly buttons only\n // if tooltip is also a string and aria-label is not set\n let ariaLabelString = ariaLabel;\n if (\n ariaLabel === undefined &&\n iconOnly &&\n tooltip != null &&\n typeof tooltip === 'string'\n ) {\n ariaLabelString = tooltip;\n }\n\n const button = (\n <button\n data-testid={dataTestId}\n ref={ref}\n // eslint-disable-next-line react/button-has-type\n type={type}\n className={classNames(\n 'btn',\n btnClassName,\n variantClassName,\n { active },\n className\n )}\n onClick={onClick}\n onMouseUp={onMouseUp}\n onMouseDown={onMouseDown}\n style={style}\n disabled={disabled}\n tabIndex={tabIndex}\n aria-label={ariaLabelString}\n >\n {icon && iconElem}\n {children}\n {tooltip != null &&\n (disabled === undefined || !disabled) &&\n tooltipElem}\n </button>\n );\n\n // disabled buttons tooltips need a wrapped element to receive pointer events\n // https://jakearchibald.com/2017/events-and-disabled-form-fields/\n\n return disabled !== undefined && disabled ? (\n <span className=\"btn-disabled-wrapper\">\n {button}\n {tooltip !== undefined && tooltipElem}\n </span>\n ) : (\n button\n );\n }\n);\n\nButton.displayName = 'Button';\n\nButton.propTypes = {\n kind: PropTypes.oneOf(BUTTON_KINDS).isRequired,\n variant: PropTypes.oneOf(VARIANT_KINDS),\n type: PropTypes.oneOf<ButtonTypes>(['submit', 'reset', 'button']),\n tooltip(props) {\n const { tooltip, icon, children } = props;\n if (tooltip === undefined && icon != null && children == null) {\n return new Error('Tooltip is required for icon only buttons');\n }\n return null;\n },\n icon(props) {\n const { children, icon } = props;\n if (icon == null && children == null) {\n return new Error('Icon is required if no children are provided');\n }\n\n if (\n children == null &&\n !React.isValidElement(icon) &&\n (icon == null || icon.iconName === '' || icon.iconName == null)\n ) {\n return new Error(\n 'Icon must be react element or fontawesome IconDefinition'\n );\n }\n\n return null;\n },\n disabled: PropTypes.bool,\n active: PropTypes.bool,\n onClick(props) {\n const { onClick, type } = props;\n if (type === 'button' && typeof onClick !== 'function') {\n return new Error('type button requires an onClick function');\n }\n if (onClick !== undefined && typeof onClick !== 'function') {\n return new Error('onClick must be a function');\n }\n return null;\n },\n onMouseUp: PropTypes.func,\n onMouseDown: PropTypes.func,\n tabIndex: PropTypes.number,\n children: PropTypes.node,\n className: PropTypes.string,\n style: PropTypes.object,\n 'data-testid': PropTypes.string,\n};\n\nButton.defaultProps = {\n type: 'button',\n onClick: undefined,\n onMouseUp: undefined,\n onMouseDown: undefined,\n variant: undefined,\n tooltip: undefined,\n icon: undefined,\n disabled: false,\n active: undefined,\n tabIndex: undefined,\n children: undefined,\n className: undefined,\n style: {},\n 'data-testid': undefined,\n};\n\nexport default Button;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","names":["React","PropTypes","classNames","FontAwesomeIcon","Tooltip","BUTTON_KINDS","VARIANT_KINDS","getClassName","kind","iconOnly","getVariantClasses","Button","forwardRef","props","ref","variant","type","tooltip","icon","disabled","active","onClick","onContextMenu","onMouseDown","onMouseUp","onMouseEnter","onMouseLeave","onKeyDown","className","style","children","tabIndex","dataTestId","ariaLabel","Boolean","btnClassName","variantClassName","iconElem","isValidElement","tooltipElem","undefined","ariaLabelString","button","displayName","propTypes","oneOf","isRequired","Error","iconName","bool","func","number","node","string","object","defaultProps"],"sources":["../src/Button.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { Tooltip } from './popper';\n\nconst BUTTON_KINDS = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'success',\n 'danger',\n 'inline',\n 'ghost',\n] as const;\ntype ButtonTuple = typeof BUTTON_KINDS;\ntype ButtonKind = ButtonTuple[number];\n\nconst VARIANT_KINDS = ['group-end'] as const;\ntype VariantTuple = typeof VARIANT_KINDS;\ntype VariantKind = VariantTuple[number];\n\ntype ButtonTypes = 'submit' | 'reset' | 'button';\n\ninterface BaseButtonProps extends React.ComponentPropsWithRef<'button'> {\n kind: ButtonKind;\n type?: ButtonTypes;\n variant?: VariantKind;\n tooltip?: string | JSX.Element;\n icon?: IconDefinition | JSX.Element;\n active?: boolean;\n 'data-testid'?: string;\n}\n\ntype ButtonWithChildren = BaseButtonProps & {\n children: React.ReactNode;\n};\n\ntype IconOnlyButtonStringTooltip = BaseButtonProps & {\n tooltip: string;\n icon: IconDefinition | JSX.Element;\n children?: undefined;\n};\n\ntype IconOnlyButtonJsxTooltip = BaseButtonProps & {\n tooltip: JSX.Element;\n 'aria-label': string;\n icon: IconDefinition | JSX.Element;\n children?: undefined;\n};\n\ntype IconOnlyButton = IconOnlyButtonStringTooltip | IconOnlyButtonJsxTooltip;\n\ntype ButtonProps = IconOnlyButton | ButtonWithChildren;\n\nfunction getClassName(kind: ButtonKind, iconOnly: boolean): string {\n switch (kind) {\n case 'primary':\n return 'btn-primary';\n case 'secondary':\n return 'btn-outline-primary';\n case 'tertiary':\n return 'btn-secondary';\n case 'success':\n return 'btn-success';\n case 'danger':\n return 'btn-danger';\n case 'inline':\n return 'btn-inline';\n case 'ghost':\n return classNames('btn-link', {\n 'btn-link-icon': iconOnly,\n 'btn-link-icon-only': iconOnly,\n });\n }\n}\n\nfunction getVariantClasses(kind: VariantKind): string {\n switch (kind) {\n case 'group-end':\n return classNames('pl-2', 'pr-3');\n }\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props: ButtonProps, ref) => {\n const {\n kind,\n variant,\n type,\n tooltip,\n icon,\n disabled,\n active,\n onClick,\n onContextMenu,\n onMouseDown,\n onMouseUp,\n onMouseEnter,\n onMouseLeave,\n onKeyDown,\n className,\n style,\n children,\n tabIndex,\n 'data-testid': dataTestId,\n 'aria-label': ariaLabel,\n } = props;\n\n const iconOnly = Boolean(icon && children == null);\n const btnClassName = getClassName(kind, iconOnly);\n\n let variantClassName;\n if (variant) {\n variantClassName = getVariantClasses(variant);\n }\n\n let iconElem: JSX.Element | undefined;\n if (icon) {\n iconElem = React.isValidElement(icon) ? (\n icon\n ) : (\n <FontAwesomeIcon icon={icon as IconDefinition} />\n );\n }\n\n let tooltipElem: JSX.Element | undefined;\n if (tooltip !== undefined) {\n tooltipElem =\n typeof tooltip === 'string' ? <Tooltip>{tooltip}</Tooltip> : tooltip;\n }\n\n // use tooltip as arial-label for iconOnly buttons only\n // if tooltip is also a string and aria-label is not set\n let ariaLabelString = ariaLabel;\n if (\n ariaLabel === undefined &&\n iconOnly &&\n tooltip != null &&\n typeof tooltip === 'string'\n ) {\n ariaLabelString = tooltip;\n }\n\n const button = (\n <button\n data-testid={dataTestId}\n ref={ref}\n // eslint-disable-next-line react/button-has-type\n type={type}\n className={classNames(\n 'btn',\n btnClassName,\n variantClassName,\n { active },\n className\n )}\n onClick={onClick}\n onContextMenu={onContextMenu}\n onMouseUp={onMouseUp}\n onMouseDown={onMouseDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onKeyDown={onKeyDown}\n style={style}\n disabled={disabled}\n tabIndex={tabIndex}\n aria-label={ariaLabelString}\n >\n {icon && iconElem}\n {children}\n {tooltip != null &&\n (disabled === undefined || !disabled) &&\n tooltipElem}\n </button>\n );\n\n // disabled buttons tooltips need a wrapped element to receive pointer events\n // https://jakearchibald.com/2017/events-and-disabled-form-fields/\n\n return disabled !== undefined && disabled ? (\n <span className=\"btn-disabled-wrapper\">\n {button}\n {tooltip !== undefined && tooltipElem}\n </span>\n ) : (\n button\n );\n }\n);\n\nButton.displayName = 'Button';\n\nButton.propTypes = {\n kind: PropTypes.oneOf(BUTTON_KINDS).isRequired,\n variant: PropTypes.oneOf(VARIANT_KINDS),\n type: PropTypes.oneOf<ButtonTypes>(['submit', 'reset', 'button']),\n tooltip(props) {\n const { tooltip, icon, children } = props;\n if (tooltip === undefined && icon != null && children == null) {\n return new Error('Tooltip is required for icon only buttons');\n }\n return null;\n },\n icon(props) {\n const { children, icon } = props;\n if (icon == null && children == null) {\n return new Error('Icon is required if no children are provided');\n }\n\n if (\n children == null &&\n !React.isValidElement(icon) &&\n (icon == null || icon.iconName === '' || icon.iconName == null)\n ) {\n return new Error(\n 'Icon must be react element or fontawesome IconDefinition'\n );\n }\n\n return null;\n },\n disabled: PropTypes.bool,\n active: PropTypes.bool,\n onClick(props) {\n const { onClick, type } = props;\n if (type === 'button' && typeof onClick !== 'function') {\n return new Error('type button requires an onClick function');\n }\n if (onClick !== undefined && typeof onClick !== 'function') {\n return new Error('onClick must be a function');\n }\n return null;\n },\n onContextMenu: PropTypes.func,\n onMouseUp: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onKeyDown: PropTypes.func,\n tabIndex: PropTypes.number,\n children: PropTypes.node,\n className: PropTypes.string,\n style: PropTypes.object,\n 'data-testid': PropTypes.string,\n};\n\nButton.defaultProps = {\n type: 'button',\n onClick: undefined,\n onContextMenu: undefined,\n onMouseUp: undefined,\n onMouseDown: undefined,\n onMouseEnter: undefined,\n onMouseLeave: undefined,\n onKeyDown: undefined,\n variant: undefined,\n tooltip: undefined,\n icon: undefined,\n disabled: false,\n active: undefined,\n tabIndex: undefined,\n children: undefined,\n className: undefined,\n style: {},\n 'data-testid': undefined,\n};\n\nexport default Button;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,eAAT,QAAgC,gCAAhC;SAESC,O;AAET,IAAMC,YAAY,GAAG,CACnB,SADmB,EAEnB,WAFmB,EAGnB,UAHmB,EAInB,SAJmB,EAKnB,QALmB,EAMnB,QANmB,EAOnB,OAPmB,CAArB;AAYA,IAAMC,aAAa,GAAG,CAAC,WAAD,CAAtB;;AAqCA,SAASC,YAAT,CAAsBC,IAAtB,EAAwCC,QAAxC,EAAmE;EACjE,QAAQD,IAAR;IACE,KAAK,SAAL;MACE,OAAO,aAAP;;IACF,KAAK,WAAL;MACE,OAAO,qBAAP;;IACF,KAAK,UAAL;MACE,OAAO,eAAP;;IACF,KAAK,SAAL;MACE,OAAO,aAAP;;IACF,KAAK,QAAL;MACE,OAAO,YAAP;;IACF,KAAK,QAAL;MACE,OAAO,YAAP;;IACF,KAAK,OAAL;MACE,OAAON,UAAU,CAAC,UAAD,EAAa;QAC5B,iBAAiBO,QADW;QAE5B,sBAAsBA;MAFM,CAAb,CAAjB;EAdJ;AAmBD;;AAED,SAASC,iBAAT,CAA2BF,IAA3B,EAAsD;EACpD,QAAQA,IAAR;IACE,KAAK,WAAL;MACE,OAAON,UAAU,CAAC,MAAD,EAAS,MAAT,CAAjB;EAFJ;AAID;;AAED,IAAMS,MAAM,gBAAGX,KAAK,CAACY,UAAN,CACb,CAACC,KAAD,EAAqBC,GAArB,KAA6B;EAC3B,IAAM;IACJN,IADI;IAEJO,OAFI;IAGJC,IAHI;IAIJC,OAJI;IAKJC,IALI;IAMJC,QANI;IAOJC,MAPI;IAQJC,OARI;IASJC,aATI;IAUJC,WAVI;IAWJC,SAXI;IAYJC,YAZI;IAaJC,YAbI;IAcJC,SAdI;IAeJC,SAfI;IAgBJC,KAhBI;IAiBJC,QAjBI;IAkBJC,QAlBI;IAmBJ,eAAeC,UAnBX;IAoBJ,cAAcC;EApBV,IAqBFpB,KArBJ;EAuBA,IAAMJ,QAAQ,GAAGyB,OAAO,CAAChB,IAAI,IAAIY,QAAQ,IAAI,IAArB,CAAxB;EACA,IAAMK,YAAY,GAAG5B,YAAY,CAACC,IAAD,EAAOC,QAAP,CAAjC;EAEA,IAAI2B,gBAAJ;;EACA,IAAIrB,OAAJ,EAAa;IACXqB,gBAAgB,GAAG1B,iBAAiB,CAACK,OAAD,CAApC;EACD;;EAED,IAAIsB,QAAJ;;EACA,IAAInB,IAAJ,EAAU;IACRmB,QAAQ,GAAG,aAAArC,KAAK,CAACsC,cAAN,CAAqBpB,IAArB,IACTA,IADS,gBAGT,oBAAC,eAAD;MAAiB,IAAI,EAAEA;IAAvB,EAHF;EAKD;;EAED,IAAIqB,WAAJ;;EACA,IAAItB,OAAO,KAAKuB,SAAhB,EAA2B;IACzBD,WAAW,GACT,OAAOtB,OAAP,KAAmB,QAAnB,gBAA8B,oBAAC,OAAD,QAAUA,OAAV,CAA9B,GAA6DA,OAD/D;EAED,CA7C0B,CA+C3B;EACA;;;EACA,IAAIwB,eAAe,GAAGR,SAAtB;;EACA,IACEA,SAAS,KAAKO,SAAd,IACA/B,QADA,IAEAQ,OAAO,IAAI,IAFX,IAGA,OAAOA,OAAP,KAAmB,QAJrB,EAKE;IACAwB,eAAe,GAAGxB,OAAlB;EACD;;EAED,IAAMyB,MAAM,gBACV;IACE,eAAaV,UADf;IAEE,GAAG,EAAElB,GAFP,CAGE;IAHF;IAIE,IAAI,EAAEE,IAJR;IAKE,SAAS,EAAEd,UAAU,CACnB,KADmB,EAEnBiC,YAFmB,EAGnBC,gBAHmB,EAInB;MAAEhB;IAAF,CAJmB,EAKnBQ,SALmB,CALvB;IAYE,OAAO,EAAEP,OAZX;IAaE,aAAa,EAAEC,aAbjB;IAcE,SAAS,EAAEE,SAdb;IAeE,WAAW,EAAED,WAff;IAgBE,YAAY,EAAEE,YAhBhB;IAiBE,YAAY,EAAEC,YAjBhB;IAkBE,SAAS,EAAEC,SAlBb;IAmBE,KAAK,EAAEE,KAnBT;IAoBE,QAAQ,EAAEV,QApBZ;IAqBE,QAAQ,EAAEY,QArBZ;IAsBE,cAAYU;EAtBd,GAwBGvB,IAAI,IAAImB,QAxBX,EAyBGP,QAzBH,EA0BGb,OAAO,IAAI,IAAX,KACEE,QAAQ,KAAKqB,SAAb,IAA0B,CAACrB,QAD7B,KAECoB,WA5BJ,CADF,CA3D2B,CA4F3B;EACA;;EAEA,OAAOpB,QAAQ,KAAKqB,SAAb,IAA0BrB,QAA1B,gBACL;IAAM,SAAS,EAAC;EAAhB,GACGuB,MADH,EAEGzB,OAAO,KAAKuB,SAAZ,IAAyBD,WAF5B,CADK,GAMLG,MANF;AAQD,CAxGY,CAAf;AA2GA/B,MAAM,CAACgC,WAAP,GAAqB,QAArB;AAEAhC,MAAM,CAACiC,SAAP,GAAmB;EACjBpC,IAAI,EAAEP,SAAS,CAAC4C,KAAV,CAAgBxC,YAAhB,EAA8ByC,UADnB;EAEjB/B,OAAO,EAAEd,SAAS,CAAC4C,KAAV,CAAgBvC,aAAhB,CAFQ;EAGjBU,IAAI,EAAEf,SAAS,CAAC4C,KAAV,CAA6B,CAAC,QAAD,EAAW,OAAX,EAAoB,QAApB,CAA7B,CAHW;;EAIjB5B,OAAO,CAACJ,KAAD,EAAQ;IACb,IAAM;MAAEI,OAAF;MAAWC,IAAX;MAAiBY;IAAjB,IAA8BjB,KAApC;;IACA,IAAII,OAAO,KAAKuB,SAAZ,IAAyBtB,IAAI,IAAI,IAAjC,IAAyCY,QAAQ,IAAI,IAAzD,EAA+D;MAC7D,OAAO,IAAIiB,KAAJ,CAAU,2CAAV,CAAP;IACD;;IACD,OAAO,IAAP;EACD,CAVgB;;EAWjB7B,IAAI,CAACL,KAAD,EAAQ;IACV,IAAM;MAAEiB,QAAF;MAAYZ;IAAZ,IAAqBL,KAA3B;;IACA,IAAIK,IAAI,IAAI,IAAR,IAAgBY,QAAQ,IAAI,IAAhC,EAAsC;MACpC,OAAO,IAAIiB,KAAJ,CAAU,8CAAV,CAAP;IACD;;IAED,IACEjB,QAAQ,IAAI,IAAZ,IACA,eAAC9B,KAAK,CAACsC,cAAN,CAAqBpB,IAArB,CADD,KAECA,IAAI,IAAI,IAAR,IAAgBA,IAAI,CAAC8B,QAAL,KAAkB,EAAlC,IAAwC9B,IAAI,CAAC8B,QAAL,IAAiB,IAF1D,CADF,EAIE;MACA,OAAO,IAAID,KAAJ,CACL,0DADK,CAAP;IAGD;;IAED,OAAO,IAAP;EACD,CA5BgB;;EA6BjB5B,QAAQ,EAAElB,SAAS,CAACgD,IA7BH;EA8BjB7B,MAAM,EAAEnB,SAAS,CAACgD,IA9BD;;EA+BjB5B,OAAO,CAACR,KAAD,EAAQ;IACb,IAAM;MAAEQ,OAAF;MAAWL;IAAX,IAAoBH,KAA1B;;IACA,IAAIG,IAAI,KAAK,QAAT,IAAqB,OAAOK,OAAP,KAAmB,UAA5C,EAAwD;MACtD,OAAO,IAAI0B,KAAJ,CAAU,0CAAV,CAAP;IACD;;IACD,IAAI1B,OAAO,KAAKmB,SAAZ,IAAyB,OAAOnB,OAAP,KAAmB,UAAhD,EAA4D;MAC1D,OAAO,IAAI0B,KAAJ,CAAU,4BAAV,CAAP;IACD;;IACD,OAAO,IAAP;EACD,CAxCgB;;EAyCjBzB,aAAa,EAAErB,SAAS,CAACiD,IAzCR;EA0CjB1B,SAAS,EAAEvB,SAAS,CAACiD,IA1CJ;EA2CjB3B,WAAW,EAAEtB,SAAS,CAACiD,IA3CN;EA4CjBzB,YAAY,EAAExB,SAAS,CAACiD,IA5CP;EA6CjBxB,YAAY,EAAEzB,SAAS,CAACiD,IA7CP;EA8CjBvB,SAAS,EAAE1B,SAAS,CAACiD,IA9CJ;EA+CjBnB,QAAQ,EAAE9B,SAAS,CAACkD,MA/CH;EAgDjBrB,QAAQ,EAAE7B,SAAS,CAACmD,IAhDH;EAiDjBxB,SAAS,EAAE3B,SAAS,CAACoD,MAjDJ;EAkDjBxB,KAAK,EAAE5B,SAAS,CAACqD,MAlDA;EAmDjB,eAAerD,SAAS,CAACoD;AAnDR,CAAnB;AAsDA1C,MAAM,CAAC4C,YAAP,GAAsB;EACpBvC,IAAI,EAAE,QADc;EAEpBK,OAAO,EAAEmB,SAFW;EAGpBlB,aAAa,EAAEkB,SAHK;EAIpBhB,SAAS,EAAEgB,SAJS;EAKpBjB,WAAW,EAAEiB,SALO;EAMpBf,YAAY,EAAEe,SANM;EAOpBd,YAAY,EAAEc,SAPM;EAQpBb,SAAS,EAAEa,SARS;EASpBzB,OAAO,EAAEyB,SATW;EAUpBvB,OAAO,EAAEuB,SAVW;EAWpBtB,IAAI,EAAEsB,SAXc;EAYpBrB,QAAQ,EAAE,KAZU;EAapBC,MAAM,EAAEoB,SAbY;EAcpBT,QAAQ,EAAES,SAdU;EAepBV,QAAQ,EAAEU,SAfU;EAgBpBZ,SAAS,EAAEY,SAhBS;EAiBpBX,KAAK,EAAE,EAjBa;EAkBpB,eAAeW;AAlBK,CAAtB;AAqBA,eAAe7B,MAAf"}
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
- interface EditableItemListProps {
2
+ export interface EditableItemListProps {
3
3
  isInvalid?: boolean;
4
4
  items: string[];
5
- onDelete: (item: string) => void;
5
+ onDelete: (items: string[]) => void;
6
6
  onAdd: (item: string) => void;
7
7
  validate?: (item: string) => Error | null;
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EditableItemList.d.ts","sourceRoot":"","sources":["../src/EditableItemList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAOf,UAAU,qBAAqB;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC;CAC3C;AAGD,QAAA,MAAM,gBAAgB,UAAW,qBAAqB,KAAG,MAAM,YA+H9D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"EditableItemList.d.ts","sourceRoot":"","sources":["../src/EditableItemList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAOf,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC;CAC3C;AAGD,QAAA,MAAM,gBAAgB,UAAW,qBAAqB,KAAG,MAAM,YAmH9D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -2,6 +2,7 @@ import React, { useCallback, useMemo, useState } from 'react';
2
2
  import classNames from 'classnames';
3
3
  import clamp from 'lodash.clamp';
4
4
  import { vsAdd, vsTrash } from '@deephaven/icons';
5
+ import { RangeUtils } from '@deephaven/utils';
5
6
  import { Button, ItemList } from "./index.js";
6
7
 
7
8
  // Display a list of items with an input for adding new items, and Add/Delete buttons
@@ -14,20 +15,15 @@ var EditableItemList = props => {
14
15
  validate = () => null
15
16
  } = props;
16
17
  var [inputError, setInputError] = useState(null);
17
- var [selectedIndex, setSelectedIndex] = useState();
18
+ var [selectedRanges, setSelectedRanges] = useState([]);
18
19
  var [value, setValue] = useState('');
19
- var handleSelect = useCallback(index => {
20
- setSelectedIndex(index);
20
+ var handleSelectionChange = useCallback(ranges => {
21
+ setSelectedRanges(ranges);
21
22
  }, []);
22
23
  var handleDelete = useCallback(() => {
23
- var newIndex = selectedIndex === items.length - 1 ? items.length - 2 : selectedIndex;
24
-
25
- if (selectedIndex !== undefined && selectedIndex >= 0 && selectedIndex < items.length) {
26
- onDelete(items[selectedIndex]);
27
- }
28
-
29
- setSelectedIndex(newIndex === -1 ? undefined : newIndex);
30
- }, [items, selectedIndex, onDelete]);
24
+ onDelete(RangeUtils.getItemsInRanges(items, selectedRanges));
25
+ setSelectedRanges([]);
26
+ }, [items, selectedRanges, onDelete]);
31
27
  var handleAdd = useCallback(() => {
32
28
  if (value === '') {
33
29
  return;
@@ -50,14 +46,13 @@ var EditableItemList = props => {
50
46
  setInputError(inputValue === '' ? null : validate(inputValue));
51
47
  }, [validate]);
52
48
  var handleInputFocus = useCallback(() => {
53
- setSelectedIndex(undefined);
49
+ setSelectedRanges([]);
54
50
  }, []);
55
51
  var handleInputKeyDown = useCallback(event => {
56
52
  if (event.key === 'Enter') {
57
53
  handleAdd();
58
54
  }
59
55
  }, [handleAdd]);
60
- var selectedRanges = useMemo(() => selectedIndex === undefined ? [] : [[selectedIndex, selectedIndex]], [selectedIndex]);
61
56
  var containerHeight = useMemo(() => 14 + clamp(items.length, 1, 6) * ItemList.DEFAULT_ROW_HEIGHT, [items.length]);
62
57
  return /*#__PURE__*/React.createElement("div", {
63
58
  className: classNames('editable-item-list-container', {
@@ -71,11 +66,12 @@ var EditableItemList = props => {
71
66
  itemCount: items.length,
72
67
  items: items.map((item, index) => ({
73
68
  value: item,
74
- isSelected: index === selectedIndex
69
+ isSelected: RangeUtils.isSelected(selectedRanges, index)
75
70
  })),
76
71
  offset: 0,
77
- onSelect: handleSelect,
78
- selectedRanges: selectedRanges
72
+ selectedRanges: selectedRanges,
73
+ onSelectionChange: handleSelectionChange,
74
+ isMultiSelect: true
79
75
  })), /*#__PURE__*/React.createElement("div", {
80
76
  className: "d-flex flex-row pt-2"
81
77
  }, /*#__PURE__*/React.createElement("div", {
@@ -102,9 +98,9 @@ var EditableItemList = props => {
102
98
  }), /*#__PURE__*/React.createElement(Button, {
103
99
  kind: "ghost",
104
100
  onClick: handleDelete,
105
- disabled: selectedIndex === undefined,
101
+ disabled: selectedRanges.length === 0,
106
102
  icon: vsTrash,
107
- tooltip: "Delete selected item",
103
+ tooltip: "Delete selected items",
108
104
  "data-testid": "delete-item-button"
109
105
  }))));
110
106
  };
@@ -1 +1 @@
1
- {"version":3,"file":"EditableItemList.js","names":["React","useCallback","useMemo","useState","classNames","clamp","vsAdd","vsTrash","Button","ItemList","EditableItemList","props","isInvalid","items","onAdd","undefined","onDelete","validate","inputError","setInputError","selectedIndex","setSelectedIndex","value","setValue","handleSelect","index","handleDelete","newIndex","length","handleAdd","validationError","handleInputChange","event","inputValue","target","handleInputFocus","handleInputKeyDown","key","selectedRanges","containerHeight","DEFAULT_ROW_HEIGHT","height","map","item","isSelected"],"sources":["../src/EditableItemList.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n KeyboardEvent,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport classNames from 'classnames';\nimport clamp from 'lodash.clamp';\nimport { vsAdd, vsTrash } from '@deephaven/icons';\nimport { Range } from '@deephaven/utils';\nimport { Button, ItemList } from '.';\n\ninterface EditableItemListProps {\n isInvalid?: boolean;\n items: string[];\n onDelete: (item: string) => void;\n onAdd: (item: string) => void;\n validate?: (item: string) => Error | null;\n}\n\n// Display a list of items with an input for adding new items, and Add/Delete buttons\nconst EditableItemList = (props: EditableItemListProps): React.ReactElement => {\n const {\n isInvalid = false,\n items,\n onAdd = () => undefined,\n onDelete = () => undefined,\n validate = () => null,\n } = props;\n const [inputError, setInputError] = useState<Error | null>(null);\n const [selectedIndex, setSelectedIndex] = useState<number | undefined>();\n const [value, setValue] = useState('');\n\n const handleSelect = useCallback(index => {\n setSelectedIndex(index);\n }, []);\n\n const handleDelete = useCallback(() => {\n const newIndex =\n selectedIndex === items.length - 1 ? items.length - 2 : selectedIndex;\n if (\n selectedIndex !== undefined &&\n selectedIndex >= 0 &&\n selectedIndex < items.length\n ) {\n onDelete(items[selectedIndex]);\n }\n setSelectedIndex(newIndex === -1 ? undefined : newIndex);\n }, [items, selectedIndex, onDelete]);\n\n const handleAdd = useCallback(() => {\n if (value === '') {\n return;\n }\n const validationError = validate(value);\n if (validationError == null) {\n onAdd(value);\n setValue('');\n } else {\n setInputError(validationError);\n }\n }, [value, onAdd, validate]);\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const { value: inputValue } = event.target;\n setValue(inputValue);\n setInputError(inputValue === '' ? null : validate(inputValue));\n },\n [validate]\n );\n\n const handleInputFocus = useCallback(() => {\n setSelectedIndex(undefined);\n }, []);\n\n const handleInputKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n handleAdd();\n }\n },\n [handleAdd]\n );\n\n const selectedRanges = useMemo(\n (): Range[] =>\n selectedIndex === undefined ? [] : [[selectedIndex, selectedIndex]],\n [selectedIndex]\n );\n const containerHeight = useMemo(\n (): number => 14 + clamp(items.length, 1, 6) * ItemList.DEFAULT_ROW_HEIGHT,\n [items.length]\n );\n\n return (\n <div\n className={classNames('editable-item-list-container', {\n 'is-invalid': isInvalid,\n })}\n >\n <div style={{ height: containerHeight }}>\n <ItemList\n itemCount={items.length}\n items={items.map((item, index) => ({\n value: item,\n isSelected: index === selectedIndex,\n }))}\n offset={0}\n onSelect={handleSelect}\n selectedRanges={selectedRanges}\n />\n </div>\n <div className=\"d-flex flex-row pt-2\">\n <div className=\"d-flex flex-grow-1\">\n <input\n className={classNames('form-control', {\n 'is-invalid': inputError != null,\n })}\n placeholder=\"Enter value\"\n type=\"text\"\n value={value}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n onKeyDown={handleInputKeyDown}\n />\n </div>\n <div className=\"d-flex align-items-start mt-1 ml-2\">\n <Button\n kind=\"ghost\"\n onClick={handleAdd}\n disabled={inputError != null || value === ''}\n icon={vsAdd}\n tooltip=\"Add new item\"\n data-testid=\"add-item-button\"\n />\n <Button\n kind=\"ghost\"\n onClick={handleDelete}\n disabled={selectedIndex === undefined}\n icon={vsTrash}\n tooltip=\"Delete selected item\"\n data-testid=\"delete-item-button\"\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default EditableItemList;\n"],"mappings":"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"}
1
+ {"version":3,"file":"EditableItemList.js","names":["React","useCallback","useMemo","useState","classNames","clamp","vsAdd","vsTrash","RangeUtils","Button","ItemList","EditableItemList","props","isInvalid","items","onAdd","undefined","onDelete","validate","inputError","setInputError","selectedRanges","setSelectedRanges","value","setValue","handleSelectionChange","ranges","handleDelete","getItemsInRanges","handleAdd","validationError","handleInputChange","event","inputValue","target","handleInputFocus","handleInputKeyDown","key","containerHeight","length","DEFAULT_ROW_HEIGHT","height","map","item","index","isSelected"],"sources":["../src/EditableItemList.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n KeyboardEvent,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport classNames from 'classnames';\nimport clamp from 'lodash.clamp';\nimport { vsAdd, vsTrash } from '@deephaven/icons';\nimport { Range, RangeUtils } from '@deephaven/utils';\nimport { Button, ItemList } from '.';\n\nexport interface EditableItemListProps {\n isInvalid?: boolean;\n items: string[];\n onDelete: (items: string[]) => void;\n onAdd: (item: string) => void;\n validate?: (item: string) => Error | null;\n}\n\n// Display a list of items with an input for adding new items, and Add/Delete buttons\nconst EditableItemList = (props: EditableItemListProps): React.ReactElement => {\n const {\n isInvalid = false,\n items,\n onAdd = () => undefined,\n onDelete = () => undefined,\n validate = () => null,\n } = props;\n const [inputError, setInputError] = useState<Error | null>(null);\n const [selectedRanges, setSelectedRanges] = useState<Range[]>([]);\n const [value, setValue] = useState('');\n\n const handleSelectionChange = useCallback((ranges: Range[]) => {\n setSelectedRanges(ranges);\n }, []);\n\n const handleDelete = useCallback(() => {\n onDelete(RangeUtils.getItemsInRanges(items, selectedRanges));\n setSelectedRanges([]);\n }, [items, selectedRanges, onDelete]);\n\n const handleAdd = useCallback(() => {\n if (value === '') {\n return;\n }\n const validationError = validate(value);\n if (validationError == null) {\n onAdd(value);\n setValue('');\n } else {\n setInputError(validationError);\n }\n }, [value, onAdd, validate]);\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const { value: inputValue } = event.target;\n setValue(inputValue);\n setInputError(inputValue === '' ? null : validate(inputValue));\n },\n [validate]\n );\n\n const handleInputFocus = useCallback(() => {\n setSelectedRanges([]);\n }, []);\n\n const handleInputKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n handleAdd();\n }\n },\n [handleAdd]\n );\n\n const containerHeight = useMemo(\n (): number => 14 + clamp(items.length, 1, 6) * ItemList.DEFAULT_ROW_HEIGHT,\n [items.length]\n );\n\n return (\n <div\n className={classNames('editable-item-list-container', {\n 'is-invalid': isInvalid,\n })}\n >\n <div style={{ height: containerHeight }}>\n <ItemList\n itemCount={items.length}\n items={items.map((item, index) => ({\n value: item,\n isSelected: RangeUtils.isSelected(selectedRanges, index),\n }))}\n offset={0}\n selectedRanges={selectedRanges}\n onSelectionChange={handleSelectionChange}\n isMultiSelect\n />\n </div>\n <div className=\"d-flex flex-row pt-2\">\n <div className=\"d-flex flex-grow-1\">\n <input\n className={classNames('form-control', {\n 'is-invalid': inputError != null,\n })}\n placeholder=\"Enter value\"\n type=\"text\"\n value={value}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n onKeyDown={handleInputKeyDown}\n />\n </div>\n <div className=\"d-flex align-items-start mt-1 ml-2\">\n <Button\n kind=\"ghost\"\n onClick={handleAdd}\n disabled={inputError != null || value === ''}\n icon={vsAdd}\n tooltip=\"Add new item\"\n data-testid=\"add-item-button\"\n />\n <Button\n kind=\"ghost\"\n onClick={handleDelete}\n disabled={selectedRanges.length === 0}\n icon={vsTrash}\n tooltip=\"Delete selected items\"\n data-testid=\"delete-item-button\"\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default EditableItemList;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/components",
3
- "version": "0.21.2-dhe-vite.5+87787b6",
3
+ "version": "0.22.1-beta.0+c2f10a3",
4
4
  "description": "Deephaven React component library",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -19,22 +19,14 @@
19
19
  },
20
20
  "scripts": {
21
21
  "build": "cross-env NODE_ENV=production run-p build:*",
22
- "build-dev": "cross-env NODE_ENV=development run-p build:*",
23
- "babel": "babel ./src --out-dir ./dist --extensions \".ts,.tsx,.js,.jsx\" --source-maps --root-mode upward",
24
- "sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist ./scss/BaseStyleSheet.scss:./css/BaseStyleSheet.css",
25
- "build:babel": "npm run babel",
26
- "build:sass": "npm run sass",
27
- "watch": "run-p watch:*",
28
- "watch:babel": "npm run babel -- -w --skip-initial-build",
29
- "watch:sass": "npm run sass -- --watch --update",
30
- "prestart": "npm run build-dev",
31
- "start": "cross-env NODE_ENV=development npm run watch"
22
+ "build:babel": "babel ./src --out-dir ./dist --extensions \".ts,.tsx,.js,.jsx\" --source-maps --root-mode upward",
23
+ "build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist ./scss/BaseStyleSheet.scss:./css/BaseStyleSheet.css"
32
24
  },
33
25
  "dependencies": {
34
- "@deephaven/icons": "^0.21.2-dhe-vite.5+87787b6",
35
- "@deephaven/log": "^0.21.2-dhe-vite.5+87787b6",
36
- "@deephaven/react-hooks": "^0.21.2-dhe-vite.5+87787b6",
37
- "@deephaven/utils": "^0.21.2-dhe-vite.5+87787b6",
26
+ "@deephaven/icons": "^0.22.1-beta.0+c2f10a3",
27
+ "@deephaven/log": "^0.22.1-beta.0+c2f10a3",
28
+ "@deephaven/react-hooks": "^0.22.1-beta.0+c2f10a3",
29
+ "@deephaven/utils": "^0.22.1-beta.0+c2f10a3",
38
30
  "@fortawesome/fontawesome-svg-core": "^6.1.1",
39
31
  "@fortawesome/react-fontawesome": "^0.1.18",
40
32
  "bootstrap": "4.6.2",
@@ -57,8 +49,8 @@
57
49
  "react-dom": "^17.x"
58
50
  },
59
51
  "devDependencies": {
60
- "@deephaven/mocks": "^0.21.2-dhe-vite.5+87787b6",
61
- "@deephaven/tsconfig": "^0.21.2-dhe-vite.5+87787b6"
52
+ "@deephaven/mocks": "^0.22.1-beta.0+c2f10a3",
53
+ "@deephaven/tsconfig": "^0.22.1-beta.0+c2f10a3"
62
54
  },
63
55
  "files": [
64
56
  "dist",
@@ -71,5 +63,5 @@
71
63
  "publishConfig": {
72
64
  "access": "public"
73
65
  },
74
- "gitHead": "87787b6fe084150768bf0db6605b308d4248929a"
66
+ "gitHead": "c2f10a395058a78c527eb9e0e9750411279eebd2"
75
67
  }