@dktunited-techoff/techoff-suite-ui 1.7.6 → 1.7.8

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.
@@ -31,6 +31,21 @@
31
31
  width: 32px;
32
32
  height: 32px;
33
33
  }
34
+ .ts-dropdown-input.ts-dropdown-container--error {
35
+ border: 1px solid #e3262f;
36
+ }
37
+ .ts-dropdown-error {
38
+ display: flex;
39
+ margin-top: 4px;
40
+ color: #e3262f;
41
+ }
42
+ .ts-dropdown-error--icon {
43
+ margin-right: 4px;
44
+ }
45
+ .ts-dropdown-error--label {
46
+ font-size: 12px;
47
+ font-weight: 500;
48
+ }
34
49
  /* ####### */
35
50
  /* LABEL */
36
51
  .ts-dropdown-label {
@@ -1,4 +1,4 @@
1
1
  import * as React from 'react';
2
2
  import { TsDropdownProps } from './TsDropdown.types';
3
3
  import './TsDropdown.css';
4
- export declare const TsDropdown: <T extends unknown>({ containerRef, label, options, placeholder, reloadOptionsOn, searchPlaceholder, value, disabled, searchable, getOptionLabel, getOptionValue, loadOptions, onChange, }: TsDropdownProps<T>) => React.JSX.Element;
4
+ export declare const TsDropdown: <T extends unknown>({ containerRef, error, label, options, placeholder, reloadOptionsOn, searchPlaceholder, value, disabled, searchable, getOptionLabel, getOptionValue, loadOptions, onChange, }: TsDropdownProps<T>) => React.JSX.Element;
@@ -5,7 +5,7 @@ import { TsInput } from '../TsInput/TsInput/TsInput';
5
5
  import { useClickOutside } from '../../hooks/use-click-outside';
6
6
  import { TsLoader } from '../TsLoader/TsLoader';
7
7
  import './TsDropdown.css';
8
- export const TsDropdown = ({ containerRef, label, options, placeholder, reloadOptionsOn = [], searchPlaceholder, value, disabled, searchable, getOptionLabel, getOptionValue, loadOptions, onChange, }) => {
8
+ export const TsDropdown = ({ containerRef, error, label, options, placeholder, reloadOptionsOn = [], searchPlaceholder, value, disabled, searchable, getOptionLabel, getOptionValue, loadOptions, onChange, }) => {
9
9
  const [showDropdownMenu, setShowDropdownMenu] = useState(false);
10
10
  const [searchValue, setSearchValue] = useState('');
11
11
  const [items, setItems] = useState(options ?? []);
@@ -71,11 +71,19 @@ export const TsDropdown = ({ containerRef, label, options, placeholder, reloadOp
71
71
  return (React.createElement("div", { className: "ts-dropdown-container", ref: dropdownRef },
72
72
  React.createElement("div", { className: "ts-dropdown-input-container" },
73
73
  label && React.createElement("div", { className: "ts-dropdown-label" }, label),
74
- React.createElement("div", { className: `ts-dropdown-input ${disabled ? 'ts-dropdown-input--disabled' : ''}`, onClick: handleShowDropdownMenu },
74
+ React.createElement("div", { className: `
75
+ ts-dropdown-input
76
+ ${disabled ? 'ts-dropdown-input--disabled' : ''}
77
+ ${error && error !== '' ? 'ts-dropdown-container--error' : ''}
78
+ `, onClick: handleShowDropdownMenu },
75
79
  !value && placeholder && React.createElement("div", { className: "ts-dropdown-input--placeholder" }, placeholder),
76
80
  value && React.createElement("div", { className: "ts-dropdown-input--value" }, getOptionLabel(value)),
77
81
  React.createElement("div", { className: "ts-dropdown-input--chevron" },
78
82
  React.createElement(TsIcon, { name: showDropdownMenu ? 'chevron-up' : 'chevron-down' })))),
83
+ error && error !== '' && (React.createElement("div", { className: "ts-dropdown-error" },
84
+ React.createElement("div", { className: "ts-dropdown-error--icon" },
85
+ React.createElement(TsIcon, { name: "alert-circle", size: "16" })),
86
+ React.createElement("div", { className: "ts-dropdown-error--label" }, error))),
79
87
  !disabled && showDropdownMenu && (React.createElement("div", { className: "ts-dropdown-menu-container", ref: dropdownMenuRef },
80
88
  searchable && (React.createElement("div", { className: "ts-dropdown-search" },
81
89
  React.createElement(TsInput, { icon: "search", placeholder: searchPlaceholder, value: searchValue, autoFocus: true, onChange: setSearchValue }))),
@@ -1 +1 @@
1
- {"version":3,"file":"TsDropdown.js","sourceRoot":"","sources":["../../../src/components/TsDropdown/TsDropdown.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TsDropdown.js","sourceRoot":"","sources":["../../../src/components/TsDropdown/TsDropdown.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { RefObject } from 'react';
2
2
  export type TsDropdownProps<T> = {
3
3
  containerRef?: RefObject<HTMLElement>;
4
+ error?: string;
4
5
  label?: string;
5
6
  options?: T[];
6
7
  placeholder?: string;
@@ -6,6 +6,10 @@ import { fruits } from './fruits';
6
6
  <Meta title="Components/Dropdown" />
7
7
 
8
8
  export const dropdownArgTypes = {
9
+ error: {
10
+ control: 'text',
11
+ description: 'Error of the dropdown.',
12
+ },
9
13
  label: {
10
14
  control: 'text',
11
15
  description: 'Label of the dropdown.',
@@ -56,6 +60,7 @@ Dropdowns show a list of options that can be used to select, filter or sort cont
56
60
  <Story
57
61
  name="Overview"
58
62
  args={{
63
+ error: '',
59
64
  label: 'Label',
60
65
  options: fruits,
61
66
  searchPlaceholder: '',
@@ -4,6 +4,12 @@ import { TsIcon } from '../TsIcon/TsIcon';
4
4
  import './TsTabs.css';
5
5
  export const TsTabs = ({ defaultSelectedTabId, tabs }) => {
6
6
  const [selectedTab, setSelectedTab] = useState(tabs.find(t => t.id === defaultSelectedTabId) ?? tabs[0]);
7
+ // ########
8
+ // Handlers
9
+ const handleSelectTab = (tab) => {
10
+ setSelectedTab(tab);
11
+ tab.onClick?.();
12
+ };
7
13
  // #########
8
14
  // Rendering
9
15
  return (React.createElement("div", { className: "ts-tabs" },
@@ -13,7 +19,7 @@ export const TsTabs = ({ defaultSelectedTabId, tabs }) => {
13
19
  ts-tabs-item
14
20
  ${tab.id === selectedTab.id ? 'ts-tabs-item--selected' : ''}
15
21
  ${tab.disabled ? 'ts-tabs-item--disabled' : ''}
16
- `, onClick: () => !tab.disabled && setSelectedTab(tab) },
22
+ `, onClick: () => !tab.disabled && handleSelectTab(tab) },
17
23
  tab.icon && (React.createElement("div", { className: "ts-tabs-item--icon" },
18
24
  React.createElement(TsIcon, { name: tab.icon }))),
19
25
  React.createElement("div", { className: "ts-tabs-item--label" }, tab.label),
@@ -1 +1 @@
1
- {"version":3,"file":"TsTabs.js","sourceRoot":"","sources":["../../../src/components/TsTabs/TsTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAe,EAAE,EAAE;IACpE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAU,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,oBAAoB,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAElH,YAAY;IACZ,YAAY;IACZ,OAAO,CACL,6BAAK,SAAS,EAAC,SAAS;QACtB,6BAAK,SAAS,EAAC,gBAAgB;YAC7B,6BAAK,SAAS,EAAC,yBAAyB;gBACtC,6BAAK,SAAS,EAAC,eAAe,IAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CACf,6BACE,GAAG,EAAE,GAAG,CAAC,EAAE,EACX,SAAS,EAAE;;oBAEP,GAAG,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;oBACzD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;iBAC/C,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,cAAc,CAAC,GAAG,CAAC;oBAElD,GAAG,CAAC,IAAI,IAAI,CACX,6BAAK,SAAS,EAAC,oBAAoB;wBACjC,oBAAC,MAAM,IAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAI,CACtB,CACP;oBACD,6BAAK,SAAS,EAAC,qBAAqB,IAAE,GAAG,CAAC,KAAK,CAAO;oBACrD,GAAG,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,IAAI,6BAAK,SAAS,EAAC,4BAA4B,GAAG,CACxE,CACP,CAAC,CACE,CACF;YAEL,WAAW,EAAE,OAAO,IAAI,6BAAK,SAAS,EAAC,iBAAiB,IAAE,WAAW,EAAE,OAAO,CAAO,CAClF;QAEN,6BAAK,SAAS,EAAC,mBAAmB,IAAE,WAAW,EAAE,OAAO,CAAO,CAC3D,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"TsTabs.js","sourceRoot":"","sources":["../../../src/components/TsTabs/TsTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAe,EAAE,EAAE;IACpE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAU,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,oBAAoB,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAElH,WAAW;IACX,WAAW;IACX,MAAM,eAAe,GAAG,CAAC,GAAY,EAAE,EAAE;QACvC,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,YAAY;IACZ,YAAY;IACZ,OAAO,CACL,6BAAK,SAAS,EAAC,SAAS;QACtB,6BAAK,SAAS,EAAC,gBAAgB;YAC7B,6BAAK,SAAS,EAAC,yBAAyB;gBACtC,6BAAK,SAAS,EAAC,eAAe,IAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CACf,6BACE,GAAG,EAAE,GAAG,CAAC,EAAE,EACX,SAAS,EAAE;;oBAEP,GAAG,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;oBACzD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;iBAC/C,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC;oBAEnD,GAAG,CAAC,IAAI,IAAI,CACX,6BAAK,SAAS,EAAC,oBAAoB;wBACjC,oBAAC,MAAM,IAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAI,CACtB,CACP;oBACD,6BAAK,SAAS,EAAC,qBAAqB,IAAE,GAAG,CAAC,KAAK,CAAO;oBACrD,GAAG,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,IAAI,6BAAK,SAAS,EAAC,4BAA4B,GAAG,CACxE,CACP,CAAC,CACE,CACF;YAEL,WAAW,EAAE,OAAO,IAAI,6BAAK,SAAS,EAAC,iBAAiB,IAAE,WAAW,EAAE,OAAO,CAAO,CAClF;QAEN,6BAAK,SAAS,EAAC,mBAAmB,IAAE,WAAW,EAAE,OAAO,CAAO,CAC3D,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -6,6 +6,7 @@ export type TabItem = {
6
6
  disabled?: boolean;
7
7
  element: ReactElement;
8
8
  actions?: ReactElement;
9
+ onClick?: () => void;
9
10
  };
10
11
  export type TsTabsProps = {
11
12
  defaultSelectedTabId?: string;
@@ -31,6 +31,21 @@
31
31
  width: 32px;
32
32
  height: 32px;
33
33
  }
34
+ .ts-dropdown-input.ts-dropdown-container--error {
35
+ border: 1px solid #e3262f;
36
+ }
37
+ .ts-dropdown-error {
38
+ display: flex;
39
+ margin-top: 4px;
40
+ color: #e3262f;
41
+ }
42
+ .ts-dropdown-error--icon {
43
+ margin-right: 4px;
44
+ }
45
+ .ts-dropdown-error--label {
46
+ font-size: 12px;
47
+ font-weight: 500;
48
+ }
34
49
  /* ####### */
35
50
  /* LABEL */
36
51
  .ts-dropdown-label {
@@ -1,4 +1,4 @@
1
1
  import * as React from 'react';
2
2
  import { TsDropdownProps } from './TsDropdown.types';
3
3
  import './TsDropdown.css';
4
- export declare const TsDropdown: <T extends unknown>({ containerRef, label, options, placeholder, reloadOptionsOn, searchPlaceholder, value, disabled, searchable, getOptionLabel, getOptionValue, loadOptions, onChange, }: TsDropdownProps<T>) => React.JSX.Element;
4
+ export declare const TsDropdown: <T extends unknown>({ containerRef, error, label, options, placeholder, reloadOptionsOn, searchPlaceholder, value, disabled, searchable, getOptionLabel, getOptionValue, loadOptions, onChange, }: TsDropdownProps<T>) => React.JSX.Element;
@@ -8,7 +8,7 @@ const TsInput_1 = require("../TsInput/TsInput/TsInput");
8
8
  const use_click_outside_1 = require("../../hooks/use-click-outside");
9
9
  const TsLoader_1 = require("../TsLoader/TsLoader");
10
10
  require("./TsDropdown.css");
11
- const TsDropdown = ({ containerRef, label, options, placeholder, reloadOptionsOn = [], searchPlaceholder, value, disabled, searchable, getOptionLabel, getOptionValue, loadOptions, onChange, }) => {
11
+ const TsDropdown = ({ containerRef, error, label, options, placeholder, reloadOptionsOn = [], searchPlaceholder, value, disabled, searchable, getOptionLabel, getOptionValue, loadOptions, onChange, }) => {
12
12
  const [showDropdownMenu, setShowDropdownMenu] = (0, react_1.useState)(false);
13
13
  const [searchValue, setSearchValue] = (0, react_1.useState)('');
14
14
  const [items, setItems] = (0, react_1.useState)(options ?? []);
@@ -74,11 +74,19 @@ const TsDropdown = ({ containerRef, label, options, placeholder, reloadOptionsOn
74
74
  return (React.createElement("div", { className: "ts-dropdown-container", ref: dropdownRef },
75
75
  React.createElement("div", { className: "ts-dropdown-input-container" },
76
76
  label && React.createElement("div", { className: "ts-dropdown-label" }, label),
77
- React.createElement("div", { className: `ts-dropdown-input ${disabled ? 'ts-dropdown-input--disabled' : ''}`, onClick: handleShowDropdownMenu },
77
+ React.createElement("div", { className: `
78
+ ts-dropdown-input
79
+ ${disabled ? 'ts-dropdown-input--disabled' : ''}
80
+ ${error && error !== '' ? 'ts-dropdown-container--error' : ''}
81
+ `, onClick: handleShowDropdownMenu },
78
82
  !value && placeholder && React.createElement("div", { className: "ts-dropdown-input--placeholder" }, placeholder),
79
83
  value && React.createElement("div", { className: "ts-dropdown-input--value" }, getOptionLabel(value)),
80
84
  React.createElement("div", { className: "ts-dropdown-input--chevron" },
81
85
  React.createElement(TsIcon_1.TsIcon, { name: showDropdownMenu ? 'chevron-up' : 'chevron-down' })))),
86
+ error && error !== '' && (React.createElement("div", { className: "ts-dropdown-error" },
87
+ React.createElement("div", { className: "ts-dropdown-error--icon" },
88
+ React.createElement(TsIcon_1.TsIcon, { name: "alert-circle", size: "16" })),
89
+ React.createElement("div", { className: "ts-dropdown-error--label" }, error))),
82
90
  !disabled && showDropdownMenu && (React.createElement("div", { className: "ts-dropdown-menu-container", ref: dropdownMenuRef },
83
91
  searchable && (React.createElement("div", { className: "ts-dropdown-search" },
84
92
  React.createElement(TsInput_1.TsInput, { icon: "search", placeholder: searchPlaceholder, value: searchValue, autoFocus: true, onChange: setSearchValue }))),
@@ -1 +1 @@
1
- {"version":3,"file":"TsDropdown.js","sourceRoot":"","sources":["../../../src/components/TsDropdown/TsDropdown.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TsDropdown.js","sourceRoot":"","sources":["../../../src/components/TsDropdown/TsDropdown.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { RefObject } from 'react';
2
2
  export type TsDropdownProps<T> = {
3
3
  containerRef?: RefObject<HTMLElement>;
4
+ error?: string;
4
5
  label?: string;
5
6
  options?: T[];
6
7
  placeholder?: string;
@@ -6,6 +6,10 @@ import { fruits } from './fruits';
6
6
  <Meta title="Components/Dropdown" />
7
7
 
8
8
  export const dropdownArgTypes = {
9
+ error: {
10
+ control: 'text',
11
+ description: 'Error of the dropdown.',
12
+ },
9
13
  label: {
10
14
  control: 'text',
11
15
  description: 'Label of the dropdown.',
@@ -56,6 +60,7 @@ Dropdowns show a list of options that can be used to select, filter or sort cont
56
60
  <Story
57
61
  name="Overview"
58
62
  args={{
63
+ error: '',
59
64
  label: 'Label',
60
65
  options: fruits,
61
66
  searchPlaceholder: '',
@@ -7,6 +7,12 @@ const TsIcon_1 = require("../TsIcon/TsIcon");
7
7
  require("./TsTabs.css");
8
8
  const TsTabs = ({ defaultSelectedTabId, tabs }) => {
9
9
  const [selectedTab, setSelectedTab] = (0, react_1.useState)(tabs.find(t => t.id === defaultSelectedTabId) ?? tabs[0]);
10
+ // ########
11
+ // Handlers
12
+ const handleSelectTab = (tab) => {
13
+ setSelectedTab(tab);
14
+ tab.onClick?.();
15
+ };
10
16
  // #########
11
17
  // Rendering
12
18
  return (React.createElement("div", { className: "ts-tabs" },
@@ -16,7 +22,7 @@ const TsTabs = ({ defaultSelectedTabId, tabs }) => {
16
22
  ts-tabs-item
17
23
  ${tab.id === selectedTab.id ? 'ts-tabs-item--selected' : ''}
18
24
  ${tab.disabled ? 'ts-tabs-item--disabled' : ''}
19
- `, onClick: () => !tab.disabled && setSelectedTab(tab) },
25
+ `, onClick: () => !tab.disabled && handleSelectTab(tab) },
20
26
  tab.icon && (React.createElement("div", { className: "ts-tabs-item--icon" },
21
27
  React.createElement(TsIcon_1.TsIcon, { name: tab.icon }))),
22
28
  React.createElement("div", { className: "ts-tabs-item--label" }, tab.label),
@@ -1 +1 @@
1
- {"version":3,"file":"TsTabs.js","sourceRoot":"","sources":["../../../src/components/TsTabs/TsTabs.tsx"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,iCAAiC;AACjC,6CAA0C;AAE1C,wBAAsB;AAEf,MAAM,MAAM,GAAG,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAe,EAAE,EAAE;IACpE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAU,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,oBAAoB,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAElH,YAAY;IACZ,YAAY;IACZ,OAAO,CACL,6BAAK,SAAS,EAAC,SAAS;QACtB,6BAAK,SAAS,EAAC,gBAAgB;YAC7B,6BAAK,SAAS,EAAC,yBAAyB;gBACtC,6BAAK,SAAS,EAAC,eAAe,IAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CACf,6BACE,GAAG,EAAE,GAAG,CAAC,EAAE,EACX,SAAS,EAAE;;oBAEP,GAAG,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;oBACzD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;iBAC/C,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,cAAc,CAAC,GAAG,CAAC;oBAElD,GAAG,CAAC,IAAI,IAAI,CACX,6BAAK,SAAS,EAAC,oBAAoB;wBACjC,oBAAC,eAAM,IAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAI,CACtB,CACP;oBACD,6BAAK,SAAS,EAAC,qBAAqB,IAAE,GAAG,CAAC,KAAK,CAAO;oBACrD,GAAG,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,IAAI,6BAAK,SAAS,EAAC,4BAA4B,GAAG,CACxE,CACP,CAAC,CACE,CACF;YAEL,WAAW,EAAE,OAAO,IAAI,6BAAK,SAAS,EAAC,iBAAiB,IAAE,WAAW,EAAE,OAAO,CAAO,CAClF;QAEN,6BAAK,SAAS,EAAC,mBAAmB,IAAE,WAAW,EAAE,OAAO,CAAO,CAC3D,CACP,CAAC;AACJ,CAAC,CAAC;AAtCW,QAAA,MAAM,UAsCjB"}
1
+ {"version":3,"file":"TsTabs.js","sourceRoot":"","sources":["../../../src/components/TsTabs/TsTabs.tsx"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,iCAAiC;AACjC,6CAA0C;AAE1C,wBAAsB;AAEf,MAAM,MAAM,GAAG,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAe,EAAE,EAAE;IACpE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAU,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,oBAAoB,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAElH,WAAW;IACX,WAAW;IACX,MAAM,eAAe,GAAG,CAAC,GAAY,EAAE,EAAE;QACvC,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,YAAY;IACZ,YAAY;IACZ,OAAO,CACL,6BAAK,SAAS,EAAC,SAAS;QACtB,6BAAK,SAAS,EAAC,gBAAgB;YAC7B,6BAAK,SAAS,EAAC,yBAAyB;gBACtC,6BAAK,SAAS,EAAC,eAAe,IAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CACf,6BACE,GAAG,EAAE,GAAG,CAAC,EAAE,EACX,SAAS,EAAE;;oBAEP,GAAG,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;oBACzD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;iBAC/C,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC;oBAEnD,GAAG,CAAC,IAAI,IAAI,CACX,6BAAK,SAAS,EAAC,oBAAoB;wBACjC,oBAAC,eAAM,IAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAI,CACtB,CACP;oBACD,6BAAK,SAAS,EAAC,qBAAqB,IAAE,GAAG,CAAC,KAAK,CAAO;oBACrD,GAAG,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,IAAI,6BAAK,SAAS,EAAC,4BAA4B,GAAG,CACxE,CACP,CAAC,CACE,CACF;YAEL,WAAW,EAAE,OAAO,IAAI,6BAAK,SAAS,EAAC,iBAAiB,IAAE,WAAW,EAAE,OAAO,CAAO,CAClF;QAEN,6BAAK,SAAS,EAAC,mBAAmB,IAAE,WAAW,EAAE,OAAO,CAAO,CAC3D,CACP,CAAC;AACJ,CAAC,CAAC;AA7CW,QAAA,MAAM,UA6CjB"}
@@ -6,6 +6,7 @@ export type TabItem = {
6
6
  disabled?: boolean;
7
7
  element: ReactElement;
8
8
  actions?: ReactElement;
9
+ onClick?: () => void;
9
10
  };
10
11
  export type TsTabsProps = {
11
12
  defaultSelectedTabId?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dktunited-techoff/techoff-suite-ui",
3
- "version": "1.7.6",
3
+ "version": "1.7.8",
4
4
  "main": "lib/index.js",
5
5
  "types": "./lib",
6
6
  "module": "esm/index.js",
@@ -31,6 +31,21 @@
31
31
  width: 32px;
32
32
  height: 32px;
33
33
  }
34
+ .ts-dropdown-input.ts-dropdown-container--error {
35
+ border: 1px solid #e3262f;
36
+ }
37
+ .ts-dropdown-error {
38
+ display: flex;
39
+ margin-top: 4px;
40
+ color: #e3262f;
41
+ }
42
+ .ts-dropdown-error--icon {
43
+ margin-right: 4px;
44
+ }
45
+ .ts-dropdown-error--label {
46
+ font-size: 12px;
47
+ font-weight: 500;
48
+ }
34
49
  /* ####### */
35
50
  /* LABEL */
36
51
  .ts-dropdown-label {
@@ -9,6 +9,7 @@ import './TsDropdown.css';
9
9
 
10
10
  export const TsDropdown = <T extends unknown>({
11
11
  containerRef,
12
+ error,
12
13
  label,
13
14
  options,
14
15
  placeholder,
@@ -94,7 +95,11 @@ export const TsDropdown = <T extends unknown>({
94
95
  <div className="ts-dropdown-input-container">
95
96
  {label && <div className="ts-dropdown-label">{label}</div>}
96
97
  <div
97
- className={`ts-dropdown-input ${disabled ? 'ts-dropdown-input--disabled' : ''}`}
98
+ className={`
99
+ ts-dropdown-input
100
+ ${disabled ? 'ts-dropdown-input--disabled' : ''}
101
+ ${error && error !== '' ? 'ts-dropdown-container--error' : ''}
102
+ `}
98
103
  onClick={handleShowDropdownMenu}
99
104
  >
100
105
  {!value && placeholder && <div className="ts-dropdown-input--placeholder">{placeholder}</div>}
@@ -105,6 +110,15 @@ export const TsDropdown = <T extends unknown>({
105
110
  </div>
106
111
  </div>
107
112
 
113
+ {error && error !== '' && (
114
+ <div className="ts-dropdown-error">
115
+ <div className="ts-dropdown-error--icon">
116
+ <TsIcon name="alert-circle" size="16" />
117
+ </div>
118
+ <div className="ts-dropdown-error--label">{error}</div>
119
+ </div>
120
+ )}
121
+
108
122
  {!disabled && showDropdownMenu && (
109
123
  <div className="ts-dropdown-menu-container" ref={dropdownMenuRef}>
110
124
  {searchable && (
@@ -2,6 +2,7 @@ import { RefObject } from 'react';
2
2
 
3
3
  export type TsDropdownProps<T> = {
4
4
  containerRef?: RefObject<HTMLElement>;
5
+ error?: string;
5
6
  label?: string;
6
7
  options?: T[];
7
8
  placeholder?: string;
@@ -6,6 +6,10 @@ import { fruits } from './fruits';
6
6
  <Meta title="Components/Dropdown" />
7
7
 
8
8
  export const dropdownArgTypes = {
9
+ error: {
10
+ control: 'text',
11
+ description: 'Error of the dropdown.',
12
+ },
9
13
  label: {
10
14
  control: 'text',
11
15
  description: 'Label of the dropdown.',
@@ -56,6 +60,7 @@ Dropdowns show a list of options that can be used to select, filter or sort cont
56
60
  <Story
57
61
  name="Overview"
58
62
  args={{
63
+ error: '',
59
64
  label: 'Label',
60
65
  options: fruits,
61
66
  searchPlaceholder: '',
@@ -7,6 +7,13 @@ import './TsTabs.css';
7
7
  export const TsTabs = ({ defaultSelectedTabId, tabs }: TsTabsProps) => {
8
8
  const [selectedTab, setSelectedTab] = useState<TabItem>(tabs.find(t => t.id === defaultSelectedTabId) ?? tabs[0]);
9
9
 
10
+ // ########
11
+ // Handlers
12
+ const handleSelectTab = (tab: TabItem) => {
13
+ setSelectedTab(tab);
14
+ tab.onClick?.();
15
+ };
16
+
10
17
  // #########
11
18
  // Rendering
12
19
  return (
@@ -22,7 +29,7 @@ export const TsTabs = ({ defaultSelectedTabId, tabs }: TsTabsProps) => {
22
29
  ${tab.id === selectedTab.id ? 'ts-tabs-item--selected' : ''}
23
30
  ${tab.disabled ? 'ts-tabs-item--disabled' : ''}
24
31
  `}
25
- onClick={() => !tab.disabled && setSelectedTab(tab)}
32
+ onClick={() => !tab.disabled && handleSelectTab(tab)}
26
33
  >
27
34
  {tab.icon && (
28
35
  <div className="ts-tabs-item--icon">
@@ -7,5 +7,6 @@ export type TabItem = {
7
7
  disabled?: boolean;
8
8
  element: ReactElement;
9
9
  actions?: ReactElement;
10
+ onClick?: () => void;
10
11
  };
11
12
  export type TsTabsProps = { defaultSelectedTabId?: string; tabs: TabItem[] };