@economic/taco 2.14.0 → 2.14.2
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/components/Field/Field.d.ts +2 -2
- package/dist/esm/index.css +9 -3
- package/dist/esm/packages/taco/src/components/Field/Field.js +5 -5
- package/dist/esm/packages/taco/src/components/Field/Field.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Edit.js +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Edit.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Search.js +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Search.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js +1 -6
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Actions.js +1 -1
- package/dist/index.css +9 -3
- package/dist/taco.cjs.development.js +32 -36
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/package.json +2 -2
- package/types.json +266 -266
@@ -5,7 +5,7 @@ export declare type FieldProps = React.LabelHTMLAttributes<HTMLLabelElement> & {
|
|
5
5
|
children: React.ReactNode;
|
6
6
|
/** Changes the style to indicate the element is disabled */
|
7
7
|
disabled?: boolean;
|
8
|
-
|
8
|
+
invalid?: boolean;
|
9
9
|
warning?: boolean;
|
10
10
|
/**
|
11
11
|
* Text displayed below the children of Field.
|
@@ -18,7 +18,7 @@ export declare const Field: React.ForwardRefExoticComponent<React.LabelHTMLAttri
|
|
18
18
|
children: React.ReactNode;
|
19
19
|
/** Changes the style to indicate the element is disabled */
|
20
20
|
disabled?: boolean | undefined;
|
21
|
-
|
21
|
+
invalid?: boolean | undefined;
|
22
22
|
warning?: boolean | undefined;
|
23
23
|
/**
|
24
24
|
* Text displayed below the children of Field.
|
package/dist/esm/index.css
CHANGED
@@ -860,7 +860,7 @@
|
|
860
860
|
}
|
861
861
|
|
862
862
|
[data-font-size='small'] [role='cell'][data-editable] {
|
863
|
-
@apply px-[calc(var(--table3-cell-padding-x)_-
|
863
|
+
@apply px-[calc(var(--table3-cell-padding-x)_-_6px)];
|
864
864
|
}
|
865
865
|
|
866
866
|
[data-font-size='small'] [role='cell'][data-editable] [data-taco='checkbox'],
|
@@ -890,7 +890,7 @@
|
|
890
890
|
}
|
891
891
|
|
892
892
|
[data-font-size='medium'] [role='cell'][data-editable] {
|
893
|
-
@apply px-[calc(var(--table3-cell-padding-x)_-
|
893
|
+
@apply px-[calc(var(--table3-cell-padding-x)_-_8px)];
|
894
894
|
}
|
895
895
|
|
896
896
|
[data-font-size='medium'] [role='cell'][data-editable] [data-taco='checkbox'],
|
@@ -934,7 +934,7 @@
|
|
934
934
|
}
|
935
935
|
|
936
936
|
[data-font-size='large'] [role='cell'][data-editable] {
|
937
|
-
@apply px-[calc(var(--table3-cell-padding-x)_-
|
937
|
+
@apply px-[calc(var(--table3-cell-padding-x)_-_10px)];
|
938
938
|
}
|
939
939
|
|
940
940
|
[data-font-size='large'] [role='cell'][data-editable] [data-taco='checkbox'],
|
@@ -943,3 +943,9 @@
|
|
943
943
|
[data-font-size='large'] [role='cell'][data-editable] [data-taco='switch-container'] {
|
944
944
|
@apply !mx-[calc(var(--table3-cell-padding-x)_-_5px)] !mt-px;
|
945
945
|
}
|
946
|
+
|
947
|
+
/* Icon inside column header button uses em values therefore text-sm is required to prevent icon
|
948
|
+
from overflowing button's boundaries */
|
949
|
+
[data-font-size='large'] [role='columnheader'] button {
|
950
|
+
@apply !text-sm;
|
951
|
+
}
|
@@ -5,7 +5,7 @@ const Field = /*#__PURE__*/forwardRef(function Field(props, ref) {
|
|
5
5
|
const {
|
6
6
|
disabled,
|
7
7
|
children,
|
8
|
-
|
8
|
+
invalid = false,
|
9
9
|
warning = false,
|
10
10
|
message,
|
11
11
|
...otherProps
|
@@ -14,9 +14,9 @@ const Field = /*#__PURE__*/forwardRef(function Field(props, ref) {
|
|
14
14
|
'text-grey-300': disabled
|
15
15
|
}, props.className);
|
16
16
|
const messageClassName = cn('h-4 text-xs text-left leading-normal font-normal truncate -mb-4', {
|
17
|
-
'text-grey-700': !
|
18
|
-
'text-red-500':
|
19
|
-
'text-yellow-700': warning && !
|
17
|
+
'text-grey-700': !invalid && !warning,
|
18
|
+
'text-red-500': invalid,
|
19
|
+
'text-yellow-700': warning && !invalid,
|
20
20
|
'opacity-50': disabled
|
21
21
|
});
|
22
22
|
return /*#__PURE__*/createElement("label", Object.assign({}, otherProps, {
|
@@ -25,7 +25,7 @@ const Field = /*#__PURE__*/forwardRef(function Field(props, ref) {
|
|
25
25
|
ref: ref
|
26
26
|
}), children, message && /*#__PURE__*/createElement("span", {
|
27
27
|
className: messageClassName,
|
28
|
-
role:
|
28
|
+
role: invalid ? 'alert' : undefined
|
29
29
|
}, message));
|
30
30
|
});
|
31
31
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Field.js","sources":["../../../../../../../src/components/Field/Field.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\n\nimport './Field.css';\n\nexport type FieldProps = React.LabelHTMLAttributes<HTMLLabelElement> & {\n /** Content of the field */\n children: React.ReactNode;\n /**\tChanges the style to indicate the element is disabled */\n disabled?: boolean;\n /* Whether the input is in an
|
1
|
+
{"version":3,"file":"Field.js","sources":["../../../../../../../src/components/Field/Field.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\n\nimport './Field.css';\n\nexport type FieldProps = React.LabelHTMLAttributes<HTMLLabelElement> & {\n /** Content of the field */\n children: React.ReactNode;\n /**\tChanges the style to indicate the element is disabled */\n disabled?: boolean;\n /* Whether the input is in an invalid state */\n invalid?: boolean;\n /* Whether the input is in a warning state */\n warning?: boolean;\n /**\n * Text displayed below the children of Field.\n * Should be a short text that indicates feedback for user.\n */\n message?: string;\n};\n\nexport const Field = React.forwardRef(function Field(props: FieldProps, ref: React.Ref<HTMLLabelElement>) {\n const { disabled, children, invalid = false, warning = false, message, ...otherProps } = props;\n const className = cn(\n 'flex flex-col font-bold text-xs leading-loose pb-4 min-h-[theme(spacing.18)]',\n {\n 'text-grey-300': disabled,\n },\n props.className\n );\n const messageClassName = cn('h-4 text-xs text-left leading-normal font-normal truncate -mb-4', {\n 'text-grey-700': !invalid && !warning,\n 'text-red-500': invalid,\n 'text-yellow-700': warning && !invalid,\n 'opacity-50': disabled,\n });\n\n return (\n <label {...otherProps} className={className} data-taco=\"label\" ref={ref}>\n {children}\n {message && (\n <span className={messageClassName} role={invalid ? 'alert' : undefined}>\n {message}\n </span>\n )}\n </label>\n );\n});\n"],"names":["Field","React","props","ref","disabled","children","invalid","warning","message","otherProps","className","cn","messageClassName","role","undefined"],"mappings":";;;MAqBaA,KAAK,gBAAGC,UAAgB,CAAC,SAASD,KAAKA,CAACE,KAAiB,EAAEC,GAAgC;EACpG,MAAM;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,OAAO,GAAG,KAAK;IAAEC,OAAO,GAAG,KAAK;IAAEC,OAAO;IAAE,GAAGC;GAAY,GAAGP,KAAK;EAC9F,MAAMQ,SAAS,GAAGC,EAAE,CAChB,8EAA8E,EAC9E;IACI,eAAe,EAAEP;GACpB,EACDF,KAAK,CAACQ,SAAS,CAClB;EACD,MAAME,gBAAgB,GAAGD,EAAE,CAAC,iEAAiE,EAAE;IAC3F,eAAe,EAAE,CAACL,OAAO,IAAI,CAACC,OAAO;IACrC,cAAc,EAAED,OAAO;IACvB,iBAAiB,EAAEC,OAAO,IAAI,CAACD,OAAO;IACtC,YAAY,EAAEF;GACjB,CAAC;EAEF,oBACIH,yCAAWQ,UAAU;IAAEC,SAAS,EAAEA,SAAS;iBAAY,OAAO;IAACP,GAAG,EAAEA;MAC/DE,QAAQ,EACRG,OAAO,iBACJP;IAAMS,SAAS,EAAEE,gBAAgB;IAAEC,IAAI,EAAEP,OAAO,GAAG,OAAO,GAAGQ;KACxDN,OAAO,CAEf,CACG;AAEhB,CAAC;;;;"}
|
@@ -136,7 +136,7 @@ const EditPopover = props => {
|
|
136
136
|
className: cn('!min-h-fit', {
|
137
137
|
'!pb-0': !validationError
|
138
138
|
}),
|
139
|
-
|
139
|
+
invalid: !!validationError,
|
140
140
|
message: validationError === null || validationError === void 0 ? void 0 : validationError.message
|
141
141
|
}, /*#__PURE__*/React__default.createElement(Input, {
|
142
142
|
invalid: !!validationError,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Edit.js","sources":["../../../../../../../../src/components/Select2/components/Edit.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport * as RadioGroup from '@radix-ui/react-radio-group';\nimport { Button } from '../../Button/Button';\nimport { Input } from '../../Input/Input';\nimport { Popover, PopoverProps } from '../../Popover/Popover';\nimport { Icon } from '../../Icon/Icon';\nimport { Select2OptionValue } from '../types';\nimport { useSelect2Context } from './Context';\nimport { Field } from '../../Field/Field';\nimport { Group } from '../../Group/Group';\nimport { useLocalization } from '../../Provider/Localization';\nimport { Color } from '../../../types';\nimport { AVAILABLE_COLORS, getSubtleColorShadeClasses } from '../../../utils/tailwind';\n\nexport type EditPopoverProps = PopoverProps & {\n color?: Color;\n text: string;\n value: Select2OptionValue;\n};\n\nexport const EditPopover = (props: EditPopoverProps) => {\n const { color: initialColor, text: initialName, value, ...popoverProps } = props;\n const ref = React.useRef<HTMLInputElement>(null);\n const { onDelete, onEdit, searchRef, ref: selectRef } = useSelect2Context();\n const { texts } = useLocalization();\n const [name, setName] = React.useState(initialName);\n const [color, setColor] = React.useState(initialColor);\n const [validationError, setValidationError] = React.useState<Error | undefined>();\n\n const handleInputChange = event => {\n setName(event.target.value);\n setValidationError(undefined);\n };\n\n const handleInputKeyDown = close => async event => {\n event.stopPropagation();\n\n if (event.key === 'Escape') {\n close();\n } else if (event.key === 'Enter') {\n handleSave(close)(event);\n }\n };\n\n const handleDelete = close => async event => {\n event.stopPropagation();\n close();\n\n if (onDelete) {\n await onDelete(value);\n }\n };\n\n const handleSave = close => async event => {\n if (onEdit && (name !== initialName || color !== initialColor)) {\n try {\n await onEdit(value, name, color);\n close();\n } catch (error) {\n event.preventDefault();\n event.stopPropagation();\n setValidationError(error as Error);\n ref.current?.focus();\n }\n } else {\n close();\n }\n };\n\n const handleCloseAutoFocus = event => {\n event.preventDefault();\n setName(initialName);\n setColor(initialColor);\n setValidationError(undefined);\n\n if (searchRef?.current) {\n searchRef.current?.focus();\n } else {\n selectRef.current?.focus();\n }\n };\n\n const handleInteractOutside = () => {\n setName(initialName);\n setColor(initialColor);\n };\n\n const preventKeyDownPropagation = event => {\n // Need to allow 'Escape', 'Tab', 'Shift + Tab' to support default focus and close behaviour of Radix Popover.\n if (event.key === 'Escape' || event.key === 'Tab' || (event.key === 'Tab' && event.shiftKey)) {\n return;\n } else {\n event.stopPropagation();\n }\n };\n\n const popoverContentKeyDown = event => {\n // Need to stop propagation of 'Tab', 'Shift + Tab' keys out of Popover content,\n // to avoid 'Tab' key execution on Option component and closing the dropdown.\n if (event.key === 'Tab' || (event.key === 'Tab' && event.shiftKey)) {\n event.stopPropagation();\n }\n };\n\n return (\n <Popover {...popoverProps}>\n <Popover.Content\n onCloseAutoFocus={handleCloseAutoFocus}\n onInteractOutside={handleInteractOutside}\n onClick={event => event.stopPropagation()}\n onKeyDown={popoverContentKeyDown}\n placement=\"right\"\n tabIndex={-1}\n className=\"focus:!shadow-none\">\n {({ close }) => (\n <>\n <div className=\"flex w-32 flex-col space-y-2\">\n {onEdit ? (\n <>\n <Field\n className={cn('!min-h-fit', { '!pb-0': !validationError })}\n error={!!validationError}\n message={validationError?.message}>\n <Input\n invalid={!!validationError}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown(close)}\n ref={ref}\n value={name}\n />\n </Field>\n {initialColor ? (\n <>\n <h5>Colours</h5>\n <Colours\n color={color}\n onChangeColor={setColor}\n onKeyDown={preventKeyDownPropagation}\n />\n </>\n ) : null}\n <Group>\n <Button onClick={close}>{texts.select2.cancel}</Button>\n <Button appearance=\"primary\" onClick={handleSave(close)}>\n {texts.select2.save}\n </Button>\n </Group>\n </>\n ) : null}\n {onEdit && onDelete ? <hr /> : null}\n {onDelete ? (\n <button\n className=\"hover:text-grey-700 flex items-center justify-start gap-1\"\n onClick={handleDelete(close)}\n onKeyDown={preventKeyDownPropagation}>\n <Icon className=\"!h-5 !w-5\" name=\"delete-permanently\" /> {texts.select2.delete}\n </button>\n ) : null}\n </div>\n </>\n )}\n </Popover.Content>\n </Popover>\n );\n};\n\nconst Colours = props => {\n const { color, onChangeColor, onClick, onKeyDown } = props;\n const { texts } = useLocalization();\n\n return (\n <RadioGroup.Root\n aria-label={texts.select2.chooseColor}\n className=\"grid grid-cols-4 gap-2 focus:outline-none\"\n onClick={onClick}\n onKeyDown={onKeyDown}\n onValueChange={color => onChangeColor(color)}\n value={color}>\n {AVAILABLE_COLORS.map((availableColor: string) => (\n <RadioGroup.Item\n aria-label={color}\n className={cn(\n 'flex h-6 w-6 cursor-pointer items-center justify-center rounded',\n getSubtleColorShadeClasses(availableColor as Color)\n )}\n key={availableColor}\n onFocus={() => onChangeColor(availableColor)}\n value={availableColor}>\n <RadioGroup.Indicator asChild>\n <Icon name=\"tick\" className=\"!h-5 !w-5\" />\n </RadioGroup.Indicator>\n </RadioGroup.Item>\n ))}\n </RadioGroup.Root>\n );\n};\n"],"names":["EditPopover","props","color","initialColor","text","initialName","value","popoverProps","ref","React","useRef","onDelete","onEdit","searchRef","selectRef","useSelect2Context","texts","useLocalization","name","setName","useState","setColor","validationError","setValidationError","handleInputChange","event","target","undefined","handleInputKeyDown","close","stopPropagation","key","handleSave","Promise","resolve","e","reject","handleDelete","_temp","then","_temp2","_catch","error","_ref$current","preventDefault","current","focus","_temp3","handleCloseAutoFocus","_searchRef$current","_selectRef$current","handleInteractOutside","preventKeyDownPropagation","shiftKey","popoverContentKeyDown","Popover","Content","onCloseAutoFocus","onInteractOutside","onClick","onKeyDown","placement","tabIndex","className","Field","cn","message","Input","invalid","onChange","Colours","onChangeColor","Group","Button","select2","cancel","appearance","save","Icon","delete","RadioGroup","chooseColor","onValueChange","AVAILABLE_COLORS","map","availableColor","getSubtleColorShadeClasses","onFocus","asChild"],"mappings":";;;;;;;;;;;;;;MAqBaA,WAAW,GAAIC,KAAuB;EAC/C,MAAM;IAAEC,KAAK,EAAEC,YAAY;IAAEC,IAAI,EAAEC,WAAW;IAAEC,KAAK;IAAE,GAAGC;GAAc,GAAGN,KAAK;EAChF,MAAMO,GAAG,GAAGC,cAAK,CAACC,MAAM,CAAmB,IAAI,CAAC;EAChD,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,SAAS;IAAEL,GAAG,EAAEM;GAAW,GAAGC,iBAAiB,EAAE;EAC3E,MAAM;IAAEC;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGV,cAAK,CAACW,QAAQ,CAACf,WAAW,CAAC;EACnD,MAAM,CAACH,KAAK,EAAEmB,QAAQ,CAAC,GAAGZ,cAAK,CAACW,QAAQ,CAACjB,YAAY,CAAC;EACtD,MAAM,CAACmB,eAAe,EAAEC,kBAAkB,CAAC,GAAGd,cAAK,CAACW,QAAQ,EAAqB;EAEjF,MAAMI,iBAAiB,GAAGC,KAAK;IAC3BN,OAAO,CAACM,KAAK,CAACC,MAAM,CAACpB,KAAK,CAAC;IAC3BiB,kBAAkB,CAACI,SAAS,CAAC;GAChC;EAED,MAAMC,kBAAkB,GAAGC,KAAK,cAAUJ,KAAK;IAAA;MAC3CA,KAAK,CAACK,eAAe,EAAE;MAEvB,IAAIL,KAAK,CAACM,GAAG,KAAK,QAAQ,EAAE;QACxBF,KAAK,EAAE;OACV,MAAM,IAAIJ,KAAK,CAACM,GAAG,KAAK,OAAO,EAAE;QAC9BC,UAAU,CAACH,KAAK,CAAC,CAACJ,KAAK,CAAC;;MAC3B,OAAAQ,OAAA,CAAAC,OAAA;KACJ,QAAAC,CAAA;MAAA,OAAAF,OAAA,CAAAG,MAAA,CAAAD,CAAA;;;EAED,MAAME,YAAY,GAAGR,KAAK,cAAUJ,KAAK;IAAA;MACrCA,KAAK,CAACK,eAAe,EAAE;MACvBD,KAAK,EAAE;MAAC,MAAAS,KAAA;QAAA,IAEJ3B,QAAQ;UAAA,OAAAsB,OAAA,CAAAC,OAAA,CACFvB,QAAQ,CAACL,KAAK,CAAC,EAAAiC,IAAA;;;MAAA,OAAAN,OAAA,CAAAC,OAAA,CAAAI,KAAA,IAAAA,KAAA,CAAAC,IAAA,GAAAD,KAAA,CAAAC,IAAA;KAE5B,QAAAJ,CAAA;MAAA,OAAAF,OAAA,CAAAG,MAAA,CAAAD,CAAA;;;EAED,MAAMH,UAAU,GAAGH,KAAK,cAAUJ,KAAK;IAAA;;YAC/Bb,MAAM,KAAKM,IAAI,KAAKb,WAAW,IAAIH,KAAK,KAAKC,YAAY,CAAC;UAAA,MAAAqC,MAAA,GAAAC,MAAA,aACtD;YAAA,OAAAR,OAAA,CAAAC,OAAA,CACMtB,MAAM,CAACN,KAAK,EAAEY,IAAI,EAAEhB,KAAK,CAAC,EAAAqC,IAAA;cAChCV,KAAK,EAAE;;WACV,YAAQa,KAAK,EAAE;YAAA,IAAAC,YAAA;YACZlB,KAAK,CAACmB,cAAc,EAAE;YACtBnB,KAAK,CAACK,eAAe,EAAE;YACvBP,kBAAkB,CAACmB,KAAc,CAAC;YAClC,CAAAC,YAAA,GAAAnC,GAAG,CAACqC,OAAO,cAAAF,YAAA,uBAAXA,YAAA,CAAaG,KAAK,EAAE;WACvB;UAAA,IAAAN,MAAA,IAAAA,MAAA,CAAAD,IAAA,SAAAC,MAAA,CAAAD,IAAA;;UAEDV,KAAK,EAAE;;;MAAC,OAAAI,OAAA,CAAAC,OAAA,CAAAa,MAAA,IAAAA,MAAA,CAAAR,IAAA,GAAAQ,MAAA,CAAAR,IAAA;KAEf,QAAAJ,CAAA;MAAA,OAAAF,OAAA,CAAAG,MAAA,CAAAD,CAAA;;;EAED,MAAMa,oBAAoB,GAAGvB,KAAK;IAC9BA,KAAK,CAACmB,cAAc,EAAE;IACtBzB,OAAO,CAACd,WAAW,CAAC;IACpBgB,QAAQ,CAAClB,YAAY,CAAC;IACtBoB,kBAAkB,CAACI,SAAS,CAAC;IAE7B,IAAId,SAAS,aAATA,SAAS,eAATA,SAAS,CAAEgC,OAAO,EAAE;MAAA,IAAAI,kBAAA;MACpB,CAAAA,kBAAA,GAAApC,SAAS,CAACgC,OAAO,cAAAI,kBAAA,uBAAjBA,kBAAA,CAAmBH,KAAK,EAAE;KAC7B,MAAM;MAAA,IAAAI,kBAAA;MACH,CAAAA,kBAAA,GAAApC,SAAS,CAAC+B,OAAO,cAAAK,kBAAA,uBAAjBA,kBAAA,CAAmBJ,KAAK,EAAE;;GAEjC;EAED,MAAMK,qBAAqB,GAAGA;IAC1BhC,OAAO,CAACd,WAAW,CAAC;IACpBgB,QAAQ,CAAClB,YAAY,CAAC;GACzB;EAED,MAAMiD,yBAAyB,GAAG3B,KAAK;;IAEnC,IAAIA,KAAK,CAACM,GAAG,KAAK,QAAQ,IAAIN,KAAK,CAACM,GAAG,KAAK,KAAK,IAAKN,KAAK,CAACM,GAAG,KAAK,KAAK,IAAIN,KAAK,CAAC4B,QAAS,EAAE;MAC1F;KACH,MAAM;MACH5B,KAAK,CAACK,eAAe,EAAE;;GAE9B;EAED,MAAMwB,qBAAqB,GAAG7B,KAAK;;;IAG/B,IAAIA,KAAK,CAACM,GAAG,KAAK,KAAK,IAAKN,KAAK,CAACM,GAAG,KAAK,KAAK,IAAIN,KAAK,CAAC4B,QAAS,EAAE;MAChE5B,KAAK,CAACK,eAAe,EAAE;;GAE9B;EAED,oBACIrB,6BAAC8C,OAAO,oBAAKhD,YAAY,gBACrBE,6BAAC8C,OAAO,CAACC,OAAO;IACZC,gBAAgB,EAAET,oBAAoB;IACtCU,iBAAiB,EAAEP,qBAAqB;IACxCQ,OAAO,EAAElC,KAAK,IAAIA,KAAK,CAACK,eAAe,EAAE;IACzC8B,SAAS,EAAEN,qBAAqB;IAChCO,SAAS,EAAC,OAAO;IACjBC,QAAQ,EAAE,CAAC,CAAC;IACZC,SAAS,EAAC;KACT,CAAC;IAAElC;GAAO,kBACPpB,yEACIA;IAAKsD,SAAS,EAAC;KACVnD,MAAM,gBACHH,yEACIA,6BAACuD,KAAK;IACFD,SAAS,EAAEE,EAAE,CAAC,YAAY,EAAE;MAAE,OAAO,EAAE,CAAC3C;KAAiB,CAAC;IAC1DoB,KAAK,EAAE,CAAC,CAACpB,eAAe;IACxB4C,OAAO,EAAE5C,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAE4C;kBAC1BzD,6BAAC0D,KAAK;IACFC,OAAO,EAAE,CAAC,CAAC9C,eAAe;IAC1B+C,QAAQ,EAAE7C,iBAAiB;IAC3BoC,SAAS,EAAEhC,kBAAkB,CAACC,KAAK,CAAC;IACpCrB,GAAG,EAAEA,GAAG;IACRF,KAAK,EAAEY;IACT,CACE,EACPf,YAAY,gBACTM,yEACIA,mDAAgB,eAChBA,6BAAC6D,OAAO;IACJpE,KAAK,EAAEA,KAAK;IACZqE,aAAa,EAAElD,QAAQ;IACvBuC,SAAS,EAAER;IACb,CACH,GACH,IAAI,eACR3C,6BAAC+D,KAAK,qBACF/D,6BAACgE,MAAM;IAACd,OAAO,EAAE9B;KAAQb,KAAK,CAAC0D,OAAO,CAACC,MAAM,CAAU,eACvDlE,6BAACgE,MAAM;IAACG,UAAU,EAAC,SAAS;IAACjB,OAAO,EAAE3B,UAAU,CAACH,KAAK;KACjDb,KAAK,CAAC0D,OAAO,CAACG,IAAI,CACd,CACL,CACT,GACH,IAAI,EACPjE,MAAM,IAAID,QAAQ,gBAAGF,wCAAM,GAAG,IAAI,EAClCE,QAAQ,gBACLF;IACIsD,SAAS,EAAC,2DAA2D;IACrEJ,OAAO,EAAEtB,YAAY,CAACR,KAAK,CAAC;IAC5B+B,SAAS,EAAER;kBACX3C,6BAACqE,IAAI;IAACf,SAAS,EAAC,WAAW;IAAC7C,IAAI,EAAC;IAAuB,OAAEF,KAAK,CAAC0D,OAAO,CAACK,MAAM,CACzE,GACT,IAAI,CACN,CAEb,CACa,CACZ;AAElB;AAEA,MAAMT,OAAO,GAAGrE,KAAK;EACjB,MAAM;IAAEC,KAAK;IAAEqE,aAAa;IAAEZ,OAAO;IAAEC;GAAW,GAAG3D,KAAK;EAC1D,MAAM;IAAEe;GAAO,GAAGC,eAAe,EAAE;EAEnC,oBACIR,6BAACuE,IAAe;kBACAhE,KAAK,CAAC0D,OAAO,CAACO,WAAW;IACrClB,SAAS,EAAC,2CAA2C;IACrDJ,OAAO,EAAEA,OAAO;IAChBC,SAAS,EAAEA,SAAS;IACpBsB,aAAa,EAAEhF,KAAK,IAAIqE,aAAa,CAACrE,KAAK,CAAC;IAC5CI,KAAK,EAAEJ;KACNiF,gBAAgB,CAACC,GAAG,CAAEC,cAAsB,iBACzC5E,6BAACuE,IAAe;kBACA9E,KAAK;IACjB6D,SAAS,EAAEE,EAAE,CACT,iEAAiE,EACjEqB,0BAA0B,CAACD,cAAuB,CAAC,CACtD;IACDtD,GAAG,EAAEsD,cAAc;IACnBE,OAAO,EAAEA,MAAMhB,aAAa,CAACc,cAAc,CAAC;IAC5C/E,KAAK,EAAE+E;kBACP5E,6BAACuE,SAAoB;IAACQ,OAAO;kBACzB/E,6BAACqE,IAAI;IAAC5D,IAAI,EAAC,MAAM;IAAC6C,SAAS,EAAC;IAAc,CACvB,CAE9B,CAAC,CACY;AAE1B,CAAC;;;;"}
|
1
|
+
{"version":3,"file":"Edit.js","sources":["../../../../../../../../src/components/Select2/components/Edit.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport * as RadioGroup from '@radix-ui/react-radio-group';\nimport { Button } from '../../Button/Button';\nimport { Input } from '../../Input/Input';\nimport { Popover, PopoverProps } from '../../Popover/Popover';\nimport { Icon } from '../../Icon/Icon';\nimport { Select2OptionValue } from '../types';\nimport { useSelect2Context } from './Context';\nimport { Field } from '../../Field/Field';\nimport { Group } from '../../Group/Group';\nimport { useLocalization } from '../../Provider/Localization';\nimport { Color } from '../../../types';\nimport { AVAILABLE_COLORS, getSubtleColorShadeClasses } from '../../../utils/tailwind';\n\nexport type EditPopoverProps = PopoverProps & {\n color?: Color;\n text: string;\n value: Select2OptionValue;\n};\n\nexport const EditPopover = (props: EditPopoverProps) => {\n const { color: initialColor, text: initialName, value, ...popoverProps } = props;\n const ref = React.useRef<HTMLInputElement>(null);\n const { onDelete, onEdit, searchRef, ref: selectRef } = useSelect2Context();\n const { texts } = useLocalization();\n const [name, setName] = React.useState(initialName);\n const [color, setColor] = React.useState(initialColor);\n const [validationError, setValidationError] = React.useState<Error | undefined>();\n\n const handleInputChange = event => {\n setName(event.target.value);\n setValidationError(undefined);\n };\n\n const handleInputKeyDown = close => async event => {\n event.stopPropagation();\n\n if (event.key === 'Escape') {\n close();\n } else if (event.key === 'Enter') {\n handleSave(close)(event);\n }\n };\n\n const handleDelete = close => async event => {\n event.stopPropagation();\n close();\n\n if (onDelete) {\n await onDelete(value);\n }\n };\n\n const handleSave = close => async event => {\n if (onEdit && (name !== initialName || color !== initialColor)) {\n try {\n await onEdit(value, name, color);\n close();\n } catch (error) {\n event.preventDefault();\n event.stopPropagation();\n setValidationError(error as Error);\n ref.current?.focus();\n }\n } else {\n close();\n }\n };\n\n const handleCloseAutoFocus = event => {\n event.preventDefault();\n setName(initialName);\n setColor(initialColor);\n setValidationError(undefined);\n\n if (searchRef?.current) {\n searchRef.current?.focus();\n } else {\n selectRef.current?.focus();\n }\n };\n\n const handleInteractOutside = () => {\n setName(initialName);\n setColor(initialColor);\n };\n\n const preventKeyDownPropagation = event => {\n // Need to allow 'Escape', 'Tab', 'Shift + Tab' to support default focus and close behaviour of Radix Popover.\n if (event.key === 'Escape' || event.key === 'Tab' || (event.key === 'Tab' && event.shiftKey)) {\n return;\n } else {\n event.stopPropagation();\n }\n };\n\n const popoverContentKeyDown = event => {\n // Need to stop propagation of 'Tab', 'Shift + Tab' keys out of Popover content,\n // to avoid 'Tab' key execution on Option component and closing the dropdown.\n if (event.key === 'Tab' || (event.key === 'Tab' && event.shiftKey)) {\n event.stopPropagation();\n }\n };\n\n return (\n <Popover {...popoverProps}>\n <Popover.Content\n onCloseAutoFocus={handleCloseAutoFocus}\n onInteractOutside={handleInteractOutside}\n onClick={event => event.stopPropagation()}\n onKeyDown={popoverContentKeyDown}\n placement=\"right\"\n tabIndex={-1}\n className=\"focus:!shadow-none\">\n {({ close }) => (\n <>\n <div className=\"flex w-32 flex-col space-y-2\">\n {onEdit ? (\n <>\n <Field\n className={cn('!min-h-fit', { '!pb-0': !validationError })}\n invalid={!!validationError}\n message={validationError?.message}>\n <Input\n invalid={!!validationError}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown(close)}\n ref={ref}\n value={name}\n />\n </Field>\n {initialColor ? (\n <>\n <h5>Colours</h5>\n <Colours\n color={color}\n onChangeColor={setColor}\n onKeyDown={preventKeyDownPropagation}\n />\n </>\n ) : null}\n <Group>\n <Button onClick={close}>{texts.select2.cancel}</Button>\n <Button appearance=\"primary\" onClick={handleSave(close)}>\n {texts.select2.save}\n </Button>\n </Group>\n </>\n ) : null}\n {onEdit && onDelete ? <hr /> : null}\n {onDelete ? (\n <button\n className=\"hover:text-grey-700 flex items-center justify-start gap-1\"\n onClick={handleDelete(close)}\n onKeyDown={preventKeyDownPropagation}>\n <Icon className=\"!h-5 !w-5\" name=\"delete-permanently\" /> {texts.select2.delete}\n </button>\n ) : null}\n </div>\n </>\n )}\n </Popover.Content>\n </Popover>\n );\n};\n\nconst Colours = props => {\n const { color, onChangeColor, onClick, onKeyDown } = props;\n const { texts } = useLocalization();\n\n return (\n <RadioGroup.Root\n aria-label={texts.select2.chooseColor}\n className=\"grid grid-cols-4 gap-2 focus:outline-none\"\n onClick={onClick}\n onKeyDown={onKeyDown}\n onValueChange={color => onChangeColor(color)}\n value={color}>\n {AVAILABLE_COLORS.map((availableColor: string) => (\n <RadioGroup.Item\n aria-label={color}\n className={cn(\n 'flex h-6 w-6 cursor-pointer items-center justify-center rounded',\n getSubtleColorShadeClasses(availableColor as Color)\n )}\n key={availableColor}\n onFocus={() => onChangeColor(availableColor)}\n value={availableColor}>\n <RadioGroup.Indicator asChild>\n <Icon name=\"tick\" className=\"!h-5 !w-5\" />\n </RadioGroup.Indicator>\n </RadioGroup.Item>\n ))}\n </RadioGroup.Root>\n );\n};\n"],"names":["EditPopover","props","color","initialColor","text","initialName","value","popoverProps","ref","React","useRef","onDelete","onEdit","searchRef","selectRef","useSelect2Context","texts","useLocalization","name","setName","useState","setColor","validationError","setValidationError","handleInputChange","event","target","undefined","handleInputKeyDown","close","stopPropagation","key","handleSave","Promise","resolve","e","reject","handleDelete","_temp","then","_temp2","_catch","error","_ref$current","preventDefault","current","focus","_temp3","handleCloseAutoFocus","_searchRef$current","_selectRef$current","handleInteractOutside","preventKeyDownPropagation","shiftKey","popoverContentKeyDown","Popover","Content","onCloseAutoFocus","onInteractOutside","onClick","onKeyDown","placement","tabIndex","className","Field","cn","invalid","message","Input","onChange","Colours","onChangeColor","Group","Button","select2","cancel","appearance","save","Icon","delete","RadioGroup","chooseColor","onValueChange","AVAILABLE_COLORS","map","availableColor","getSubtleColorShadeClasses","onFocus","asChild"],"mappings":";;;;;;;;;;;;;;MAqBaA,WAAW,GAAIC,KAAuB;EAC/C,MAAM;IAAEC,KAAK,EAAEC,YAAY;IAAEC,IAAI,EAAEC,WAAW;IAAEC,KAAK;IAAE,GAAGC;GAAc,GAAGN,KAAK;EAChF,MAAMO,GAAG,GAAGC,cAAK,CAACC,MAAM,CAAmB,IAAI,CAAC;EAChD,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,SAAS;IAAEL,GAAG,EAAEM;GAAW,GAAGC,iBAAiB,EAAE;EAC3E,MAAM;IAAEC;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGV,cAAK,CAACW,QAAQ,CAACf,WAAW,CAAC;EACnD,MAAM,CAACH,KAAK,EAAEmB,QAAQ,CAAC,GAAGZ,cAAK,CAACW,QAAQ,CAACjB,YAAY,CAAC;EACtD,MAAM,CAACmB,eAAe,EAAEC,kBAAkB,CAAC,GAAGd,cAAK,CAACW,QAAQ,EAAqB;EAEjF,MAAMI,iBAAiB,GAAGC,KAAK;IAC3BN,OAAO,CAACM,KAAK,CAACC,MAAM,CAACpB,KAAK,CAAC;IAC3BiB,kBAAkB,CAACI,SAAS,CAAC;GAChC;EAED,MAAMC,kBAAkB,GAAGC,KAAK,cAAUJ,KAAK;IAAA;MAC3CA,KAAK,CAACK,eAAe,EAAE;MAEvB,IAAIL,KAAK,CAACM,GAAG,KAAK,QAAQ,EAAE;QACxBF,KAAK,EAAE;OACV,MAAM,IAAIJ,KAAK,CAACM,GAAG,KAAK,OAAO,EAAE;QAC9BC,UAAU,CAACH,KAAK,CAAC,CAACJ,KAAK,CAAC;;MAC3B,OAAAQ,OAAA,CAAAC,OAAA;KACJ,QAAAC,CAAA;MAAA,OAAAF,OAAA,CAAAG,MAAA,CAAAD,CAAA;;;EAED,MAAME,YAAY,GAAGR,KAAK,cAAUJ,KAAK;IAAA;MACrCA,KAAK,CAACK,eAAe,EAAE;MACvBD,KAAK,EAAE;MAAC,MAAAS,KAAA;QAAA,IAEJ3B,QAAQ;UAAA,OAAAsB,OAAA,CAAAC,OAAA,CACFvB,QAAQ,CAACL,KAAK,CAAC,EAAAiC,IAAA;;;MAAA,OAAAN,OAAA,CAAAC,OAAA,CAAAI,KAAA,IAAAA,KAAA,CAAAC,IAAA,GAAAD,KAAA,CAAAC,IAAA;KAE5B,QAAAJ,CAAA;MAAA,OAAAF,OAAA,CAAAG,MAAA,CAAAD,CAAA;;;EAED,MAAMH,UAAU,GAAGH,KAAK,cAAUJ,KAAK;IAAA;;YAC/Bb,MAAM,KAAKM,IAAI,KAAKb,WAAW,IAAIH,KAAK,KAAKC,YAAY,CAAC;UAAA,MAAAqC,MAAA,GAAAC,MAAA,aACtD;YAAA,OAAAR,OAAA,CAAAC,OAAA,CACMtB,MAAM,CAACN,KAAK,EAAEY,IAAI,EAAEhB,KAAK,CAAC,EAAAqC,IAAA;cAChCV,KAAK,EAAE;;WACV,YAAQa,KAAK,EAAE;YAAA,IAAAC,YAAA;YACZlB,KAAK,CAACmB,cAAc,EAAE;YACtBnB,KAAK,CAACK,eAAe,EAAE;YACvBP,kBAAkB,CAACmB,KAAc,CAAC;YAClC,CAAAC,YAAA,GAAAnC,GAAG,CAACqC,OAAO,cAAAF,YAAA,uBAAXA,YAAA,CAAaG,KAAK,EAAE;WACvB;UAAA,IAAAN,MAAA,IAAAA,MAAA,CAAAD,IAAA,SAAAC,MAAA,CAAAD,IAAA;;UAEDV,KAAK,EAAE;;;MAAC,OAAAI,OAAA,CAAAC,OAAA,CAAAa,MAAA,IAAAA,MAAA,CAAAR,IAAA,GAAAQ,MAAA,CAAAR,IAAA;KAEf,QAAAJ,CAAA;MAAA,OAAAF,OAAA,CAAAG,MAAA,CAAAD,CAAA;;;EAED,MAAMa,oBAAoB,GAAGvB,KAAK;IAC9BA,KAAK,CAACmB,cAAc,EAAE;IACtBzB,OAAO,CAACd,WAAW,CAAC;IACpBgB,QAAQ,CAAClB,YAAY,CAAC;IACtBoB,kBAAkB,CAACI,SAAS,CAAC;IAE7B,IAAId,SAAS,aAATA,SAAS,eAATA,SAAS,CAAEgC,OAAO,EAAE;MAAA,IAAAI,kBAAA;MACpB,CAAAA,kBAAA,GAAApC,SAAS,CAACgC,OAAO,cAAAI,kBAAA,uBAAjBA,kBAAA,CAAmBH,KAAK,EAAE;KAC7B,MAAM;MAAA,IAAAI,kBAAA;MACH,CAAAA,kBAAA,GAAApC,SAAS,CAAC+B,OAAO,cAAAK,kBAAA,uBAAjBA,kBAAA,CAAmBJ,KAAK,EAAE;;GAEjC;EAED,MAAMK,qBAAqB,GAAGA;IAC1BhC,OAAO,CAACd,WAAW,CAAC;IACpBgB,QAAQ,CAAClB,YAAY,CAAC;GACzB;EAED,MAAMiD,yBAAyB,GAAG3B,KAAK;;IAEnC,IAAIA,KAAK,CAACM,GAAG,KAAK,QAAQ,IAAIN,KAAK,CAACM,GAAG,KAAK,KAAK,IAAKN,KAAK,CAACM,GAAG,KAAK,KAAK,IAAIN,KAAK,CAAC4B,QAAS,EAAE;MAC1F;KACH,MAAM;MACH5B,KAAK,CAACK,eAAe,EAAE;;GAE9B;EAED,MAAMwB,qBAAqB,GAAG7B,KAAK;;;IAG/B,IAAIA,KAAK,CAACM,GAAG,KAAK,KAAK,IAAKN,KAAK,CAACM,GAAG,KAAK,KAAK,IAAIN,KAAK,CAAC4B,QAAS,EAAE;MAChE5B,KAAK,CAACK,eAAe,EAAE;;GAE9B;EAED,oBACIrB,6BAAC8C,OAAO,oBAAKhD,YAAY,gBACrBE,6BAAC8C,OAAO,CAACC,OAAO;IACZC,gBAAgB,EAAET,oBAAoB;IACtCU,iBAAiB,EAAEP,qBAAqB;IACxCQ,OAAO,EAAElC,KAAK,IAAIA,KAAK,CAACK,eAAe,EAAE;IACzC8B,SAAS,EAAEN,qBAAqB;IAChCO,SAAS,EAAC,OAAO;IACjBC,QAAQ,EAAE,CAAC,CAAC;IACZC,SAAS,EAAC;KACT,CAAC;IAAElC;GAAO,kBACPpB,yEACIA;IAAKsD,SAAS,EAAC;KACVnD,MAAM,gBACHH,yEACIA,6BAACuD,KAAK;IACFD,SAAS,EAAEE,EAAE,CAAC,YAAY,EAAE;MAAE,OAAO,EAAE,CAAC3C;KAAiB,CAAC;IAC1D4C,OAAO,EAAE,CAAC,CAAC5C,eAAe;IAC1B6C,OAAO,EAAE7C,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAE6C;kBAC1B1D,6BAAC2D,KAAK;IACFF,OAAO,EAAE,CAAC,CAAC5C,eAAe;IAC1B+C,QAAQ,EAAE7C,iBAAiB;IAC3BoC,SAAS,EAAEhC,kBAAkB,CAACC,KAAK,CAAC;IACpCrB,GAAG,EAAEA,GAAG;IACRF,KAAK,EAAEY;IACT,CACE,EACPf,YAAY,gBACTM,yEACIA,mDAAgB,eAChBA,6BAAC6D,OAAO;IACJpE,KAAK,EAAEA,KAAK;IACZqE,aAAa,EAAElD,QAAQ;IACvBuC,SAAS,EAAER;IACb,CACH,GACH,IAAI,eACR3C,6BAAC+D,KAAK,qBACF/D,6BAACgE,MAAM;IAACd,OAAO,EAAE9B;KAAQb,KAAK,CAAC0D,OAAO,CAACC,MAAM,CAAU,eACvDlE,6BAACgE,MAAM;IAACG,UAAU,EAAC,SAAS;IAACjB,OAAO,EAAE3B,UAAU,CAACH,KAAK;KACjDb,KAAK,CAAC0D,OAAO,CAACG,IAAI,CACd,CACL,CACT,GACH,IAAI,EACPjE,MAAM,IAAID,QAAQ,gBAAGF,wCAAM,GAAG,IAAI,EAClCE,QAAQ,gBACLF;IACIsD,SAAS,EAAC,2DAA2D;IACrEJ,OAAO,EAAEtB,YAAY,CAACR,KAAK,CAAC;IAC5B+B,SAAS,EAAER;kBACX3C,6BAACqE,IAAI;IAACf,SAAS,EAAC,WAAW;IAAC7C,IAAI,EAAC;IAAuB,OAAEF,KAAK,CAAC0D,OAAO,CAACK,MAAM,CACzE,GACT,IAAI,CACN,CAEb,CACa,CACZ;AAElB;AAEA,MAAMT,OAAO,GAAGrE,KAAK;EACjB,MAAM;IAAEC,KAAK;IAAEqE,aAAa;IAAEZ,OAAO;IAAEC;GAAW,GAAG3D,KAAK;EAC1D,MAAM;IAAEe;GAAO,GAAGC,eAAe,EAAE;EAEnC,oBACIR,6BAACuE,IAAe;kBACAhE,KAAK,CAAC0D,OAAO,CAACO,WAAW;IACrClB,SAAS,EAAC,2CAA2C;IACrDJ,OAAO,EAAEA,OAAO;IAChBC,SAAS,EAAEA,SAAS;IACpBsB,aAAa,EAAEhF,KAAK,IAAIqE,aAAa,CAACrE,KAAK,CAAC;IAC5CI,KAAK,EAAEJ;KACNiF,gBAAgB,CAACC,GAAG,CAAEC,cAAsB,iBACzC5E,6BAACuE,IAAe;kBACA9E,KAAK;IACjB6D,SAAS,EAAEE,EAAE,CACT,iEAAiE,EACjEqB,0BAA0B,CAACD,cAAuB,CAAC,CACtD;IACDtD,GAAG,EAAEsD,cAAc;IACnBE,OAAO,EAAEA,MAAMhB,aAAa,CAACc,cAAc,CAAC;IAC5C/E,KAAK,EAAE+E;kBACP5E,6BAACuE,SAAoB;IAACQ,OAAO;kBACzB/E,6BAACqE,IAAI;IAAC5D,IAAI,EAAC,MAAM;IAAC6C,SAAS,EAAC;IAAc,CACvB,CAE9B,CAAC,CACY;AAE1B,CAAC;;;;"}
|
@@ -46,7 +46,7 @@ const Search = /*#__PURE__*/React__default.forwardRef(function ListboxSearch(pro
|
|
46
46
|
className: cn('mx-1.5 mb-1.5 !min-h-fit ', {
|
47
47
|
'!pb-0': !validationError
|
48
48
|
}),
|
49
|
-
|
49
|
+
invalid: !!validationError,
|
50
50
|
message: validationError === null || validationError === void 0 ? void 0 : validationError.message
|
51
51
|
}, /*#__PURE__*/React__default.createElement(Input, Object.assign({}, otherProps, {
|
52
52
|
"aria-hidden": true,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Search.js","sources":["../../../../../../../../src/components/Select2/components/Search.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { createCustomKeyboardEvent } from '../../../utils/input';\nimport { Input, InputProps } from '../../Input/Input';\nimport { useSelect2Context } from './Context';\nimport { Field } from '../../Field/Field';\nimport { isAriaSelectionKey } from '../../../utils/aria';\n\nexport type Select2SearchProps = InputProps & {};\n\nexport const Search = React.forwardRef<HTMLInputElement, Select2SearchProps>(function ListboxSearch(props, ref) {\n const { ...otherProps } = props;\n const { listboxRef, searchQuery, setSearchQuery, setValidationError, validationError, setOpen } = useSelect2Context();\n\n const handleChange = event => {\n if (validationError) {\n setValidationError(undefined);\n }\n\n setSearchQuery(event.target.value);\n };\n\n const handleKeyDown = event => {\n // space is an aria selection key, so we have to remove it to allow spaces\n if (event.key === ' ') {\n return;\n }\n\n // Select2 should close dropdown and receive focus, when user press Tab while searching (UX requirement to support better keyboard navigation)\n if (event.key === 'Tab') {\n setOpen(false);\n return;\n }\n\n if (isAriaSelectionKey(event) || event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n // forward navigation events onto the underlying collection - we want arrow keys to work from inside the filter input\n listboxRef?.current?.dispatchEvent(createCustomKeyboardEvent(event as React.KeyboardEvent<HTMLInputElement>));\n return;\n }\n };\n\n return (\n <Field\n className={cn('mx-1.5 mb-1.5 !min-h-fit ', { '!pb-0': !validationError })}\n
|
1
|
+
{"version":3,"file":"Search.js","sources":["../../../../../../../../src/components/Select2/components/Search.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { createCustomKeyboardEvent } from '../../../utils/input';\nimport { Input, InputProps } from '../../Input/Input';\nimport { useSelect2Context } from './Context';\nimport { Field } from '../../Field/Field';\nimport { isAriaSelectionKey } from '../../../utils/aria';\n\nexport type Select2SearchProps = InputProps & {};\n\nexport const Search = React.forwardRef<HTMLInputElement, Select2SearchProps>(function ListboxSearch(props, ref) {\n const { ...otherProps } = props;\n const { listboxRef, searchQuery, setSearchQuery, setValidationError, validationError, setOpen } = useSelect2Context();\n\n const handleChange = event => {\n if (validationError) {\n setValidationError(undefined);\n }\n\n setSearchQuery(event.target.value);\n };\n\n const handleKeyDown = event => {\n // space is an aria selection key, so we have to remove it to allow spaces\n if (event.key === ' ') {\n return;\n }\n\n // Select2 should close dropdown and receive focus, when user press Tab while searching (UX requirement to support better keyboard navigation)\n if (event.key === 'Tab') {\n setOpen(false);\n return;\n }\n\n if (isAriaSelectionKey(event) || event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n // forward navigation events onto the underlying collection - we want arrow keys to work from inside the filter input\n listboxRef?.current?.dispatchEvent(createCustomKeyboardEvent(event as React.KeyboardEvent<HTMLInputElement>));\n return;\n }\n };\n\n return (\n <Field\n className={cn('mx-1.5 mb-1.5 !min-h-fit ', { '!pb-0': !validationError })}\n invalid={!!validationError}\n message={validationError?.message}>\n <Input\n {...otherProps}\n aria-hidden\n autoFocus\n invalid={!!validationError}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n ref={ref}\n value={searchQuery}\n />\n </Field>\n );\n});\n"],"names":["Search","React","forwardRef","ListboxSearch","props","ref","otherProps","listboxRef","searchQuery","setSearchQuery","setValidationError","validationError","setOpen","useSelect2Context","handleChange","event","undefined","target","value","handleKeyDown","key","isAriaSelectionKey","_listboxRef$current","preventDefault","current","dispatchEvent","createCustomKeyboardEvent","Field","className","cn","invalid","message","Input","autoFocus","onChange","onKeyDown"],"mappings":";;;;;;;;MAUaA,MAAM,gBAAGC,cAAK,CAACC,UAAU,CAAuC,SAASC,aAAaA,CAACC,KAAK,EAAEC,GAAG;EAC1G,MAAM;IAAE,GAAGC;GAAY,GAAGF,KAAK;EAC/B,MAAM;IAAEG,UAAU;IAAEC,WAAW;IAAEC,cAAc;IAAEC,kBAAkB;IAAEC,eAAe;IAAEC;GAAS,GAAGC,iBAAiB,EAAE;EAErH,MAAMC,YAAY,GAAGC,KAAK;IACtB,IAAIJ,eAAe,EAAE;MACjBD,kBAAkB,CAACM,SAAS,CAAC;;IAGjCP,cAAc,CAACM,KAAK,CAACE,MAAM,CAACC,KAAK,CAAC;GACrC;EAED,MAAMC,aAAa,GAAGJ,KAAK;;IAEvB,IAAIA,KAAK,CAACK,GAAG,KAAK,GAAG,EAAE;MACnB;;;IAIJ,IAAIL,KAAK,CAACK,GAAG,KAAK,KAAK,EAAE;MACrBR,OAAO,CAAC,KAAK,CAAC;MACd;;IAGJ,IAAIS,kBAAkB,CAACN,KAAK,CAAC,IAAIA,KAAK,CAACK,GAAG,KAAK,WAAW,IAAIL,KAAK,CAACK,GAAG,KAAK,SAAS,EAAE;MAAA,IAAAE,mBAAA;MACnFP,KAAK,CAACQ,cAAc,EAAE;;MAEtBhB,UAAU,aAAVA,UAAU,wBAAAe,mBAAA,GAAVf,UAAU,CAAEiB,OAAO,cAAAF,mBAAA,uBAAnBA,mBAAA,CAAqBG,aAAa,CAACC,yBAAyB,CAACX,KAA8C,CAAC,CAAC;MAC7G;;GAEP;EAED,oBACId,6BAAC0B,KAAK;IACFC,SAAS,EAAEC,EAAE,CAAC,2BAA2B,EAAE;MAAE,OAAO,EAAE,CAAClB;KAAiB,CAAC;IACzEmB,OAAO,EAAE,CAAC,CAACnB,eAAe;IAC1BoB,OAAO,EAAEpB,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAEoB;kBAC1B9B,6BAAC+B,KAAK,oBACE1B,UAAU;;IAEd2B,SAAS;IACTH,OAAO,EAAE,CAAC,CAACnB,eAAe;IAC1BuB,QAAQ,EAAEpB,YAAY;IACtBqB,SAAS,EAAEhB,aAAa;IACxBd,GAAG,EAAEA,GAAG;IACRa,KAAK,EAAEV;KACT,CACE;AAEhB,CAAC;;;;"}
|
@@ -5,7 +5,6 @@ import { useLocalization } from '../../../../Provider/Localization.js';
|
|
5
5
|
import { Menu as Menu$1 } from '../../../../Menu/Menu.js';
|
6
6
|
import { _finallyRethrows, _catch } from '../../../../../../../../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js';
|
7
7
|
import { GotoPopover } from './Goto.js';
|
8
|
-
import { FONT_SIZE } from '../../toolbar/FontSize.js';
|
9
8
|
import { SORT_DIRECTION } from './Header.js';
|
10
9
|
import { isInternalColumn } from '../../../util/columns.js';
|
11
10
|
|
@@ -44,7 +43,6 @@ function Menu(props) {
|
|
44
43
|
} = useLocalization();
|
45
44
|
const [popover, setPopover] = React__default.useState(undefined);
|
46
45
|
const [sortDirectionState, setSortDirectionState] = React__default.useState(sortDirection);
|
47
|
-
const isFontSizeLarge = tableMeta.fontSize.size === FONT_SIZE.large;
|
48
46
|
const handleSortMenuRadioGroupChange = newSortDirection => {
|
49
47
|
setSortDirectionState(newSortDirection);
|
50
48
|
handleSortToggle(newSortDirection);
|
@@ -87,10 +85,7 @@ function Menu(props) {
|
|
87
85
|
}
|
88
86
|
}
|
89
87
|
const className = cn('-my-0.5 -mr-1 -ml-0.5 !h-6 !min-h-[theme(spacing.6)] flex-shrink-0 justify-end !w-0 !min-w-0 !overflow-hidden', 'aria-expanded:!min-w-[theme(spacing.6)] aria-expanded:!w-6 aria-expanded:!overflow-auto', 'focus:!min-w-[theme(spacing.6)] focus:!w-6 focus:!overflow-auto', 'group-hover/column:!min-w-[theme(spacing.6)] group-hover/column:!w-6 group-hover/column:!overflow-auto', {
|
90
|
-
'!w-6 !min-w-[theme(spacing.6)] !overflow-auto': !!popoverElement
|
91
|
-
// Icon inside button uses em values therefore text-sm is required to prevent icon from overflowing
|
92
|
-
// button's boundaries
|
93
|
-
'!text-sm': isFontSizeLarge
|
88
|
+
'!w-6 !min-w-[theme(spacing.6)] !overflow-auto': !!popoverElement
|
94
89
|
}, props.className);
|
95
90
|
const memoedMenuItems = React__default.useMemo(() => {
|
96
91
|
const menuItems = [];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Menu.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/header/Menu.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Header as RTHeader, Table as RTable, TableMeta } from '@tanstack/react-table';\nimport { IconButton } from '../../../../IconButton/IconButton';\nimport { Menu as MenuPrimitive } from '../../../../Menu/Menu';\nimport { isInternalColumn } from '../../../util/columns';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { Table3ColumnHeaderMenu, TableStrategy } from '../../../types';\nimport { GotoPopover } from './Goto';\nimport { HeaderSortDirection, SORT_DIRECTION, SortToggleHandler } from './Header';\nimport { RadioGroupItemValue } from '../../../../RadioGroup/RadioGroup';\nimport { FONT_SIZE } from '../../toolbar/FontSize';\n\nexport function isGotoAvailable<TType = unknown>(table: RTable<TType>, header: RTHeader<TType, unknown>) {\n if (isInternalColumn(header.id)) {\n return false;\n }\n\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n return !!(tableMeta.rowGoto.isEnabled && header.column.getCanSort() && header.column.getIsSorted());\n}\n\nexport function isMenuAvailable<TType = unknown>(table: RTable<TType>, header: RTHeader<TType, unknown>): boolean {\n if (isInternalColumn(header.id)) {\n return false;\n }\n\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n return (\n !!header.column.columnDef.meta?.menu ||\n !!tableMeta.columnFreezing.isEnabled ||\n (!!table.options.enableHiding && !!header.column.getCanHide()) ||\n isGotoAvailable(table, header)\n );\n}\n\nexport type MenuProps<TType = unknown> = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n canFreeze: boolean;\n canHide: boolean;\n canSort: boolean;\n index: number;\n menu?: Table3ColumnHeaderMenu;\n onGoto?: (query: string) => Promise<number>;\n onHide: (event: unknown) => void;\n onSortToggle: SortToggleHandler;\n scrollToIndex: TableStrategy['scrollToIndex'];\n sortDirection: HeaderSortDirection;\n table: RTable<TType>;\n};\n\nexport function Menu<TType = unknown>(props: MenuProps<TType>) {\n const {\n canFreeze,\n canHide,\n canSort,\n index,\n menu,\n onGoto: handleGoto,\n onHide: handleHide,\n onSortToggle: handleSortToggle,\n scrollToIndex,\n sortDirection,\n table,\n } = props;\n const tableMeta = table.options.meta as TableMeta<TType>;\n const { texts } = useLocalization();\n const [popover, setPopover] = React.useState<string | undefined>(undefined);\n const [sortDirectionState, setSortDirectionState] = React.useState<HeaderSortDirection>(sortDirection);\n\n const isFontSizeLarge = tableMeta.fontSize.size === FONT_SIZE.large;\n\n const handleSortMenuRadioGroupChange = (newSortDirection: RadioGroupItemValue) => {\n setSortDirectionState(newSortDirection as HeaderSortDirection);\n handleSortToggle(newSortDirection as HeaderSortDirection);\n };\n\n let popoverElement;\n\n if (popover) {\n const handleClosePopover = () => setPopover(undefined);\n\n switch (popover) {\n case 'goto': {\n if (handleGoto) {\n const goto = async (query: string) => {\n try {\n const index = await handleGoto(query);\n tableMeta.currentRow.setCurrentRowIndex(index);\n scrollToIndex(index + 2, { align: 'center' });\n } catch {\n //\n } finally {\n handleClosePopover();\n }\n };\n popoverElement = props => <GotoPopover {...props} open onChange={handleClosePopover} onGoto={goto} />;\n }\n }\n }\n }\n\n const className = cn(\n '-my-0.5 -mr-1 -ml-0.5 !h-6 !min-h-[theme(spacing.6)] flex-shrink-0 justify-end !w-0 !min-w-0 !overflow-hidden',\n 'aria-expanded:!min-w-[theme(spacing.6)] aria-expanded:!w-6 aria-expanded:!overflow-auto',\n 'focus:!min-w-[theme(spacing.6)] focus:!w-6 focus:!overflow-auto',\n 'group-hover/column:!min-w-[theme(spacing.6)] group-hover/column:!w-6 group-hover/column:!overflow-auto',\n {\n '!w-6 !min-w-[theme(spacing.6)] !overflow-auto': !!popoverElement,\n // Icon inside button uses em values therefore text-sm is required to prevent icon from overflowing\n // button's boundaries\n '!text-sm': isFontSizeLarge,\n },\n props.className\n );\n\n const memoedMenuItems = React.useMemo(() => {\n const menuItems: JSX.Element[] = [];\n\n if (canHide) {\n // we do this in the next tick, otherwise the menu closes and react throws a \"state update on unmounted component\" error\n const handleClick = event => setTimeout(() => handleHide(event), 1);\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"eye-off\" onClick={handleClick}>\n {texts.table3.columns.menu.hideColumn}\n </MenuPrimitive.Item>\n );\n }\n\n // We rely on canSort value instead of onSort function's value because some columns might have sorting disabled,\n // so even though onSort is truthy, we don't want to show sorting menu.\n if (canSort) {\n menuItems.push(\n <MenuPrimitive.Item\n icon=\"sort-by\"\n subMenu={() => (\n <MenuPrimitive.SubMenu>\n <MenuPrimitive.RadioGroup onChange={handleSortMenuRadioGroupChange} value={sortDirectionState}>\n <MenuPrimitive.RadioGroup.Item value={SORT_DIRECTION.ASC}>\n {texts.table3.columns.menu.sortingOrder.ascending}\n </MenuPrimitive.RadioGroup.Item>\n <MenuPrimitive.RadioGroup.Item value={SORT_DIRECTION.DESC}>\n {texts.table3.columns.menu.sortingOrder.descending}\n </MenuPrimitive.RadioGroup.Item>\n <MenuPrimitive.RadioGroup.Item value={false}>\n {texts.table3.columns.menu.sortingOrder.unsorted}\n </MenuPrimitive.RadioGroup.Item>\n </MenuPrimitive.RadioGroup>\n </MenuPrimitive.SubMenu>\n )}>\n {texts.table3.columns.menu.sorting}\n </MenuPrimitive.Item>\n );\n }\n\n if (handleGoto) {\n menuItems.push(\n <MenuPrimitive.Item icon=\"move\" onClick={() => setPopover('goto')} shortcut=\"g\">\n {texts.table3.columns.menu.gotoRow}...\n </MenuPrimitive.Item>\n );\n }\n\n if (canFreeze) {\n const frozenIndex = index - tableMeta.columnFreezing.frozenInternalColumnCount;\n const handleClick = () => tableMeta.columnFreezing.setFrozenColumnIndex(frozenIndex);\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"column-freeze\" onClick={handleClick}>\n {frozenIndex === 0\n ? texts.table3.columns.menu.freezeFirstColumn\n : texts.table3.columns.menu.freezeUptoColumn.replace('[TOTAL]', String(frozenIndex + 1))}\n </MenuPrimitive.Item>\n );\n\n if (tableMeta.columnFreezing.frozenColumnIndex !== undefined) {\n const handleClick = () => {\n tableMeta.columnFreezing.setFrozenColumnIndex(undefined);\n };\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"column-unfreeze\" onClick={handleClick}>\n {texts.table3.columns.menu.unfreezeColumns}\n </MenuPrimitive.Item>\n );\n }\n }\n\n if (menu) {\n const customMenu = menu({ trigger: undefined });\n const customItems = React.Children.toArray(customMenu.props.children.props.children) as JSX.Element[];\n\n if (customItems.length) {\n if (menuItems.length) {\n menuItems.push(<MenuPrimitive.Separator />);\n }\n\n menuItems.push(...customItems);\n }\n }\n\n return menuItems.map((item, key) => React.cloneElement(item, { key }));\n }, [\n menu,\n index,\n canFreeze,\n canHide,\n canSort,\n handleGoto,\n handleSortToggle,\n sortDirection,\n tableMeta.columnFreezing.frozenColumnIndex,\n ]);\n\n return (\n <IconButton\n className={className}\n icon=\"more\"\n menu={\n popoverElement\n ? undefined\n : menuProps => (\n <MenuPrimitive {...menuProps}>\n <MenuPrimitive.Content>{memoedMenuItems}</MenuPrimitive.Content>\n </MenuPrimitive>\n )\n }\n popover={popoverElement}\n onClickCapture={event => event.preventDefault()}\n />\n );\n}\n"],"names":["isGotoAvailable","table","header","isInternalColumn","id","tableMeta","options","meta","rowGoto","isEnabled","column","getCanSort","getIsSorted","isMenuAvailable","_header$column$column","columnDef","menu","columnFreezing","enableHiding","getCanHide","Menu","props","canFreeze","canHide","canSort","index","onGoto","handleGoto","onHide","handleHide","onSortToggle","handleSortToggle","scrollToIndex","sortDirection","texts","useLocalization","popover","setPopover","React","useState","undefined","sortDirectionState","setSortDirectionState","isFontSizeLarge","fontSize","size","FONT_SIZE","large","handleSortMenuRadioGroupChange","newSortDirection","popoverElement","handleClosePopover","goto","query","Promise","resolve","then","currentRow","setCurrentRowIndex","align","_wasThrown","_result","_temp","e","reject","GotoPopover","open","onChange","className","cn","memoedMenuItems","useMemo","menuItems","handleClick","event","setTimeout","push","MenuPrimitive","Item","icon","onClick","table3","columns","hideColumn","subMenu","SubMenu","RadioGroup","value","SORT_DIRECTION","ASC","sortingOrder","ascending","DESC","descending","unsorted","sorting","shortcut","gotoRow","frozenIndex","frozenInternalColumnCount","setFrozenColumnIndex","freezeFirstColumn","freezeUptoColumn","replace","String","frozenColumnIndex","unfreezeColumns","customMenu","trigger","customItems","Children","toArray","children","length","Separator","map","item","key","cloneElement","IconButton","menuProps","Content","onClickCapture","preventDefault"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Menu.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/header/Menu.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Header as RTHeader, Table as RTable, TableMeta } from '@tanstack/react-table';\nimport { IconButton } from '../../../../IconButton/IconButton';\nimport { Menu as MenuPrimitive } from '../../../../Menu/Menu';\nimport { isInternalColumn } from '../../../util/columns';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { Table3ColumnHeaderMenu, TableStrategy } from '../../../types';\nimport { GotoPopover } from './Goto';\nimport { HeaderSortDirection, SORT_DIRECTION, SortToggleHandler } from './Header';\nimport { RadioGroupItemValue } from '../../../../RadioGroup/RadioGroup';\n\nexport function isGotoAvailable<TType = unknown>(table: RTable<TType>, header: RTHeader<TType, unknown>) {\n if (isInternalColumn(header.id)) {\n return false;\n }\n\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n return !!(tableMeta.rowGoto.isEnabled && header.column.getCanSort() && header.column.getIsSorted());\n}\n\nexport function isMenuAvailable<TType = unknown>(table: RTable<TType>, header: RTHeader<TType, unknown>): boolean {\n if (isInternalColumn(header.id)) {\n return false;\n }\n\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n return (\n !!header.column.columnDef.meta?.menu ||\n !!tableMeta.columnFreezing.isEnabled ||\n (!!table.options.enableHiding && !!header.column.getCanHide()) ||\n isGotoAvailable(table, header)\n );\n}\n\nexport type MenuProps<TType = unknown> = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n canFreeze: boolean;\n canHide: boolean;\n canSort: boolean;\n index: number;\n menu?: Table3ColumnHeaderMenu;\n onGoto?: (query: string) => Promise<number>;\n onHide: (event: unknown) => void;\n onSortToggle: SortToggleHandler;\n scrollToIndex: TableStrategy['scrollToIndex'];\n sortDirection: HeaderSortDirection;\n table: RTable<TType>;\n};\n\nexport function Menu<TType = unknown>(props: MenuProps<TType>) {\n const {\n canFreeze,\n canHide,\n canSort,\n index,\n menu,\n onGoto: handleGoto,\n onHide: handleHide,\n onSortToggle: handleSortToggle,\n scrollToIndex,\n sortDirection,\n table,\n } = props;\n const tableMeta = table.options.meta as TableMeta<TType>;\n const { texts } = useLocalization();\n const [popover, setPopover] = React.useState<string | undefined>(undefined);\n const [sortDirectionState, setSortDirectionState] = React.useState<HeaderSortDirection>(sortDirection);\n\n const handleSortMenuRadioGroupChange = (newSortDirection: RadioGroupItemValue) => {\n setSortDirectionState(newSortDirection as HeaderSortDirection);\n handleSortToggle(newSortDirection as HeaderSortDirection);\n };\n\n let popoverElement;\n\n if (popover) {\n const handleClosePopover = () => setPopover(undefined);\n\n switch (popover) {\n case 'goto': {\n if (handleGoto) {\n const goto = async (query: string) => {\n try {\n const index = await handleGoto(query);\n tableMeta.currentRow.setCurrentRowIndex(index);\n scrollToIndex(index + 2, { align: 'center' });\n } catch {\n //\n } finally {\n handleClosePopover();\n }\n };\n popoverElement = props => <GotoPopover {...props} open onChange={handleClosePopover} onGoto={goto} />;\n }\n }\n }\n }\n\n const className = cn(\n '-my-0.5 -mr-1 -ml-0.5 !h-6 !min-h-[theme(spacing.6)] flex-shrink-0 justify-end !w-0 !min-w-0 !overflow-hidden',\n 'aria-expanded:!min-w-[theme(spacing.6)] aria-expanded:!w-6 aria-expanded:!overflow-auto',\n 'focus:!min-w-[theme(spacing.6)] focus:!w-6 focus:!overflow-auto',\n 'group-hover/column:!min-w-[theme(spacing.6)] group-hover/column:!w-6 group-hover/column:!overflow-auto',\n {\n '!w-6 !min-w-[theme(spacing.6)] !overflow-auto': !!popoverElement,\n },\n props.className\n );\n\n const memoedMenuItems = React.useMemo(() => {\n const menuItems: JSX.Element[] = [];\n\n if (canHide) {\n // we do this in the next tick, otherwise the menu closes and react throws a \"state update on unmounted component\" error\n const handleClick = event => setTimeout(() => handleHide(event), 1);\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"eye-off\" onClick={handleClick}>\n {texts.table3.columns.menu.hideColumn}\n </MenuPrimitive.Item>\n );\n }\n\n // We rely on canSort value instead of onSort function's value because some columns might have sorting disabled,\n // so even though onSort is truthy, we don't want to show sorting menu.\n if (canSort) {\n menuItems.push(\n <MenuPrimitive.Item\n icon=\"sort-by\"\n subMenu={() => (\n <MenuPrimitive.SubMenu>\n <MenuPrimitive.RadioGroup onChange={handleSortMenuRadioGroupChange} value={sortDirectionState}>\n <MenuPrimitive.RadioGroup.Item value={SORT_DIRECTION.ASC}>\n {texts.table3.columns.menu.sortingOrder.ascending}\n </MenuPrimitive.RadioGroup.Item>\n <MenuPrimitive.RadioGroup.Item value={SORT_DIRECTION.DESC}>\n {texts.table3.columns.menu.sortingOrder.descending}\n </MenuPrimitive.RadioGroup.Item>\n <MenuPrimitive.RadioGroup.Item value={false}>\n {texts.table3.columns.menu.sortingOrder.unsorted}\n </MenuPrimitive.RadioGroup.Item>\n </MenuPrimitive.RadioGroup>\n </MenuPrimitive.SubMenu>\n )}>\n {texts.table3.columns.menu.sorting}\n </MenuPrimitive.Item>\n );\n }\n\n if (handleGoto) {\n menuItems.push(\n <MenuPrimitive.Item icon=\"move\" onClick={() => setPopover('goto')} shortcut=\"g\">\n {texts.table3.columns.menu.gotoRow}...\n </MenuPrimitive.Item>\n );\n }\n\n if (canFreeze) {\n const frozenIndex = index - tableMeta.columnFreezing.frozenInternalColumnCount;\n const handleClick = () => tableMeta.columnFreezing.setFrozenColumnIndex(frozenIndex);\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"column-freeze\" onClick={handleClick}>\n {frozenIndex === 0\n ? texts.table3.columns.menu.freezeFirstColumn\n : texts.table3.columns.menu.freezeUptoColumn.replace('[TOTAL]', String(frozenIndex + 1))}\n </MenuPrimitive.Item>\n );\n\n if (tableMeta.columnFreezing.frozenColumnIndex !== undefined) {\n const handleClick = () => {\n tableMeta.columnFreezing.setFrozenColumnIndex(undefined);\n };\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"column-unfreeze\" onClick={handleClick}>\n {texts.table3.columns.menu.unfreezeColumns}\n </MenuPrimitive.Item>\n );\n }\n }\n\n if (menu) {\n const customMenu = menu({ trigger: undefined });\n const customItems = React.Children.toArray(customMenu.props.children.props.children) as JSX.Element[];\n\n if (customItems.length) {\n if (menuItems.length) {\n menuItems.push(<MenuPrimitive.Separator />);\n }\n\n menuItems.push(...customItems);\n }\n }\n\n return menuItems.map((item, key) => React.cloneElement(item, { key }));\n }, [\n menu,\n index,\n canFreeze,\n canHide,\n canSort,\n handleGoto,\n handleSortToggle,\n sortDirection,\n tableMeta.columnFreezing.frozenColumnIndex,\n ]);\n\n return (\n <IconButton\n className={className}\n icon=\"more\"\n menu={\n popoverElement\n ? undefined\n : menuProps => (\n <MenuPrimitive {...menuProps}>\n <MenuPrimitive.Content>{memoedMenuItems}</MenuPrimitive.Content>\n </MenuPrimitive>\n )\n }\n popover={popoverElement}\n onClickCapture={event => event.preventDefault()}\n />\n );\n}\n"],"names":["isGotoAvailable","table","header","isInternalColumn","id","tableMeta","options","meta","rowGoto","isEnabled","column","getCanSort","getIsSorted","isMenuAvailable","_header$column$column","columnDef","menu","columnFreezing","enableHiding","getCanHide","Menu","props","canFreeze","canHide","canSort","index","onGoto","handleGoto","onHide","handleHide","onSortToggle","handleSortToggle","scrollToIndex","sortDirection","texts","useLocalization","popover","setPopover","React","useState","undefined","sortDirectionState","setSortDirectionState","handleSortMenuRadioGroupChange","newSortDirection","popoverElement","handleClosePopover","goto","query","Promise","resolve","then","currentRow","setCurrentRowIndex","align","_wasThrown","_result","_temp","e","reject","GotoPopover","open","onChange","className","cn","memoedMenuItems","useMemo","menuItems","handleClick","event","setTimeout","push","MenuPrimitive","Item","icon","onClick","table3","columns","hideColumn","subMenu","SubMenu","RadioGroup","value","SORT_DIRECTION","ASC","sortingOrder","ascending","DESC","descending","unsorted","sorting","shortcut","gotoRow","frozenIndex","frozenInternalColumnCount","setFrozenColumnIndex","freezeFirstColumn","freezeUptoColumn","replace","String","frozenColumnIndex","unfreezeColumns","customMenu","trigger","customItems","Children","toArray","children","length","Separator","map","item","key","cloneElement","IconButton","menuProps","Content","onClickCapture","preventDefault"],"mappings":"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"}
|
@@ -4,11 +4,11 @@ import { IconButton } from '../../../../IconButton/IconButton.js';
|
|
4
4
|
import { useLocalization } from '../../../../Provider/Localization.js';
|
5
5
|
import { Shortcut } from '../../../../Shortcut/Shortcut.js';
|
6
6
|
import { Menu } from '../../../../Menu/Menu.js';
|
7
|
-
import { FONT_SIZE } from '../../toolbar/FontSize.js';
|
8
7
|
import { Header } from '../header/Header.js';
|
9
8
|
import { RowContext } from '../../rows/RowContext.js';
|
10
9
|
import { DisplayCell } from '../cell/DisplayCell.js';
|
11
10
|
import { Footer } from '../footer/Footer.js';
|
11
|
+
import { FONT_SIZE } from '../../toolbar/FontSize.js';
|
12
12
|
|
13
13
|
const COLUMN_ID = '__actions';
|
14
14
|
const MemoedCell = /*#__PURE__*/React__default.memo(function MemoedCell(props) {
|
package/dist/index.css
CHANGED
@@ -860,7 +860,7 @@
|
|
860
860
|
}
|
861
861
|
|
862
862
|
[data-font-size='small'] [role='cell'][data-editable] {
|
863
|
-
@apply px-[calc(var(--table3-cell-padding-x)_-
|
863
|
+
@apply px-[calc(var(--table3-cell-padding-x)_-_6px)];
|
864
864
|
}
|
865
865
|
|
866
866
|
[data-font-size='small'] [role='cell'][data-editable] [data-taco='checkbox'],
|
@@ -890,7 +890,7 @@
|
|
890
890
|
}
|
891
891
|
|
892
892
|
[data-font-size='medium'] [role='cell'][data-editable] {
|
893
|
-
@apply px-[calc(var(--table3-cell-padding-x)_-
|
893
|
+
@apply px-[calc(var(--table3-cell-padding-x)_-_8px)];
|
894
894
|
}
|
895
895
|
|
896
896
|
[data-font-size='medium'] [role='cell'][data-editable] [data-taco='checkbox'],
|
@@ -934,7 +934,7 @@
|
|
934
934
|
}
|
935
935
|
|
936
936
|
[data-font-size='large'] [role='cell'][data-editable] {
|
937
|
-
@apply px-[calc(var(--table3-cell-padding-x)_-
|
937
|
+
@apply px-[calc(var(--table3-cell-padding-x)_-_10px)];
|
938
938
|
}
|
939
939
|
|
940
940
|
[data-font-size='large'] [role='cell'][data-editable] [data-taco='checkbox'],
|
@@ -943,3 +943,9 @@
|
|
943
943
|
[data-font-size='large'] [role='cell'][data-editable] [data-taco='switch-container'] {
|
944
944
|
@apply !mx-[calc(var(--table3-cell-padding-x)_-_5px)] !mt-px;
|
945
945
|
}
|
946
|
+
|
947
|
+
/* Icon inside column header button uses em values therefore text-sm is required to prevent icon
|
948
|
+
from overflowing button's boundaries */
|
949
|
+
[data-font-size='large'] [role='columnheader'] button {
|
950
|
+
@apply !text-sm;
|
951
|
+
}
|
@@ -6788,7 +6788,7 @@ const Field = /*#__PURE__*/React.forwardRef(function Field(props, ref) {
|
|
6788
6788
|
const {
|
6789
6789
|
disabled,
|
6790
6790
|
children,
|
6791
|
-
|
6791
|
+
invalid = false,
|
6792
6792
|
warning = false,
|
6793
6793
|
message,
|
6794
6794
|
...otherProps
|
@@ -6797,9 +6797,9 @@ const Field = /*#__PURE__*/React.forwardRef(function Field(props, ref) {
|
|
6797
6797
|
'text-grey-300': disabled
|
6798
6798
|
}, props.className);
|
6799
6799
|
const messageClassName = cn('h-4 text-xs text-left leading-normal font-normal truncate -mb-4', {
|
6800
|
-
'text-grey-700': !
|
6801
|
-
'text-red-500':
|
6802
|
-
'text-yellow-700': warning && !
|
6800
|
+
'text-grey-700': !invalid && !warning,
|
6801
|
+
'text-red-500': invalid,
|
6802
|
+
'text-yellow-700': warning && !invalid,
|
6803
6803
|
'opacity-50': disabled
|
6804
6804
|
});
|
6805
6805
|
return /*#__PURE__*/React.createElement("label", Object.assign({}, otherProps, {
|
@@ -6808,7 +6808,7 @@ const Field = /*#__PURE__*/React.forwardRef(function Field(props, ref) {
|
|
6808
6808
|
ref: ref
|
6809
6809
|
}), children, message && /*#__PURE__*/React.createElement("span", {
|
6810
6810
|
className: messageClassName,
|
6811
|
-
role:
|
6811
|
+
role: invalid ? 'alert' : undefined
|
6812
6812
|
}, message));
|
6813
6813
|
});
|
6814
6814
|
|
@@ -9695,7 +9695,7 @@ const EditPopover = props => {
|
|
9695
9695
|
className: cn('!min-h-fit', {
|
9696
9696
|
'!pb-0': !validationError
|
9697
9697
|
}),
|
9698
|
-
|
9698
|
+
invalid: !!validationError,
|
9699
9699
|
message: validationError === null || validationError === void 0 ? void 0 : validationError.message
|
9700
9700
|
}, /*#__PURE__*/React__default.createElement(Input, {
|
9701
9701
|
invalid: !!validationError,
|
@@ -10249,7 +10249,7 @@ const Search$1 = /*#__PURE__*/React__default.forwardRef(function ListboxSearch(p
|
|
10249
10249
|
className: cn('mx-1.5 mb-1.5 !min-h-fit ', {
|
10250
10250
|
'!pb-0': !validationError
|
10251
10251
|
}),
|
10252
|
-
|
10252
|
+
invalid: !!validationError,
|
10253
10253
|
message: validationError === null || validationError === void 0 ? void 0 : validationError.message
|
10254
10254
|
}, /*#__PURE__*/React__default.createElement(Input, Object.assign({}, otherProps, {
|
10255
10255
|
"aria-hidden": true,
|
@@ -12197,30 +12197,6 @@ function GotoPopover(props) {
|
|
12197
12197
|
})));
|
12198
12198
|
}
|
12199
12199
|
|
12200
|
-
const FONT_SIZE = {
|
12201
|
-
small: 'small',
|
12202
|
-
medium: 'medium',
|
12203
|
-
large: 'large'
|
12204
|
-
};
|
12205
|
-
function FontSize$1(props) {
|
12206
|
-
const {
|
12207
|
-
texts
|
12208
|
-
} = useLocalization();
|
12209
|
-
const meta = props.table.options.meta;
|
12210
|
-
const handleChange = value => meta.fontSize.setSize(value);
|
12211
|
-
return /*#__PURE__*/React__default.createElement(Menu$1.SubMenu, null, /*#__PURE__*/React__default.createElement(Menu$1.RadioGroup, {
|
12212
|
-
onChange: handleChange,
|
12213
|
-
value: meta.fontSize.size
|
12214
|
-
}, /*#__PURE__*/React__default.createElement(Menu$1.RadioGroup.Item, {
|
12215
|
-
value: FONT_SIZE.small
|
12216
|
-
}, texts.table3.fontSize.sizes.small), /*#__PURE__*/React__default.createElement(Menu$1.RadioGroup.Item, {
|
12217
|
-
value: FONT_SIZE.medium
|
12218
|
-
}, texts.table3.fontSize.sizes.medium), /*#__PURE__*/React__default.createElement(Menu$1.RadioGroup.Item, {
|
12219
|
-
disabled: meta.rowHeight.height === 'short',
|
12220
|
-
value: FONT_SIZE.large
|
12221
|
-
}, texts.table3.fontSize.sizes.large)));
|
12222
|
-
}
|
12223
|
-
|
12224
12200
|
function isGotoAvailable(table, header) {
|
12225
12201
|
if (isInternalColumn(header.id)) {
|
12226
12202
|
return false;
|
@@ -12256,7 +12232,6 @@ function Menu$3(props) {
|
|
12256
12232
|
} = useLocalization();
|
12257
12233
|
const [popover, setPopover] = React__default.useState(undefined);
|
12258
12234
|
const [sortDirectionState, setSortDirectionState] = React__default.useState(sortDirection);
|
12259
|
-
const isFontSizeLarge = tableMeta.fontSize.size === FONT_SIZE.large;
|
12260
12235
|
const handleSortMenuRadioGroupChange = newSortDirection => {
|
12261
12236
|
setSortDirectionState(newSortDirection);
|
12262
12237
|
handleSortToggle(newSortDirection);
|
@@ -12299,10 +12274,7 @@ function Menu$3(props) {
|
|
12299
12274
|
}
|
12300
12275
|
}
|
12301
12276
|
const className = cn('-my-0.5 -mr-1 -ml-0.5 !h-6 !min-h-[theme(spacing.6)] flex-shrink-0 justify-end !w-0 !min-w-0 !overflow-hidden', 'aria-expanded:!min-w-[theme(spacing.6)] aria-expanded:!w-6 aria-expanded:!overflow-auto', 'focus:!min-w-[theme(spacing.6)] focus:!w-6 focus:!overflow-auto', 'group-hover/column:!min-w-[theme(spacing.6)] group-hover/column:!w-6 group-hover/column:!overflow-auto', {
|
12302
|
-
'!w-6 !min-w-[theme(spacing.6)] !overflow-auto': !!popoverElement
|
12303
|
-
// Icon inside button uses em values therefore text-sm is required to prevent icon from overflowing
|
12304
|
-
// button's boundaries
|
12305
|
-
'!text-sm': isFontSizeLarge
|
12277
|
+
'!w-6 !min-w-[theme(spacing.6)] !overflow-auto': !!popoverElement
|
12306
12278
|
}, props.className);
|
12307
12279
|
const memoedMenuItems = React__default.useMemo(() => {
|
12308
12280
|
const menuItems = [];
|
@@ -12797,6 +12769,30 @@ const MemoedFooter = /*#__PURE__*/React__default.memo(function MemoedFooter(prop
|
|
12797
12769
|
}, meta.footer(table.getRowModel().rows.map(row => row.original[id]))) : null);
|
12798
12770
|
});
|
12799
12771
|
|
12772
|
+
const FONT_SIZE = {
|
12773
|
+
small: 'small',
|
12774
|
+
medium: 'medium',
|
12775
|
+
large: 'large'
|
12776
|
+
};
|
12777
|
+
function FontSize$1(props) {
|
12778
|
+
const {
|
12779
|
+
texts
|
12780
|
+
} = useLocalization();
|
12781
|
+
const meta = props.table.options.meta;
|
12782
|
+
const handleChange = value => meta.fontSize.setSize(value);
|
12783
|
+
return /*#__PURE__*/React__default.createElement(Menu$1.SubMenu, null, /*#__PURE__*/React__default.createElement(Menu$1.RadioGroup, {
|
12784
|
+
onChange: handleChange,
|
12785
|
+
value: meta.fontSize.size
|
12786
|
+
}, /*#__PURE__*/React__default.createElement(Menu$1.RadioGroup.Item, {
|
12787
|
+
value: FONT_SIZE.small
|
12788
|
+
}, texts.table3.fontSize.sizes.small), /*#__PURE__*/React__default.createElement(Menu$1.RadioGroup.Item, {
|
12789
|
+
value: FONT_SIZE.medium
|
12790
|
+
}, texts.table3.fontSize.sizes.medium), /*#__PURE__*/React__default.createElement(Menu$1.RadioGroup.Item, {
|
12791
|
+
disabled: meta.rowHeight.height === 'short',
|
12792
|
+
value: FONT_SIZE.large
|
12793
|
+
}, texts.table3.fontSize.sizes.large)));
|
12794
|
+
}
|
12795
|
+
|
12800
12796
|
const COLUMN_ID = '__actions';
|
12801
12797
|
const MemoedCell = /*#__PURE__*/React__default.memo(function MemoedCell(props) {
|
12802
12798
|
const {
|