@economic/taco 1.36.0 → 1.38.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/components/Checkbox/Checkbox.d.ts +0 -1
- package/dist/components/Icon/components/EyeOff.d.ts +3 -0
- package/dist/components/Icon/components/EyeOn.d.ts +3 -0
- package/dist/components/Icon/components/index.d.ts +1 -1
- package/dist/components/Input/Input.d.ts +1 -1
- package/dist/components/Input/util.d.ts +1 -1
- package/dist/components/Menu/components/Item.d.ts +1 -1
- package/dist/components/Menu/components/Link.d.ts +1 -1
- package/dist/components/Navigation2/components/Link.d.ts +1 -1
- package/dist/components/Provider/Localization.d.ts +1 -0
- package/dist/components/Select2/components/Option.d.ts +1 -1
- package/dist/components/Select2/components/Search.d.ts +1 -1
- package/dist/components/Select2/components/Trigger.d.ts +1 -0
- package/dist/components/Table2/Table2.d.ts +1 -0
- package/dist/components/Table2/hooks/useColumnDefinitions.d.ts +1 -1
- package/dist/components/Table2/types.d.ts +1 -1
- package/dist/components/Tabs/Tabs.d.ts +0 -1
- package/dist/components/Tag/Tag.d.ts +1 -1
- package/dist/esm/index.css +0 -20
- package/dist/esm/packages/taco/src/components/Button/Button.js +0 -2
- package/dist/esm/packages/taco/src/components/Button/Button.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Button/util.js +7 -7
- package/dist/esm/packages/taco/src/components/Button/util.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js +7 -8
- package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js +5 -8
- package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +6 -5
- package/dist/esm/packages/taco/src/components/Drawer/components/Content.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Field/Field.js +1 -1
- package/dist/esm/packages/taco/src/components/Field/Field.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Header/components/Button.js +1 -1
- package/dist/esm/packages/taco/src/components/Header/components/Button.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Header/components/Link.js +2 -2
- package/dist/esm/packages/taco/src/components/Header/components/Link.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Icon/components/EyeOff.js +19 -0
- package/dist/esm/packages/taco/src/components/Icon/components/EyeOff.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Icon/components/EyeOn.js +19 -0
- package/dist/esm/packages/taco/src/components/Icon/components/EyeOn.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Icon/components/index.js +4 -0
- package/dist/esm/packages/taco/src/components/Icon/components/index.js.map +1 -1
- package/dist/esm/packages/taco/src/components/IconButton/IconButton.js +1 -3
- package/dist/esm/packages/taco/src/components/IconButton/IconButton.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Input/Input.js +1 -1
- package/dist/esm/packages/taco/src/components/Input/Input.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Input/util.js +11 -11
- package/dist/esm/packages/taco/src/components/Input/util.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js +1 -0
- package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
- package/dist/esm/packages/taco/src/components/RadioGroup/RadioGroup.js +6 -4
- package/dist/esm/packages/taco/src/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/Select2.js +1 -0
- package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Create.js +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Create.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Option.js +1 -2
- package/dist/esm/packages/taco/src/components/Select2/components/Option.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js +3 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Switch/Switch.js +3 -3
- package/dist/esm/packages/taco/src/components/Switch/Switch.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js +54 -39
- package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +4 -3
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useGridTemplate.js +3 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useGridTemplate.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Tabs/Tabs.js +21 -8
- package/dist/esm/packages/taco/src/components/Tabs/Tabs.js.map +1 -1
- package/dist/index.css +0 -20
- package/dist/taco.cjs.development.js +171 -110
- 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/plugins/tailwindcss-aria-attributes.js +20 -36
- package/tailwind.config.js +6 -2
- package/types.json +14 -4
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Select2.js","sources":["../../../../../../../src/components/Select2/Select2.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport * as ListboxPrimitive from '../../primitives/Listbox2/Listbox2';\nimport { Select2Children, Select2OptionValue, Select2Value } from './types';\nimport { Option, Select2OptionProps } from './components/Option';\nimport { Group, Select2GroupProps } from './components/Group';\nimport { Select2TitleProps, Title } from './components/Title';\nimport { Select2Context } from './components/Context';\nimport { createCollectionClassName } from './utilities';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { useBoundingClientRectListener } from '../../hooks/useBoundingClientRectListener';\nimport { createCustomKeyboardEvent } from '../../utils/input';\nimport { Trigger } from './components/Trigger';\nimport { useIsFormControl } from '../../hooks/useIsFormControl';\nimport { BubbleSelect } from '../../primitives/BubbleSelect';\nimport { Search } from './components/Search';\nimport { useChildren } from './hooks/useChildren';\n\nimport { Create } from './components/Create';\nimport { Collection } from './components/Collection';\nimport { CollectionRef } from '../../primitives/Collection/Collection';\nimport { useLocalization } from '../Provider/Localization';\nimport { Color } from '../../types';\nimport { useIsHoverStatePaused } from '../../hooks/useIsHoverStatePaused';\nimport { isAriaDirectionKey } from '../../utils/aria';\n//import { All } from './components/All';\n\ntype Select2Texts = {\n allSelect: string;\n allDeselect: string;\n cancel: string;\n chooseColor: string;\n create: string;\n delete: string;\n save: string;\n search: string;\n searchOrCreate: string;\n};\n\ntype Select2Props = Omit<React.HTMLAttributes<HTMLButtonElement>, 'children' | 'defaultValue' | 'onChange' | 'value'> & {\n autoFocus?: boolean;\n children: Select2Children;\n defaultValue?: Select2Value;\n emptyValue?: Select2OptionValue;\n disabled?: boolean;\n highlighted?: boolean;\n invalid?: boolean;\n multiple?: boolean;\n name?: string;\n onChange?: (value: Select2Value) => void;\n onCreate?: (name: string, color: Color | undefined) => Promise<Select2OptionProps>;\n onDelete?: (value: Select2OptionValue) => Promise<void>;\n onEdit?: (value: Select2OptionValue, text: string, color: Color | undefined) => Promise<void>;\n readOnly?: boolean;\n required?: boolean;\n tags?: boolean;\n value?: Select2Value;\n};\ntype Select2PropsWithStatics = React.ForwardRefExoticComponent<Select2Props & React.RefAttributes<HTMLButtonElement>> & {\n Option: React.ForwardRefExoticComponent<Select2OptionProps>;\n Group: React.ForwardRefExoticComponent<Select2GroupProps>;\n Title: React.ForwardRefExoticComponent<Select2TitleProps>;\n};\n\nconst Select2 = React.forwardRef<HTMLButtonElement, Select2Props>(function Select2(props, ref) {\n const {\n children: initChildren,\n defaultValue: defaultProp,\n disabled = false,\n emptyValue = undefined,\n highlighted = false,\n invalid = false,\n multiple = false,\n name,\n onChange,\n onCreate,\n onDelete,\n onEdit,\n readOnly = false,\n tags = false,\n value: prop,\n ...otherProps\n } = props;\n\n const emptyOption: React.ReactElement<Select2OptionProps> | undefined = React.useMemo(() => {\n if (emptyValue !== undefined && !multiple) {\n // Empty option has 0px height, because it's empty, so need to apply height manually\n return <Option key=\"__empty\" children=\"\" value={emptyValue} className=\"h-8\" />;\n }\n return;\n }, [emptyValue, multiple]);\n\n const initialChildren = React.useMemo(() => {\n if (emptyOption) {\n return [emptyOption, ...initChildren] as Select2Children;\n }\n return initChildren;\n }, [emptyOption, initChildren]);\n\n // refs\n const internalRef = useMergedRef<HTMLButtonElement>(ref);\n const listboxRef = React.useRef<CollectionRef>(null);\n const searchRef = React.useRef<HTMLInputElement>(null);\n const { texts } = useLocalization();\n // align the listbox min width with the width of the input - it should never be smaller\n const dimensions = useBoundingClientRectListener(internalRef);\n\n // state\n const [open, setOpen] = React.useState(false);\n const [value, _setValue] = useControllableState<Select2Value>({\n // uncontrolled\n defaultProp,\n // controlled\n onChange,\n prop,\n });\n const setValue = ListboxPrimitive.createListboxValueSetter(multiple, _setValue);\n const [validationError, setValidationError] = React.useState<Error | undefined>();\n const [shouldPauseHoverState, setShouldPauseHoverState] = useIsHoverStatePaused();\n\n const { flattenedChildren, filteredChildren, searchQuery, setSearchQuery } = useChildren({\n children: initialChildren,\n emptyValue,\n multiple,\n open,\n setValue,\n value,\n });\n\n // context\n const context = {\n disabled,\n highlighted,\n invalid,\n listboxRef,\n multiple,\n onCreate,\n onDelete,\n onEdit,\n open,\n readOnly,\n ref: internalRef,\n searchQuery,\n searchRef,\n setOpen,\n setSearchQuery,\n setValidationError,\n setValue,\n shouldPauseHoverState,\n setShouldPauseHoverState,\n tags,\n validationError,\n value,\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (open) {\n event.preventDefault();\n } else if (event.key === 'ArrowDown') {\n setOpen(true);\n }\n\n // the focus should always remain on the input, so we forward events on to the listbox\n listboxRef.current?.dispatchEvent(createCustomKeyboardEvent(event as React.KeyboardEvent<HTMLInputElement>));\n };\n\n let handleBlur;\n\n if (otherProps.onBlur) {\n // we might be focusing on an input or something inside the dropdown that was triggered by the select\n // so see if the element gaining focus is inside a portal and look up its controller\n // if we don't do this, things like validate on blur occur while simply opening the select\n handleBlur = (event: React.FocusEvent<HTMLButtonElement>) => {\n const elementGainingFocus = event.relatedTarget;\n\n if (elementGainingFocus === undefined) {\n return;\n }\n\n const portalId = elementGainingFocus?.closest('[data-radix-popper-content-wrapper] > :first-child')?.id;\n\n if (!portalId || event.currentTarget.getAttribute(`aria-controls`) !== portalId) {\n otherProps.onBlur?.(event);\n }\n };\n }\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (isAriaDirectionKey(event)) {\n setShouldPauseHoverState(true);\n }\n };\n\n const className = cn('border-grey-300 rounded border bg-white py-1.5 shadow-md outline-none', createCollectionClassName());\n\n return (\n <Select2Context.Provider value={context}>\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <ControlledHiddenField\n emptyValue={emptyValue}\n multiple={multiple || tags}\n name={name}\n options={flattenedChildren.map(child => child.props.value)}\n parentRef={internalRef}\n setValue={setValue}\n value={value}\n />\n <PopoverPrimitive.Trigger asChild data-taco=\"Select2\">\n <Trigger\n {...otherProps}\n aria-haspopup=\"listbox\"\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n ref={internalRef}>\n {flattenedChildren}\n </Trigger>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n asChild\n align=\"start\"\n onOpenAutoFocus={event => {\n event.preventDefault();\n event.stopPropagation();\n internalRef.current?.focus();\n }}\n onCloseAutoFocus={event => {\n event.preventDefault();\n event.stopPropagation();\n internalRef.current?.focus();\n }}\n sideOffset={4}\n tabIndex={-1}>\n <div className={className} style={{ minWidth: dimensions?.width ? `${dimensions.width}px` : undefined }}>\n {flattenedChildren.length > 0 || onCreate ? (\n <Search\n placeholder={onCreate ? texts.select2.searchOrCreate : texts.select2.search}\n ref={searchRef}\n />\n ) : null}\n {flattenedChildren.length <= 0 ? (\n <div className=\"text-grey-700 -mt-0.5 flex h-8 items-center px-2\" role=\"presentation\">\n No results found...\n </div>\n ) : (\n <ListboxPrimitive.Root\n className=\"flex flex-col gap-0.5\"\n customSelector=\":scope > button\"\n disabled={disabled}\n multiple={multiple}\n onKeyDown={handleListboxKeyDown}\n readOnly={readOnly}\n ref={listboxRef}\n setValue={setValue}\n tabIndex={-1}\n value={value}>\n {/*multiple && !searchQuery && Array.isArray(value) ? (\n <All\n children={flattenedChildren}\n onToggle={_setValue}\n selected={value.length === flattenedChildren.length}\n />\n ) : null*/}\n {searchQuery === '' ? (\n <Collection>{initialChildren}</Collection>\n ) : (\n <Collection>{filteredChildren}</Collection>\n )}\n {onCreate ? <Create onCreate={onCreate} options={flattenedChildren} /> : null}\n </ListboxPrimitive.Root>\n )}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n </Select2Context.Provider>\n );\n}) as Select2PropsWithStatics;\nSelect2.Option = Option;\nSelect2.Group = Group;\nSelect2.Title = Title;\n\nconst ControlledHiddenField = props => {\n const { emptyValue, multiple, name, options, parentRef, value, setValue } = props;\n const isFormControl = useIsFormControl(parentRef, () => setValue(multiple ? [] : undefined));\n\n let bubbleValue;\n\n if (isFormControl) {\n if (value !== undefined) {\n if (multiple) {\n bubbleValue = Array.isArray(value) ? value.map(String) : [value === null ? '' : String(value)];\n } else {\n bubbleValue = value === null ? '' : String(value);\n }\n }\n\n return (\n <BubbleSelect aria-hidden key={String(bubbleValue)} multiple={multiple} name={name} value={bubbleValue}>\n {emptyValue !== undefined ? <option value={emptyValue} /> : null}\n {options.map(option => (\n <option key={String(option)} value={String(option)} />\n ))}\n </BubbleSelect>\n );\n }\n\n return null;\n};\nSelect2.displayName = 'Select2';\n\nexport { Select2 };\n\nexport type {\n Select2Texts,\n Select2GroupProps,\n Select2OptionProps,\n Select2OptionValue,\n Select2Value,\n Select2Props,\n Select2TitleProps,\n};\n"],"names":["Select2","React","forwardRef","props","ref","children","initChildren","defaultValue","defaultProp","disabled","emptyValue","undefined","highlighted","invalid","multiple","name","onChange","onCreate","onDelete","onEdit","readOnly","tags","value","prop","otherProps","emptyOption","useMemo","Option","key","className","initialChildren","internalRef","useMergedRef","listboxRef","useRef","searchRef","texts","useLocalization","dimensions","useBoundingClientRectListener","open","setOpen","useState","_setValue","useControllableState","setValue","ListboxPrimitive","validationError","setValidationError","shouldPauseHoverState","setShouldPauseHoverState","useIsHoverStatePaused","flattenedChildren","filteredChildren","searchQuery","setSearchQuery","useChildren","context","handleKeyDown","event","preventDefault","current","dispatchEvent","createCustomKeyboardEvent","handleBlur","onBlur","elementGainingFocus","relatedTarget","portalId","closest","id","currentTarget","getAttribute","handleListboxKeyDown","isAriaDirectionKey","cn","createCollectionClassName","Select2Context","Provider","PopoverPrimitive","onOpenChange","ControlledHiddenField","options","map","child","parentRef","asChild","Trigger","onKeyDown","align","onOpenAutoFocus","stopPropagation","focus","onCloseAutoFocus","sideOffset","tabIndex","style","minWidth","width","length","Search","placeholder","select2","searchOrCreate","search","role","customSelector","Collection","Create","Group","Title","isFormControl","useIsFormControl","bubbleValue","Array","isArray","String","BubbleSelect","option","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;MAkEMA,OAAO,gBAAGC,cAAK,CAACC,UAAU,CAAkC,SAASF,OAAO,CAACG,KAAK,EAAEC,GAAG;EACzF,MAAM;IACFC,QAAQ,EAAEC,YAAY;IACtBC,YAAY,EAAEC,WAAW;IACzBC,QAAQ,GAAG,KAAK;IAChBC,UAAU,GAAGC,SAAS;IACtBC,WAAW,GAAG,KAAK;IACnBC,OAAO,GAAG,KAAK;IACfC,QAAQ,GAAG,KAAK;IAChBC,IAAI;IACJC,QAAQ;IACRC,QAAQ;IACRC,QAAQ;IACRC,MAAM;IACNC,QAAQ,GAAG,KAAK;IAChBC,IAAI,GAAG,KAAK;IACZC,KAAK,EAAEC,IAAI;IACX,GAAGC;GACN,GAAGrB,KAAK;EAET,MAAMsB,WAAW,GAAuDxB,cAAK,CAACyB,OAAO,CAAC;IAClF,IAAIhB,UAAU,KAAKC,SAAS,IAAI,CAACG,QAAQ,EAAE;;MAEvC,oBAAOb,6BAAC0B,MAAM;QAACC,GAAG,EAAC,SAAS;QAACvB,QAAQ,EAAC,EAAE;QAACiB,KAAK,EAAEZ,UAAU;QAAEmB,SAAS,EAAC;QAAQ;;IAElF;GACH,EAAE,CAACnB,UAAU,EAAEI,QAAQ,CAAC,CAAC;EAE1B,MAAMgB,eAAe,GAAG7B,cAAK,CAACyB,OAAO,CAAC;IAClC,IAAID,WAAW,EAAE;MACb,OAAO,CAACA,WAAW,EAAE,GAAGnB,YAAY,CAAoB;;IAE5D,OAAOA,YAAY;GACtB,EAAE,CAACmB,WAAW,EAAEnB,YAAY,CAAC,CAAC;;EAG/B,MAAMyB,WAAW,GAAGC,YAAY,CAAoB5B,GAAG,CAAC;EACxD,MAAM6B,UAAU,GAAGhC,cAAK,CAACiC,MAAM,CAAgB,IAAI,CAAC;EACpD,MAAMC,SAAS,GAAGlC,cAAK,CAACiC,MAAM,CAAmB,IAAI,CAAC;EACtD,MAAM;IAAEE;GAAO,GAAGC,eAAe,EAAE;;EAEnC,MAAMC,UAAU,GAAGC,6BAA6B,CAACR,WAAW,CAAC;;EAG7D,MAAM,CAACS,IAAI,EAAEC,OAAO,CAAC,GAAGxC,cAAK,CAACyC,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM,CAACpB,KAAK,EAAEqB,SAAS,CAAC,GAAGC,oBAAoB,CAAe;;IAE1DpC,WAAW;;IAEXQ,QAAQ;IACRO;GACH,CAAC;EACF,MAAMsB,QAAQ,GAAGC,wBAAyC,CAAChC,QAAQ,EAAE6B,SAAS,CAAC;EAC/E,MAAM,CAACI,eAAe,EAAEC,kBAAkB,CAAC,GAAG/C,cAAK,CAACyC,QAAQ,EAAqB;EACjF,MAAM,CAACO,qBAAqB,EAAEC,wBAAwB,CAAC,GAAGC,qBAAqB,EAAE;EAEjF,MAAM;IAAEC,iBAAiB;IAAEC,gBAAgB;IAAEC,WAAW;IAAEC;GAAgB,GAAGC,WAAW,CAAC;IACrFnD,QAAQ,EAAEyB,eAAe;IACzBpB,UAAU;IACVI,QAAQ;IACR0B,IAAI;IACJK,QAAQ;IACRvB;GACH,CAAC;;EAGF,MAAMmC,OAAO,GAAG;IACZhD,QAAQ;IACRG,WAAW;IACXC,OAAO;IACPoB,UAAU;IACVnB,QAAQ;IACRG,QAAQ;IACRC,QAAQ;IACRC,MAAM;IACNqB,IAAI;IACJpB,QAAQ;IACRhB,GAAG,EAAE2B,WAAW;IAChBuB,WAAW;IACXnB,SAAS;IACTM,OAAO;IACPc,cAAc;IACdP,kBAAkB;IAClBH,QAAQ;IACRI,qBAAqB;IACrBC,wBAAwB;IACxB7B,IAAI;IACJ0B,eAAe;IACfzB;GACH;EAED,MAAMoC,aAAa,GAAIC,KAAuC;;IAC1D,IAAInB,IAAI,EAAE;MACNmB,KAAK,CAACC,cAAc,EAAE;KACzB,MAAM,IAAID,KAAK,CAAC/B,GAAG,KAAK,WAAW,EAAE;MAClCa,OAAO,CAAC,IAAI,CAAC;;;IAIjB,uBAAAR,UAAU,CAAC4B,OAAO,wDAAlB,oBAAoBC,aAAa,CAACC,yBAAyB,CAACJ,KAA8C,CAAC,CAAC;GAC/G;EAED,IAAIK,UAAU;EAEd,IAAIxC,UAAU,CAACyC,MAAM,EAAE;;;;IAInBD,UAAU,GAAIL,KAA0C;;MACpD,MAAMO,mBAAmB,GAAGP,KAAK,CAACQ,aAAa;MAE/C,IAAID,mBAAmB,KAAKvD,SAAS,EAAE;QACnC;;MAGJ,MAAMyD,QAAQ,GAAGF,mBAAmB,aAAnBA,mBAAmB,gDAAnBA,mBAAmB,CAAEG,OAAO,CAAC,oDAAoD,CAAC,0DAAlF,sBAAoFC,EAAE;MAEvG,IAAI,CAACF,QAAQ,IAAIT,KAAK,CAACY,aAAa,CAACC,YAAY,gBAAgB,CAAC,KAAKJ,QAAQ,EAAE;QAAA;QAC7E,sBAAA5C,UAAU,CAACyC,MAAM,uDAAjB,wBAAAzC,UAAU,EAAUmC,KAAK,CAAC;;KAEjC;;EAGL,MAAMc,oBAAoB,GAAId,KAAuC;IACjE,IAAIe,kBAAkB,CAACf,KAAK,CAAC,EAAE;MAC3BT,wBAAwB,CAAC,IAAI,CAAC;;GAErC;EAED,MAAMrB,SAAS,GAAG8C,EAAE,CAAC,uEAAuE,EAAEC,yBAAyB,EAAE,CAAC;EAE1H,oBACI3E,6BAAC4E,cAAc,CAACC,QAAQ;IAACxD,KAAK,EAAEmC;kBAC5BxD,6BAAC8E,IAAqB;IAACvC,IAAI,EAAEA,IAAI;IAAEwC,YAAY,EAAEvC;kBAC7CxC,6BAACgF,qBAAqB;IAClBvE,UAAU,EAAEA,UAAU;IACtBI,QAAQ,EAAEA,QAAQ,IAAIO,IAAI;IAC1BN,IAAI,EAAEA,IAAI;IACVmE,OAAO,EAAE9B,iBAAiB,CAAC+B,GAAG,CAACC,KAAK,IAAIA,KAAK,CAACjF,KAAK,CAACmB,KAAK,CAAC;IAC1D+D,SAAS,EAAEtD,WAAW;IACtBc,QAAQ,EAAEA,QAAQ;IAClBvB,KAAK,EAAEA;IACT,eACFrB,6BAAC8E,OAAwB;IAACO,OAAO;iBAAW;kBACxCrF,6BAACsF,SAAO,oBACA/D,UAAU;qBACA,SAAS;IACvByC,MAAM,EAAED,UAAU;IAClBwB,SAAS,EAAE9B,aAAa;IACxBtD,GAAG,EAAE2B;MACJqB,iBAAiB,CACZ,CACa,eAC3BnD,6BAAC8E,MAAuB,qBACpB9E,6BAAC8E,OAAwB;IACrBO,OAAO;IACPG,KAAK,EAAC,OAAO;IACbC,eAAe,EAAE/B,KAAK;;MAClBA,KAAK,CAACC,cAAc,EAAE;MACtBD,KAAK,CAACgC,eAAe,EAAE;MACvB,wBAAA5D,WAAW,CAAC8B,OAAO,yDAAnB,qBAAqB+B,KAAK,EAAE;KAC/B;IACDC,gBAAgB,EAAElC,KAAK;;MACnBA,KAAK,CAACC,cAAc,EAAE;MACtBD,KAAK,CAACgC,eAAe,EAAE;MACvB,yBAAA5D,WAAW,CAAC8B,OAAO,0DAAnB,sBAAqB+B,KAAK,EAAE;KAC/B;IACDE,UAAU,EAAE,CAAC;IACbC,QAAQ,EAAE,CAAC;kBACX9F;IAAK4B,SAAS,EAAEA,SAAS;IAAEmE,KAAK,EAAE;MAAEC,QAAQ,EAAE3D,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAE4D,KAAK,MAAM5D,UAAU,CAAC4D,SAAS,GAAGvF;;KACvFyC,iBAAiB,CAAC+C,MAAM,GAAG,CAAC,IAAIlF,QAAQ,gBACrChB,6BAACmG,MAAM;IACHC,WAAW,EAAEpF,QAAQ,GAAGmB,KAAK,CAACkE,OAAO,CAACC,cAAc,GAAGnE,KAAK,CAACkE,OAAO,CAACE,MAAM;IAC3EpG,GAAG,EAAE+B;IACP,GACF,IAAI,EACPiB,iBAAiB,CAAC+C,MAAM,IAAI,CAAC,gBAC1BlG;IAAK4B,SAAS,EAAC,kDAAkD;IAAC4E,IAAI,EAAC;2BAEjE,gBAENxG,6BAAC6C,MAAqB;IAClBjB,SAAS,EAAC,uBAAuB;IACjC6E,cAAc,EAAC,iBAAiB;IAChCjG,QAAQ,EAAEA,QAAQ;IAClBK,QAAQ,EAAEA,QAAQ;IAClB0E,SAAS,EAAEf,oBAAoB;IAC/BrD,QAAQ,EAAEA,QAAQ;IAClBhB,GAAG,EAAE6B,UAAU;IACfY,QAAQ,EAAEA,QAAQ;IAClBkD,QAAQ,EAAE,CAAC,CAAC;IACZzE,KAAK,EAAEA;KAQNgC,WAAW,KAAK,EAAE,gBACfrD,6BAAC0G,UAAU,QAAE7E,eAAe,CAAc,gBAE1C7B,6BAAC0G,UAAU,QAAEtD,gBAAgB,CAChC,EACApC,QAAQ,gBAAGhB,6BAAC2G,MAAM;IAAC3F,QAAQ,EAAEA,QAAQ;IAAEiE,OAAO,EAAE9B;IAAqB,GAAG,IAAI,CAEpF,CACC,CACiB,CACL,CACN,CACF;AAElC,CAAC;AACDpD,OAAO,CAAC2B,MAAM,GAAGA,MAAM;AACvB3B,OAAO,CAAC6G,KAAK,GAAGA,KAAK;AACrB7G,OAAO,CAAC8G,KAAK,GAAGA,KAAK;AAErB,MAAM7B,qBAAqB,GAAG9E,KAAK;EAC/B,MAAM;IAAEO,UAAU;IAAEI,QAAQ;IAAEC,IAAI;IAAEmE,OAAO;IAAEG,SAAS;IAAE/D,KAAK;IAAEuB;GAAU,GAAG1C,KAAK;EACjF,MAAM4G,aAAa,GAAGC,gBAAgB,CAAC3B,SAAS,EAAE,MAAMxC,QAAQ,CAAC/B,QAAQ,GAAG,EAAE,GAAGH,SAAS,CAAC,CAAC;EAE5F,IAAIsG,WAAW;EAEf,IAAIF,aAAa,EAAE;IACf,IAAIzF,KAAK,KAAKX,SAAS,EAAE;MACrB,IAAIG,QAAQ,EAAE;QACVmG,WAAW,GAAGC,KAAK,CAACC,OAAO,CAAC7F,KAAK,CAAC,GAAGA,KAAK,CAAC6D,GAAG,CAACiC,MAAM,CAAC,GAAG,CAAC9F,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG8F,MAAM,CAAC9F,KAAK,CAAC,CAAC;OACjG,MAAM;QACH2F,WAAW,GAAG3F,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG8F,MAAM,CAAC9F,KAAK,CAAC;;;IAIzD,oBACIrB,6BAACoH,YAAY;;MAAazF,GAAG,EAAEwF,MAAM,CAACH,WAAW,CAAC;MAAEnG,QAAQ,EAAEA,QAAQ;MAAEC,IAAI,EAAEA,IAAI;MAAEO,KAAK,EAAE2F;OACtFvG,UAAU,KAAKC,SAAS,gBAAGV;MAAQqB,KAAK,EAAEZ;MAAc,GAAG,IAAI,EAC/DwE,OAAO,CAACC,GAAG,CAACmC,MAAM,iBACfrH;MAAQ2B,GAAG,EAAEwF,MAAM,CAACE,MAAM,CAAC;MAAEhG,KAAK,EAAE8F,MAAM,CAACE,MAAM;MACpD,CAAC,CACS;;EAIvB,OAAO,IAAI;AACf,CAAC;AACDtH,OAAO,CAACuH,WAAW,GAAG,SAAS;;;;"}
|
1
|
+
{"version":3,"file":"Select2.js","sources":["../../../../../../../src/components/Select2/Select2.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport * as ListboxPrimitive from '../../primitives/Listbox2/Listbox2';\nimport { Select2Children, Select2OptionValue, Select2Value } from './types';\nimport { Option, Select2OptionProps } from './components/Option';\nimport { Group, Select2GroupProps } from './components/Group';\nimport { Select2TitleProps, Title } from './components/Title';\nimport { Select2Context } from './components/Context';\nimport { createCollectionClassName } from './utilities';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { useBoundingClientRectListener } from '../../hooks/useBoundingClientRectListener';\nimport { createCustomKeyboardEvent } from '../../utils/input';\nimport { Trigger } from './components/Trigger';\nimport { useIsFormControl } from '../../hooks/useIsFormControl';\nimport { BubbleSelect } from '../../primitives/BubbleSelect';\nimport { Search } from './components/Search';\nimport { useChildren } from './hooks/useChildren';\n\nimport { Create } from './components/Create';\nimport { Collection } from './components/Collection';\nimport { CollectionRef } from '../../primitives/Collection/Collection';\nimport { useLocalization } from '../Provider/Localization';\nimport { Color } from '../../types';\nimport { useIsHoverStatePaused } from '../../hooks/useIsHoverStatePaused';\nimport { isAriaDirectionKey } from '../../utils/aria';\n//import { All } from './components/All';\n\ntype Select2Texts = {\n allSelect: string;\n allDeselect: string;\n cancel: string;\n chooseColor: string;\n create: string;\n delete: string;\n save: string;\n search: string;\n searchOrCreate: string;\n};\n\ntype Select2Props = Omit<React.HTMLAttributes<HTMLButtonElement>, 'children' | 'defaultValue' | 'onChange' | 'value'> & {\n autoFocus?: boolean;\n children: Select2Children;\n defaultValue?: Select2Value;\n emptyValue?: Select2OptionValue;\n disabled?: boolean;\n highlighted?: boolean;\n invalid?: boolean;\n multiple?: boolean;\n name?: string;\n onChange?: (value: Select2Value) => void;\n onCreate?: (name: string, color: Color | undefined) => Promise<Select2OptionProps>;\n onDelete?: (value: Select2OptionValue) => Promise<void>;\n onEdit?: (value: Select2OptionValue, text: string, color: Color | undefined) => Promise<void>;\n readOnly?: boolean;\n required?: boolean;\n tags?: boolean;\n value?: Select2Value;\n};\ntype Select2PropsWithStatics = React.ForwardRefExoticComponent<Select2Props & React.RefAttributes<HTMLButtonElement>> & {\n Option: React.ForwardRefExoticComponent<Select2OptionProps>;\n Group: React.ForwardRefExoticComponent<Select2GroupProps>;\n Title: React.ForwardRefExoticComponent<Select2TitleProps>;\n};\n\nconst Select2 = React.forwardRef<HTMLButtonElement, Select2Props>(function Select2(props, ref) {\n const {\n children: initChildren,\n defaultValue: defaultProp,\n disabled = false,\n emptyValue = undefined,\n highlighted = false,\n invalid = false,\n multiple = false,\n name,\n onChange,\n onCreate,\n onDelete,\n onEdit,\n readOnly = false,\n tags = false,\n value: prop,\n ...otherProps\n } = props;\n\n const emptyOption: React.ReactElement<Select2OptionProps> | undefined = React.useMemo(() => {\n if (emptyValue !== undefined && !multiple) {\n // Empty option has 0px height, because it's empty, so need to apply height manually\n return <Option key=\"__empty\" children=\"\" value={emptyValue} className=\"h-8\" />;\n }\n return;\n }, [emptyValue, multiple]);\n\n const initialChildren = React.useMemo(() => {\n if (emptyOption) {\n return [emptyOption, ...initChildren] as Select2Children;\n }\n return initChildren;\n }, [emptyOption, initChildren]);\n\n // refs\n const internalRef = useMergedRef<HTMLButtonElement>(ref);\n const listboxRef = React.useRef<CollectionRef>(null);\n const searchRef = React.useRef<HTMLInputElement>(null);\n const { texts } = useLocalization();\n // align the listbox min width with the width of the input - it should never be smaller\n const dimensions = useBoundingClientRectListener(internalRef);\n\n // state\n const [open, setOpen] = React.useState(false);\n const [value, _setValue] = useControllableState<Select2Value>({\n // uncontrolled\n defaultProp,\n // controlled\n onChange,\n prop,\n });\n const setValue = ListboxPrimitive.createListboxValueSetter(multiple, _setValue);\n const [validationError, setValidationError] = React.useState<Error | undefined>();\n const [shouldPauseHoverState, setShouldPauseHoverState] = useIsHoverStatePaused();\n\n const { flattenedChildren, filteredChildren, searchQuery, setSearchQuery } = useChildren({\n children: initialChildren,\n emptyValue,\n multiple,\n open,\n setValue,\n value,\n });\n\n // context\n const context = {\n disabled,\n highlighted,\n invalid,\n listboxRef,\n multiple,\n onCreate,\n onDelete,\n onEdit,\n open,\n readOnly,\n ref: internalRef,\n searchQuery,\n searchRef,\n setOpen,\n setSearchQuery,\n setValidationError,\n setValue,\n shouldPauseHoverState,\n setShouldPauseHoverState,\n tags,\n validationError,\n value,\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (open) {\n event.preventDefault();\n } else if (event.key === 'ArrowDown') {\n setOpen(true);\n }\n\n // the focus should always remain on the input, so we forward events on to the listbox\n listboxRef.current?.dispatchEvent(createCustomKeyboardEvent(event as React.KeyboardEvent<HTMLInputElement>));\n };\n\n let handleBlur;\n\n if (otherProps.onBlur) {\n // we might be focusing on an input or something inside the dropdown that was triggered by the select\n // so see if the element gaining focus is inside a portal and look up its controller\n // if we don't do this, things like validate on blur occur while simply opening the select\n handleBlur = (event: React.FocusEvent<HTMLButtonElement>) => {\n const elementGainingFocus = event.relatedTarget;\n\n if (elementGainingFocus === undefined) {\n return;\n }\n\n const portalId = elementGainingFocus?.closest('[data-radix-popper-content-wrapper] > :first-child')?.id;\n\n if (!portalId || event.currentTarget.getAttribute(`aria-controls`) !== portalId) {\n otherProps.onBlur?.(event);\n }\n };\n }\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (isAriaDirectionKey(event)) {\n setShouldPauseHoverState(true);\n }\n };\n\n const className = cn('border-grey-300 rounded border bg-white py-1.5 shadow-md outline-none', createCollectionClassName());\n\n return (\n <Select2Context.Provider value={context}>\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <ControlledHiddenField\n emptyValue={emptyValue}\n multiple={multiple || tags}\n name={name}\n options={flattenedChildren.map(child => child.props.value)}\n parentRef={internalRef}\n setValue={setValue}\n value={value}\n />\n <PopoverPrimitive.Trigger asChild data-taco=\"Select2\">\n <Trigger\n {...otherProps}\n aria-haspopup=\"listbox\"\n emptyValue={emptyValue}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n ref={internalRef}>\n {flattenedChildren}\n </Trigger>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n asChild\n align=\"start\"\n onOpenAutoFocus={event => {\n event.preventDefault();\n event.stopPropagation();\n internalRef.current?.focus();\n }}\n onCloseAutoFocus={event => {\n event.preventDefault();\n event.stopPropagation();\n internalRef.current?.focus();\n }}\n sideOffset={4}\n tabIndex={-1}>\n <div className={className} style={{ minWidth: dimensions?.width ? `${dimensions.width}px` : undefined }}>\n {flattenedChildren.length > 0 || onCreate ? (\n <Search\n placeholder={onCreate ? texts.select2.searchOrCreate : texts.select2.search}\n ref={searchRef}\n />\n ) : null}\n {flattenedChildren.length <= 0 ? (\n <div className=\"text-grey-700 -mt-0.5 flex h-8 items-center px-2\" role=\"presentation\">\n No results found...\n </div>\n ) : (\n <ListboxPrimitive.Root\n className=\"flex flex-col gap-0.5\"\n customSelector=\":scope > button\"\n disabled={disabled}\n multiple={multiple}\n onKeyDown={handleListboxKeyDown}\n readOnly={readOnly}\n ref={listboxRef}\n setValue={setValue}\n tabIndex={-1}\n value={value}>\n {/*multiple && !searchQuery && Array.isArray(value) ? (\n <All\n children={flattenedChildren}\n onToggle={_setValue}\n selected={value.length === flattenedChildren.length}\n />\n ) : null*/}\n {searchQuery === '' ? (\n <Collection>{initialChildren}</Collection>\n ) : (\n <Collection>{filteredChildren}</Collection>\n )}\n {onCreate ? <Create onCreate={onCreate} options={flattenedChildren} /> : null}\n </ListboxPrimitive.Root>\n )}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n </Select2Context.Provider>\n );\n}) as Select2PropsWithStatics;\nSelect2.Option = Option;\nSelect2.Group = Group;\nSelect2.Title = Title;\n\nconst ControlledHiddenField = props => {\n const { emptyValue, multiple, name, options, parentRef, value, setValue } = props;\n const isFormControl = useIsFormControl(parentRef, () => setValue(multiple ? [] : undefined));\n\n let bubbleValue;\n\n if (isFormControl) {\n if (value !== undefined) {\n if (multiple) {\n bubbleValue = Array.isArray(value) ? value.map(String) : [value === null ? '' : String(value)];\n } else {\n bubbleValue = value === null ? '' : String(value);\n }\n }\n\n return (\n <BubbleSelect aria-hidden key={String(bubbleValue)} multiple={multiple} name={name} value={bubbleValue}>\n {emptyValue !== undefined ? <option value={emptyValue} /> : null}\n {options.map(option => (\n <option key={String(option)} value={String(option)} />\n ))}\n </BubbleSelect>\n );\n }\n\n return null;\n};\nSelect2.displayName = 'Select2';\n\nexport { Select2 };\n\nexport type {\n Select2Texts,\n Select2GroupProps,\n Select2OptionProps,\n Select2OptionValue,\n Select2Value,\n Select2Props,\n Select2TitleProps,\n};\n"],"names":["Select2","React","forwardRef","props","ref","children","initChildren","defaultValue","defaultProp","disabled","emptyValue","undefined","highlighted","invalid","multiple","name","onChange","onCreate","onDelete","onEdit","readOnly","tags","value","prop","otherProps","emptyOption","useMemo","Option","key","className","initialChildren","internalRef","useMergedRef","listboxRef","useRef","searchRef","texts","useLocalization","dimensions","useBoundingClientRectListener","open","setOpen","useState","_setValue","useControllableState","setValue","ListboxPrimitive","validationError","setValidationError","shouldPauseHoverState","setShouldPauseHoverState","useIsHoverStatePaused","flattenedChildren","filteredChildren","searchQuery","setSearchQuery","useChildren","context","handleKeyDown","event","preventDefault","current","dispatchEvent","createCustomKeyboardEvent","handleBlur","onBlur","elementGainingFocus","relatedTarget","portalId","closest","id","currentTarget","getAttribute","handleListboxKeyDown","isAriaDirectionKey","cn","createCollectionClassName","Select2Context","Provider","PopoverPrimitive","onOpenChange","ControlledHiddenField","options","map","child","parentRef","asChild","Trigger","onKeyDown","align","onOpenAutoFocus","stopPropagation","focus","onCloseAutoFocus","sideOffset","tabIndex","style","minWidth","width","length","Search","placeholder","select2","searchOrCreate","search","role","customSelector","Collection","Create","Group","Title","isFormControl","useIsFormControl","bubbleValue","Array","isArray","String","BubbleSelect","option","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;MAkEMA,OAAO,gBAAGC,cAAK,CAACC,UAAU,CAAkC,SAASF,OAAO,CAACG,KAAK,EAAEC,GAAG;EACzF,MAAM;IACFC,QAAQ,EAAEC,YAAY;IACtBC,YAAY,EAAEC,WAAW;IACzBC,QAAQ,GAAG,KAAK;IAChBC,UAAU,GAAGC,SAAS;IACtBC,WAAW,GAAG,KAAK;IACnBC,OAAO,GAAG,KAAK;IACfC,QAAQ,GAAG,KAAK;IAChBC,IAAI;IACJC,QAAQ;IACRC,QAAQ;IACRC,QAAQ;IACRC,MAAM;IACNC,QAAQ,GAAG,KAAK;IAChBC,IAAI,GAAG,KAAK;IACZC,KAAK,EAAEC,IAAI;IACX,GAAGC;GACN,GAAGrB,KAAK;EAET,MAAMsB,WAAW,GAAuDxB,cAAK,CAACyB,OAAO,CAAC;IAClF,IAAIhB,UAAU,KAAKC,SAAS,IAAI,CAACG,QAAQ,EAAE;;MAEvC,oBAAOb,6BAAC0B,MAAM;QAACC,GAAG,EAAC,SAAS;QAACvB,QAAQ,EAAC,EAAE;QAACiB,KAAK,EAAEZ,UAAU;QAAEmB,SAAS,EAAC;QAAQ;;IAElF;GACH,EAAE,CAACnB,UAAU,EAAEI,QAAQ,CAAC,CAAC;EAE1B,MAAMgB,eAAe,GAAG7B,cAAK,CAACyB,OAAO,CAAC;IAClC,IAAID,WAAW,EAAE;MACb,OAAO,CAACA,WAAW,EAAE,GAAGnB,YAAY,CAAoB;;IAE5D,OAAOA,YAAY;GACtB,EAAE,CAACmB,WAAW,EAAEnB,YAAY,CAAC,CAAC;;EAG/B,MAAMyB,WAAW,GAAGC,YAAY,CAAoB5B,GAAG,CAAC;EACxD,MAAM6B,UAAU,GAAGhC,cAAK,CAACiC,MAAM,CAAgB,IAAI,CAAC;EACpD,MAAMC,SAAS,GAAGlC,cAAK,CAACiC,MAAM,CAAmB,IAAI,CAAC;EACtD,MAAM;IAAEE;GAAO,GAAGC,eAAe,EAAE;;EAEnC,MAAMC,UAAU,GAAGC,6BAA6B,CAACR,WAAW,CAAC;;EAG7D,MAAM,CAACS,IAAI,EAAEC,OAAO,CAAC,GAAGxC,cAAK,CAACyC,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM,CAACpB,KAAK,EAAEqB,SAAS,CAAC,GAAGC,oBAAoB,CAAe;;IAE1DpC,WAAW;;IAEXQ,QAAQ;IACRO;GACH,CAAC;EACF,MAAMsB,QAAQ,GAAGC,wBAAyC,CAAChC,QAAQ,EAAE6B,SAAS,CAAC;EAC/E,MAAM,CAACI,eAAe,EAAEC,kBAAkB,CAAC,GAAG/C,cAAK,CAACyC,QAAQ,EAAqB;EACjF,MAAM,CAACO,qBAAqB,EAAEC,wBAAwB,CAAC,GAAGC,qBAAqB,EAAE;EAEjF,MAAM;IAAEC,iBAAiB;IAAEC,gBAAgB;IAAEC,WAAW;IAAEC;GAAgB,GAAGC,WAAW,CAAC;IACrFnD,QAAQ,EAAEyB,eAAe;IACzBpB,UAAU;IACVI,QAAQ;IACR0B,IAAI;IACJK,QAAQ;IACRvB;GACH,CAAC;;EAGF,MAAMmC,OAAO,GAAG;IACZhD,QAAQ;IACRG,WAAW;IACXC,OAAO;IACPoB,UAAU;IACVnB,QAAQ;IACRG,QAAQ;IACRC,QAAQ;IACRC,MAAM;IACNqB,IAAI;IACJpB,QAAQ;IACRhB,GAAG,EAAE2B,WAAW;IAChBuB,WAAW;IACXnB,SAAS;IACTM,OAAO;IACPc,cAAc;IACdP,kBAAkB;IAClBH,QAAQ;IACRI,qBAAqB;IACrBC,wBAAwB;IACxB7B,IAAI;IACJ0B,eAAe;IACfzB;GACH;EAED,MAAMoC,aAAa,GAAIC,KAAuC;;IAC1D,IAAInB,IAAI,EAAE;MACNmB,KAAK,CAACC,cAAc,EAAE;KACzB,MAAM,IAAID,KAAK,CAAC/B,GAAG,KAAK,WAAW,EAAE;MAClCa,OAAO,CAAC,IAAI,CAAC;;;IAIjB,uBAAAR,UAAU,CAAC4B,OAAO,wDAAlB,oBAAoBC,aAAa,CAACC,yBAAyB,CAACJ,KAA8C,CAAC,CAAC;GAC/G;EAED,IAAIK,UAAU;EAEd,IAAIxC,UAAU,CAACyC,MAAM,EAAE;;;;IAInBD,UAAU,GAAIL,KAA0C;;MACpD,MAAMO,mBAAmB,GAAGP,KAAK,CAACQ,aAAa;MAE/C,IAAID,mBAAmB,KAAKvD,SAAS,EAAE;QACnC;;MAGJ,MAAMyD,QAAQ,GAAGF,mBAAmB,aAAnBA,mBAAmB,gDAAnBA,mBAAmB,CAAEG,OAAO,CAAC,oDAAoD,CAAC,0DAAlF,sBAAoFC,EAAE;MAEvG,IAAI,CAACF,QAAQ,IAAIT,KAAK,CAACY,aAAa,CAACC,YAAY,gBAAgB,CAAC,KAAKJ,QAAQ,EAAE;QAAA;QAC7E,sBAAA5C,UAAU,CAACyC,MAAM,uDAAjB,wBAAAzC,UAAU,EAAUmC,KAAK,CAAC;;KAEjC;;EAGL,MAAMc,oBAAoB,GAAId,KAAuC;IACjE,IAAIe,kBAAkB,CAACf,KAAK,CAAC,EAAE;MAC3BT,wBAAwB,CAAC,IAAI,CAAC;;GAErC;EAED,MAAMrB,SAAS,GAAG8C,EAAE,CAAC,uEAAuE,EAAEC,yBAAyB,EAAE,CAAC;EAE1H,oBACI3E,6BAAC4E,cAAc,CAACC,QAAQ;IAACxD,KAAK,EAAEmC;kBAC5BxD,6BAAC8E,IAAqB;IAACvC,IAAI,EAAEA,IAAI;IAAEwC,YAAY,EAAEvC;kBAC7CxC,6BAACgF,qBAAqB;IAClBvE,UAAU,EAAEA,UAAU;IACtBI,QAAQ,EAAEA,QAAQ,IAAIO,IAAI;IAC1BN,IAAI,EAAEA,IAAI;IACVmE,OAAO,EAAE9B,iBAAiB,CAAC+B,GAAG,CAACC,KAAK,IAAIA,KAAK,CAACjF,KAAK,CAACmB,KAAK,CAAC;IAC1D+D,SAAS,EAAEtD,WAAW;IACtBc,QAAQ,EAAEA,QAAQ;IAClBvB,KAAK,EAAEA;IACT,eACFrB,6BAAC8E,OAAwB;IAACO,OAAO;iBAAW;kBACxCrF,6BAACsF,SAAO,oBACA/D,UAAU;qBACA,SAAS;IACvBd,UAAU,EAAEA,UAAU;IACtBuD,MAAM,EAAED,UAAU;IAClBwB,SAAS,EAAE9B,aAAa;IACxBtD,GAAG,EAAE2B;MACJqB,iBAAiB,CACZ,CACa,eAC3BnD,6BAAC8E,MAAuB,qBACpB9E,6BAAC8E,OAAwB;IACrBO,OAAO;IACPG,KAAK,EAAC,OAAO;IACbC,eAAe,EAAE/B,KAAK;;MAClBA,KAAK,CAACC,cAAc,EAAE;MACtBD,KAAK,CAACgC,eAAe,EAAE;MACvB,wBAAA5D,WAAW,CAAC8B,OAAO,yDAAnB,qBAAqB+B,KAAK,EAAE;KAC/B;IACDC,gBAAgB,EAAElC,KAAK;;MACnBA,KAAK,CAACC,cAAc,EAAE;MACtBD,KAAK,CAACgC,eAAe,EAAE;MACvB,yBAAA5D,WAAW,CAAC8B,OAAO,0DAAnB,sBAAqB+B,KAAK,EAAE;KAC/B;IACDE,UAAU,EAAE,CAAC;IACbC,QAAQ,EAAE,CAAC;kBACX9F;IAAK4B,SAAS,EAAEA,SAAS;IAAEmE,KAAK,EAAE;MAAEC,QAAQ,EAAE3D,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAE4D,KAAK,MAAM5D,UAAU,CAAC4D,SAAS,GAAGvF;;KACvFyC,iBAAiB,CAAC+C,MAAM,GAAG,CAAC,IAAIlF,QAAQ,gBACrChB,6BAACmG,MAAM;IACHC,WAAW,EAAEpF,QAAQ,GAAGmB,KAAK,CAACkE,OAAO,CAACC,cAAc,GAAGnE,KAAK,CAACkE,OAAO,CAACE,MAAM;IAC3EpG,GAAG,EAAE+B;IACP,GACF,IAAI,EACPiB,iBAAiB,CAAC+C,MAAM,IAAI,CAAC,gBAC1BlG;IAAK4B,SAAS,EAAC,kDAAkD;IAAC4E,IAAI,EAAC;2BAEjE,gBAENxG,6BAAC6C,MAAqB;IAClBjB,SAAS,EAAC,uBAAuB;IACjC6E,cAAc,EAAC,iBAAiB;IAChCjG,QAAQ,EAAEA,QAAQ;IAClBK,QAAQ,EAAEA,QAAQ;IAClB0E,SAAS,EAAEf,oBAAoB;IAC/BrD,QAAQ,EAAEA,QAAQ;IAClBhB,GAAG,EAAE6B,UAAU;IACfY,QAAQ,EAAEA,QAAQ;IAClBkD,QAAQ,EAAE,CAAC,CAAC;IACZzE,KAAK,EAAEA;KAQNgC,WAAW,KAAK,EAAE,gBACfrD,6BAAC0G,UAAU,QAAE7E,eAAe,CAAc,gBAE1C7B,6BAAC0G,UAAU,QAAEtD,gBAAgB,CAChC,EACApC,QAAQ,gBAAGhB,6BAAC2G,MAAM;IAAC3F,QAAQ,EAAEA,QAAQ;IAAEiE,OAAO,EAAE9B;IAAqB,GAAG,IAAI,CAEpF,CACC,CACiB,CACL,CACN,CACF;AAElC,CAAC;AACDpD,OAAO,CAAC2B,MAAM,GAAGA,MAAM;AACvB3B,OAAO,CAAC6G,KAAK,GAAGA,KAAK;AACrB7G,OAAO,CAAC8G,KAAK,GAAGA,KAAK;AAErB,MAAM7B,qBAAqB,GAAG9E,KAAK;EAC/B,MAAM;IAAEO,UAAU;IAAEI,QAAQ;IAAEC,IAAI;IAAEmE,OAAO;IAAEG,SAAS;IAAE/D,KAAK;IAAEuB;GAAU,GAAG1C,KAAK;EACjF,MAAM4G,aAAa,GAAGC,gBAAgB,CAAC3B,SAAS,EAAE,MAAMxC,QAAQ,CAAC/B,QAAQ,GAAG,EAAE,GAAGH,SAAS,CAAC,CAAC;EAE5F,IAAIsG,WAAW;EAEf,IAAIF,aAAa,EAAE;IACf,IAAIzF,KAAK,KAAKX,SAAS,EAAE;MACrB,IAAIG,QAAQ,EAAE;QACVmG,WAAW,GAAGC,KAAK,CAACC,OAAO,CAAC7F,KAAK,CAAC,GAAGA,KAAK,CAAC6D,GAAG,CAACiC,MAAM,CAAC,GAAG,CAAC9F,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG8F,MAAM,CAAC9F,KAAK,CAAC,CAAC;OACjG,MAAM;QACH2F,WAAW,GAAG3F,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG8F,MAAM,CAAC9F,KAAK,CAAC;;;IAIzD,oBACIrB,6BAACoH,YAAY;;MAAazF,GAAG,EAAEwF,MAAM,CAACH,WAAW,CAAC;MAAEnG,QAAQ,EAAEA,QAAQ;MAAEC,IAAI,EAAEA,IAAI;MAAEO,KAAK,EAAE2F;OACtFvG,UAAU,KAAKC,SAAS,gBAAGV;MAAQqB,KAAK,EAAEZ;MAAc,GAAG,IAAI,EAC/DwE,OAAO,CAACC,GAAG,CAACmC,MAAM,iBACfrH;MAAQ2B,GAAG,EAAEwF,MAAM,CAACE,MAAM,CAAC;MAAEhG,KAAK,EAAE8F,MAAM,CAACE,MAAM;MACpD,CAAC,CACS;;EAIvB,OAAO,IAAI;AACf,CAAC;AACDtH,OAAO,CAACuH,WAAW,GAAG,SAAS;;;;"}
|
@@ -16,7 +16,7 @@ const getNextColor = options => {
|
|
16
16
|
}, {});
|
17
17
|
const colors = Object.keys(occurences);
|
18
18
|
if (colors.length) {
|
19
|
-
return colors.sort((a, b) => occurences[
|
19
|
+
return colors.sort((a, b) => occurences[a] - occurences[b])[0];
|
20
20
|
}
|
21
21
|
return undefined;
|
22
22
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Create.js","sources":["../../../../../../../../src/components/Select2/components/Create.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { isAriaSelectionKey } from '../../../utils/aria';\nimport { Tag } from '../../Tag/Tag';\nimport { createOptionClassName } from '../utilities';\nimport { useSelect2Context } from './Context';\nimport { Select2OptionProps } from './Option';\nimport { useLocalization } from '../../Provider/Localization';\nimport { Color } from '../../../types';\n\nexport type CreateProps = {\n onCreate: (name: string, color: Color | undefined) => Promise<Select2OptionProps>;\n options: React.ReactElement<Select2OptionProps>[];\n};\n\nexport const getNextColor = (options: React.ReactElement<Select2OptionProps>[]): Color | undefined => {\n const occurences = options.reduce((occurences, option) => {\n if (option.props.color) {\n occurences[option.props.color] = occurences[option.props.color] ? occurences[option.props.color] + 1 : 1;\n }\n return occurences;\n }, {});\n\n const colors = Object.keys(occurences);\n\n if (colors.length) {\n return colors.sort((a, b) => occurences[
|
1
|
+
{"version":3,"file":"Create.js","sources":["../../../../../../../../src/components/Select2/components/Create.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { isAriaSelectionKey } from '../../../utils/aria';\nimport { Tag } from '../../Tag/Tag';\nimport { createOptionClassName } from '../utilities';\nimport { useSelect2Context } from './Context';\nimport { Select2OptionProps } from './Option';\nimport { useLocalization } from '../../Provider/Localization';\nimport { Color } from '../../../types';\n\nexport type CreateProps = {\n onCreate: (name: string, color: Color | undefined) => Promise<Select2OptionProps>;\n options: React.ReactElement<Select2OptionProps>[];\n};\n\nexport const getNextColor = (options: React.ReactElement<Select2OptionProps>[]): Color | undefined => {\n const occurences = options.reduce((occurences, option) => {\n if (option.props.color) {\n occurences[option.props.color] = occurences[option.props.color] ? occurences[option.props.color] + 1 : 1;\n }\n return occurences;\n }, {});\n\n const colors = Object.keys(occurences);\n\n if (colors.length) {\n return colors.sort((a, b) => occurences[a] - occurences[b])[0] as Color;\n }\n\n return undefined;\n};\n\nexport const Create = (props: CreateProps) => {\n const { onCreate: handleCreate, options } = props;\n const { multiple, searchQuery, setOpen, setSearchQuery, setValidationError, setValue } = useSelect2Context();\n const { texts } = useLocalization();\n\n // determine what the next color tag should be based on color occurences\n const nextColor = React.useMemo(() => getNextColor(options), [options]);\n\n if (!searchQuery) {\n return null;\n }\n\n const handleClick = async () => {\n try {\n const item = await handleCreate(searchQuery, nextColor);\n setValue(item.value);\n\n if (multiple) {\n setSearchQuery('');\n } else {\n setOpen(false);\n }\n } catch (error) {\n setValidationError(error as Error);\n }\n };\n\n const handleKeyDown = event => {\n if (isAriaSelectionKey(event)) {\n event.currentTarget.click();\n }\n };\n\n const className = cn('!w-[calc(100%_-_theme(spacing.3))] ml-1.5', createOptionClassName());\n return (\n <button className={className} onClick={handleClick} onKeyDown={handleKeyDown}>\n <span className=\"flex items-center gap-1.5\">\n {texts.select2.create}\n <Tag color={nextColor} className=\"cursor-pointer\">\n {searchQuery}\n </Tag>\n </span>\n </button>\n );\n};\n"],"names":["getNextColor","options","occurences","reduce","option","props","color","colors","Object","keys","length","sort","a","b","undefined","Create","onCreate","handleCreate","multiple","searchQuery","setOpen","setSearchQuery","setValidationError","setValue","useSelect2Context","texts","useLocalization","nextColor","React","useMemo","handleClick","item","value","error","handleKeyDown","event","isAriaSelectionKey","currentTarget","click","className","cn","createOptionClassName","onClick","onKeyDown","select2","create","Tag"],"mappings":";;;;;;;;;MAeaA,YAAY,GAAIC,OAAiD;EAC1E,MAAMC,UAAU,GAAGD,OAAO,CAACE,MAAM,CAAC,CAACD,UAAU,EAAEE,MAAM;IACjD,IAAIA,MAAM,CAACC,KAAK,CAACC,KAAK,EAAE;MACpBJ,UAAU,CAACE,MAAM,CAACC,KAAK,CAACC,KAAK,CAAC,GAAGJ,UAAU,CAACE,MAAM,CAACC,KAAK,CAACC,KAAK,CAAC,GAAGJ,UAAU,CAACE,MAAM,CAACC,KAAK,CAACC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;;IAE5G,OAAOJ,UAAU;GACpB,EAAE,EAAE,CAAC;EAEN,MAAMK,MAAM,GAAGC,MAAM,CAACC,IAAI,CAACP,UAAU,CAAC;EAEtC,IAAIK,MAAM,CAACG,MAAM,EAAE;IACf,OAAOH,MAAM,CAACI,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKX,UAAU,CAACU,CAAC,CAAC,GAAGV,UAAU,CAACW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAU;;EAG3E,OAAOC,SAAS;AACpB;MAEaC,MAAM,GAAIV,KAAkB;EACrC,MAAM;IAAEW,QAAQ,EAAEC,YAAY;IAAEhB;GAAS,GAAGI,KAAK;EACjD,MAAM;IAAEa,QAAQ;IAAEC,WAAW;IAAEC,OAAO;IAAEC,cAAc;IAAEC,kBAAkB;IAAEC;GAAU,GAAGC,iBAAiB,EAAE;EAC5G,MAAM;IAAEC;GAAO,GAAGC,eAAe,EAAE;;EAGnC,MAAMC,SAAS,GAAGC,cAAK,CAACC,OAAO,CAAC,MAAM7B,YAAY,CAACC,OAAO,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEvE,IAAI,CAACkB,WAAW,EAAE;IACd,OAAO,IAAI;;EAGf,MAAMW,WAAW;IAAA;uCACT;QAAA,uBACmBb,YAAY,CAACE,WAAW,EAAEQ,SAAS,CAAC,iBAAjDI,IAAI;UACVR,QAAQ,CAACQ,IAAI,CAACC,KAAK,CAAC;UAAC,IAEjBd,QAAQ;YACRG,cAAc,CAAC,EAAE,CAAC;;YAElBD,OAAO,CAAC,KAAK,CAAC;;;OAErB,YAAQa,KAAK,EAAE;QACZX,kBAAkB,CAACW,KAAc,CAAC;OACrC;MAAA;KACJ;MAAA;;;EAED,MAAMC,aAAa,GAAGC,KAAK;IACvB,IAAIC,kBAAkB,CAACD,KAAK,CAAC,EAAE;MAC3BA,KAAK,CAACE,aAAa,CAACC,KAAK,EAAE;;GAElC;EAED,MAAMC,SAAS,GAAGC,EAAE,CAAC,2CAA2C,EAAEC,qBAAqB,EAAE,CAAC;EAC1F,oBACIb;IAAQW,SAAS,EAAEA,SAAS;IAAEG,OAAO,EAAEZ,WAAW;IAAEa,SAAS,EAAET;kBAC3DN;IAAMW,SAAS,EAAC;KACXd,KAAK,CAACmB,OAAO,CAACC,MAAM,eACrBjB,6BAACkB,GAAG;IAACxC,KAAK,EAAEqB,SAAS;IAAEY,SAAS,EAAC;KAC5BpB,WAAW,CACV,CACH,CACF;AAEjB;;;;"}
|
@@ -81,10 +81,9 @@ const Option = /*#__PURE__*/React__default.forwardRef(function Select2Option(pro
|
|
81
81
|
}, /*#__PURE__*/React__default.createElement("span", null, children), description ? /*#__PURE__*/React__default.createElement("span", {
|
82
82
|
className: "text-grey-700 -mt-1.5 mb-1.5 text-xs"
|
83
83
|
}, description) : null)), popover ? /*#__PURE__*/React__default.createElement(IconButton, {
|
84
|
-
rounded: true,
|
85
84
|
icon: "ellipsis-vertical",
|
86
85
|
appearance: "discrete",
|
87
|
-
className: cn('group-aria-current:visible invisible ml-auto -
|
86
|
+
className: cn('group-aria-current:visible invisible -mr-1 ml-auto !h-5 min-h-[theme(spacing.6)] !w-5 min-w-[theme(spacing.6)] hover:!bg-black/[.08] focus:!shadow-none group-hover:visible', {
|
88
87
|
'!visible': isMobileDevice((_window = window) === null || _window === void 0 ? void 0 : _window.navigator)
|
89
88
|
}),
|
90
89
|
onClick: event => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Option.js","sources":["../../../../../../../../src/components/Select2/components/Option.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Icon, IconName, IconProps } from '../../Icon/Icon';\nimport { Tag } from '../../Tag/Tag';\nimport { isAriaSelectionKey } from '../../../utils/aria';\nimport * as ListboxPrimitive from '../../../primitives/Listbox2/Listbox2';\nimport { createOptionClassName } from '../utilities';\nimport { useSelect2Context } from './Context';\nimport { IconButton } from '../../IconButton/IconButton';\nimport { EditPopover } from './Edit';\nimport { isMobileDevice } from '../../../utils/device';\nimport { Color } from '../../../types';\n\nexport type Select2OptionProps = Omit<ListboxPrimitive.Listbox2OptionProps, 'children'> & {\n children: string;\n color?: Color;\n description?: string;\n icon?: React.ReactElement<IconProps> | IconName;\n textValue?: string;\n};\n\nexport const Option = React.forwardRef<HTMLDivElement, Select2OptionProps>(function Select2Option(props, ref) {\n const { children, color, description, icon, className: cName, ...otherProps } = props;\n const {\n onDelete,\n onEdit,\n listboxRef,\n multiple,\n ref: selectRef,\n setOpen,\n shouldPauseHoverState,\n tags,\n value,\n } = useSelect2Context();\n const className = cn(createOptionClassName(shouldPauseHoverState), cName);\n\n const hasValue = Array.isArray(value) ? !!value.length : value !== undefined;\n const isTag = tags && !!color;\n\n const handleClick = () => {\n if (!multiple) {\n setOpen(false);\n } else {\n selectRef.current?.focus();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (isAriaSelectionKey(event)) {\n if (!multiple || event.key === 'Tab') {\n setOpen(false);\n }\n }\n };\n\n const isEmptyOption = children !== '';\n\n const popover =\n isEmptyOption && (onEdit || onDelete)\n ? popoverProps => (\n <EditPopover\n {...popoverProps}\n color={props.color}\n key={props.textValue ?? String(props.children)}\n text={props.textValue ?? String(props.children)}\n value={props.value}\n />\n )\n : undefined;\n\n return (\n <ListboxPrimitive.Option {...otherProps} className={className} onClick={handleClick} onKeyDown={handleKeyDown} ref={ref}>\n {hasValue ? (\n <Icon name=\"tick\" className=\"pointer-events-none invisible -mx-0.5 !h-4 !w-4 group-aria-selected:visible\" />\n ) : null}\n\n {isTag ? (\n <Tag className=\"pointer-events-none my-1\" color={color} icon={icon}>\n {children}\n </Tag>\n ) : (\n <>\n {icon ? typeof icon === 'string' ? <Icon name={icon} /> : icon : null}\n <span className=\"flex flex-col\">\n <span>{children}</span>\n {description ? <span className=\"text-grey-700 -mt-1.5 mb-1.5 text-xs\">{description}</span> : null}\n </span>\n </>\n )}\n {popover ? (\n <IconButton\n
|
1
|
+
{"version":3,"file":"Option.js","sources":["../../../../../../../../src/components/Select2/components/Option.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Icon, IconName, IconProps } from '../../Icon/Icon';\nimport { Tag } from '../../Tag/Tag';\nimport { isAriaSelectionKey } from '../../../utils/aria';\nimport * as ListboxPrimitive from '../../../primitives/Listbox2/Listbox2';\nimport { createOptionClassName } from '../utilities';\nimport { useSelect2Context } from './Context';\nimport { IconButton } from '../../IconButton/IconButton';\nimport { EditPopover } from './Edit';\nimport { isMobileDevice } from '../../../utils/device';\nimport { Color } from '../../../types';\n\nexport type Select2OptionProps = Omit<ListboxPrimitive.Listbox2OptionProps, 'children'> & {\n children: string;\n color?: Color;\n description?: string;\n icon?: React.ReactElement<IconProps> | IconName;\n textValue?: string;\n};\n\nexport const Option = React.forwardRef<HTMLDivElement, Select2OptionProps>(function Select2Option(props, ref) {\n const { children, color, description, icon, className: cName, ...otherProps } = props;\n const {\n onDelete,\n onEdit,\n listboxRef,\n multiple,\n ref: selectRef,\n setOpen,\n shouldPauseHoverState,\n tags,\n value,\n } = useSelect2Context();\n const className = cn(createOptionClassName(shouldPauseHoverState), cName);\n\n const hasValue = Array.isArray(value) ? !!value.length : value !== undefined;\n const isTag = tags && !!color;\n\n const handleClick = () => {\n if (!multiple) {\n setOpen(false);\n } else {\n selectRef.current?.focus();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (isAriaSelectionKey(event)) {\n if (!multiple || event.key === 'Tab') {\n setOpen(false);\n }\n }\n };\n\n const isEmptyOption = children !== '';\n\n const popover =\n isEmptyOption && (onEdit || onDelete)\n ? popoverProps => (\n <EditPopover\n {...popoverProps}\n color={props.color}\n key={props.textValue ?? String(props.children)}\n text={props.textValue ?? String(props.children)}\n value={props.value}\n />\n )\n : undefined;\n\n return (\n <ListboxPrimitive.Option {...otherProps} className={className} onClick={handleClick} onKeyDown={handleKeyDown} ref={ref}>\n {hasValue ? (\n <Icon name=\"tick\" className=\"pointer-events-none invisible -mx-0.5 !h-4 !w-4 group-aria-selected:visible\" />\n ) : null}\n\n {isTag ? (\n <Tag className=\"pointer-events-none my-1\" color={color} icon={icon}>\n {children}\n </Tag>\n ) : (\n <>\n {icon ? typeof icon === 'string' ? <Icon name={icon} /> : icon : null}\n <span className=\"flex flex-col\">\n <span>{children}</span>\n {description ? <span className=\"text-grey-700 -mt-1.5 mb-1.5 text-xs\">{description}</span> : null}\n </span>\n </>\n )}\n {popover ? (\n <IconButton\n icon=\"ellipsis-vertical\"\n appearance=\"discrete\"\n className={cn(\n 'group-aria-current:visible invisible -mr-1 ml-auto !h-5 min-h-[theme(spacing.6)] !w-5 min-w-[theme(spacing.6)] hover:!bg-black/[.08] focus:!shadow-none group-hover:visible',\n {\n '!visible': isMobileDevice(window?.navigator),\n }\n )}\n onClick={event => {\n event.stopPropagation();\n listboxRef?.current?.setActiveIndex(event.currentTarget.parentElement as HTMLDivElement);\n }}\n popover={popover}\n tabIndex={-1}\n />\n ) : null}\n </ListboxPrimitive.Option>\n );\n});\n"],"names":["Option","React","forwardRef","Select2Option","props","ref","children","color","description","icon","className","cName","otherProps","onDelete","onEdit","listboxRef","multiple","selectRef","setOpen","shouldPauseHoverState","tags","value","useSelect2Context","cn","createOptionClassName","hasValue","Array","isArray","length","undefined","isTag","handleClick","current","focus","handleKeyDown","event","isAriaSelectionKey","key","isEmptyOption","popover","popoverProps","EditPopover","textValue","String","text","ListboxPrimitive","onClick","onKeyDown","Icon","name","Tag","IconButton","appearance","isMobileDevice","window","navigator","stopPropagation","setActiveIndex","currentTarget","parentElement","tabIndex"],"mappings":"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"}
|
@@ -78,6 +78,7 @@ const Button = /*#__PURE__*/React__default.forwardRef(function Select2TriggerBut
|
|
78
78
|
const Single = /*#__PURE__*/React__default.forwardRef(function Select2TriggerSingle(props, ref) {
|
79
79
|
const {
|
80
80
|
children,
|
81
|
+
emptyValue,
|
81
82
|
value,
|
82
83
|
...buttonProps
|
83
84
|
} = props;
|
@@ -90,7 +91,7 @@ const Single = /*#__PURE__*/React__default.forwardRef(function Select2TriggerSin
|
|
90
91
|
const currentValue = children.find(matchesValue(value));
|
91
92
|
let output;
|
92
93
|
if (currentValue) {
|
93
|
-
if (tags) {
|
94
|
+
if (tags && emptyValue !== undefined && emptyValue !== value) {
|
94
95
|
output = /*#__PURE__*/React__default.createElement(Tag, {
|
95
96
|
className: "truncate",
|
96
97
|
color: currentValue.props.color,
|
@@ -114,6 +115,7 @@ const Multiple = /*#__PURE__*/React__default.forwardRef(function Select2TriggerM
|
|
114
115
|
var _buttonRef$current;
|
115
116
|
const {
|
116
117
|
children,
|
118
|
+
emptyValue: _,
|
117
119
|
values = [],
|
118
120
|
...buttonProps
|
119
121
|
} = props;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Trigger.js","sources":["../../../../../../../../src/components/Select2/components/Trigger.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Tag } from '../../Tag/Tag';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { Icon } from '../../Icon/Icon';\nimport { Badge } from '../../Badge/Badge';\nimport { getInputClasses } from '../../Input/util';\nimport { Select2OptionValue } from '../types';\nimport { useSelect2Context } from './Context';\nimport { Select2OptionProps } from './Option';\nimport { getIndexOfFirstChildOverflowingParent } from '../../../utils/dom';\nimport { ScrollArea } from '../../ScrollArea/ScrollArea';\nimport { useMergedRef } from '../../../hooks/useMergedRef';\n\ntype Select2TriggerProps = Omit<React.HTMLAttributes<HTMLButtonElement>, 'children' | 'defaultValue' | 'onChange' | 'value'> & {\n children: React.ReactElement<Select2OptionProps>[];\n};\n\nexport const Trigger = React.forwardRef<HTMLButtonElement, Select2TriggerProps>(function Select2Trigger(props, ref) {\n const { multiple, value } = useSelect2Context();\n\n if (Array.isArray(value) || multiple) {\n const values = Array.isArray(value) ? value : value !== undefined ? [value] : undefined;\n return <Multiple {...props} ref={ref} values={values} />;\n }\n\n return <Single {...props} ref={ref} value={value} />;\n});\n\ntype ButtonProps = React.HTMLAttributes<HTMLButtonElement> &\n Omit<Select2TriggerProps, 'children' | 'open' | 'setValue' | 'value'>;\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Select2TriggerButton(props, ref) {\n const { children, onClick, tabIndex = 0, ...otherProps } = props;\n const { disabled, highlighted, invalid, open, readOnly } = useSelect2Context();\n\n const className = cn(\n 'cursor-pointer !px-1.5',\n getInputClasses({ ...props, disabled, highlighted, invalid, readOnly }).replace('w-full', ''),\n { 'w-full': !props.className?.includes('w-') },\n props.className\n );\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled || readOnly) {\n event.preventDefault();\n return;\n }\n\n if (typeof onClick === 'function') {\n onClick(event);\n }\n };\n\n return (\n <button\n {...otherProps}\n aria-invalid={invalid ? true : undefined}\n aria-readonly={readOnly ? true : undefined}\n className={className}\n disabled={disabled}\n onClick={handleClick}\n ref={ref}\n role=\"combobox\"\n tabIndex={disabled || readOnly ? -1 : tabIndex}\n type=\"button\">\n {children}\n <Icon name={open ? 'chevron-up' : 'chevron-down'} className=\"pointer-events-none -mr-1 ml-auto\" />\n </button>\n );\n});\n\ntype SingleProps = Omit<Select2TriggerProps, 'value'> & { value?: Select2OptionValue };\n\nconst Single = React.forwardRef<HTMLButtonElement, SingleProps>(function Select2TriggerSingle(props, ref) {\n const { children, value, ...buttonProps } = props;\n const { disabled, readOnly, tags } = useSelect2Context();\n const contentClassName = cn('truncate items-center gap-1');\n\n const currentValue = children.find(matchesValue(value));\n\n let output;\n\n if (currentValue) {\n if (tags) {\n output = (\n <Tag\n className=\"truncate\"\n color={currentValue.props.color}\n disabled={disabled}\n icon={currentValue.props.icon}\n readOnly={readOnly}>\n {currentValue.props.children}\n </Tag>\n );\n } else {\n output = (\n <>\n {currentValue.props.icon ? (\n typeof currentValue.props.icon === 'string' ? (\n <Icon name={currentValue.props.icon} />\n ) : (\n currentValue.props.icon\n )\n ) : null}\n {currentValue.props.children}\n </>\n );\n }\n }\n\n return (\n <Button {...buttonProps} ref={ref}>\n <div className={contentClassName}>{output}</div>\n </Button>\n );\n});\n\ntype MultipleProps = Omit<Select2TriggerProps, 'value'> & {\n values?: Select2OptionValue[];\n};\n\nconst Multiple = React.forwardRef<HTMLButtonElement, MultipleProps>(function Select2TriggerMultiple(props, ref) {\n const { children, values = [], ...buttonProps } = props;\n const { disabled, open, readOnly, setValue, tags } = useSelect2Context();\n const buttonRef = useMergedRef<HTMLButtonElement>(ref);\n\n const valuesAsChildren = values\n .map(value => children.find(c => c.props.value === value))\n .filter(c => !!c) as React.ReactElement<Select2OptionProps>[];\n\n let content;\n let { className } = buttonProps;\n\n if (open) {\n className = cn('!absolute z-20', buttonProps.className);\n content = (\n <ScrollArea className=\"my-1 flex max-h-[5.5rem] flex-col\">\n <div className=\"flex flex-wrap gap-1\">\n {valuesAsChildren.map(child => (\n <Tag\n key={child.props.value}\n className=\"truncate\"\n color={tags ? child.props.color : undefined}\n disabled={disabled}\n icon={child.props.icon}\n onDelete={event => {\n event?.stopPropagation();\n event?.preventDefault();\n\n if (!disabled && !readOnly) {\n setValue(child.props.value);\n }\n }}\n readOnly={readOnly}>\n {child.props.children}\n </Tag>\n ))}\n </div>\n </ScrollArea>\n );\n } else {\n content = <MultipleValue key={String(open)} valuesAsChildren={valuesAsChildren} />;\n }\n\n return (\n <div\n className={cn('relative inline-flex flex-grow', { 'h-8': open })}\n style={{ width: open ? buttonRef.current?.offsetWidth : undefined }}>\n <Button {...buttonProps} className={className} ref={buttonRef}>\n {content}\n </Button>\n </div>\n );\n});\n\nconst MultipleValue = ({ valuesAsChildren }) => {\n const { disabled, open, readOnly, setValue, tags } = useSelect2Context();\n const [contentRef, setContentRef] = React.useState<HTMLDivElement | null>(null);\n const boundaryIndex = contentRef ? getIndexOfFirstChildOverflowingParent(contentRef, 30) : undefined;\n\n const createClickHandler = tagValue => event => {\n event?.stopPropagation();\n event?.preventDefault();\n\n if (!disabled && !readOnly) {\n setValue(tagValue);\n }\n };\n\n return (\n <div className=\"relative flex items-center gap-1 overflow-hidden\">\n <div className=\"flex gap-1 truncate\" ref={el => setContentRef(el)}>\n {valuesAsChildren.map((child, index) => {\n const tag = (\n <Tag\n key={child.props.value}\n className={cn('cursor-pointer', {\n truncate: index === boundaryIndex,\n hidden: boundaryIndex !== undefined && boundaryIndex !== null ? index > boundaryIndex : false,\n })}\n color={tags ? child.props.color : undefined}\n disabled={disabled}\n icon={child.props.icon}\n onDelete={open ? createClickHandler(child.props.value) : undefined}\n readOnly={readOnly}>\n {child.props.children}\n </Tag>\n );\n\n if (index === boundaryIndex) {\n return (\n <Tooltip key={child.props.value} title={String(child.props.children)}>\n {tag}\n </Tooltip>\n );\n }\n\n return tag;\n })}\n </div>\n {boundaryIndex !== undefined && boundaryIndex !== null && boundaryIndex < valuesAsChildren.length - 1 ? (\n <Tooltip\n title={valuesAsChildren\n .slice(boundaryIndex + 1)\n .map(child => (child ? String(child.props.children) : ''))\n .join(', ')}>\n <Badge className=\"flex-shrink-0\">+{valuesAsChildren.length - (boundaryIndex + 1)}</Badge>\n </Tooltip>\n ) : null}\n </div>\n );\n};\n\nconst matchesValue = (value: undefined | any | any[]) => (child: React.ReactElement<any>) => {\n if (Array.isArray(value)) {\n return value.includes(child.props.value);\n }\n\n return child.props.value === value;\n};\n"],"names":["Trigger","React","forwardRef","Select2Trigger","props","ref","multiple","value","useSelect2Context","Array","isArray","values","undefined","Multiple","Single","Button","Select2TriggerButton","children","onClick","tabIndex","otherProps","disabled","highlighted","invalid","open","readOnly","className","cn","getInputClasses","replace","includes","handleClick","event","preventDefault","role","type","Icon","name","Select2TriggerSingle","buttonProps","tags","contentClassName","currentValue","find","matchesValue","output","Tag","color","icon","Select2TriggerMultiple","setValue","buttonRef","useMergedRef","valuesAsChildren","map","c","filter","content","ScrollArea","child","key","onDelete","stopPropagation","MultipleValue","String","style","width","current","offsetWidth","contentRef","setContentRef","useState","boundaryIndex","getIndexOfFirstChildOverflowingParent","createClickHandler","tagValue","el","index","tag","truncate","hidden","Tooltip","title","length","slice","join","Badge"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Trigger.js","sources":["../../../../../../../../src/components/Select2/components/Trigger.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Tag } from '../../Tag/Tag';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { Icon } from '../../Icon/Icon';\nimport { Badge } from '../../Badge/Badge';\nimport { getInputClasses } from '../../Input/util';\nimport { Select2OptionValue } from '../types';\nimport { useSelect2Context } from './Context';\nimport { Select2OptionProps } from './Option';\nimport { getIndexOfFirstChildOverflowingParent } from '../../../utils/dom';\nimport { ScrollArea } from '../../ScrollArea/ScrollArea';\nimport { useMergedRef } from '../../../hooks/useMergedRef';\n\ntype Select2TriggerProps = Omit<React.HTMLAttributes<HTMLButtonElement>, 'children' | 'defaultValue' | 'onChange' | 'value'> & {\n emptyValue?: Select2OptionValue;\n children: React.ReactElement<Select2OptionProps>[];\n};\n\nexport const Trigger = React.forwardRef<HTMLButtonElement, Select2TriggerProps>(function Select2Trigger(props, ref) {\n const { multiple, value } = useSelect2Context();\n\n if (Array.isArray(value) || multiple) {\n const values = Array.isArray(value) ? value : value !== undefined ? [value] : undefined;\n return <Multiple {...props} ref={ref} values={values} />;\n }\n\n return <Single {...props} ref={ref} value={value} />;\n});\n\ntype ButtonProps = React.HTMLAttributes<HTMLButtonElement> &\n Omit<Select2TriggerProps, 'children' | 'open' | 'setValue' | 'value'>;\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Select2TriggerButton(props, ref) {\n const { children, onClick, tabIndex = 0, ...otherProps } = props;\n const { disabled, highlighted, invalid, open, readOnly } = useSelect2Context();\n\n const className = cn(\n 'cursor-pointer !px-1.5',\n getInputClasses({ ...props, disabled, highlighted, invalid, readOnly }).replace('w-full', ''),\n { 'w-full': !props.className?.includes('w-') },\n props.className\n );\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled || readOnly) {\n event.preventDefault();\n return;\n }\n\n if (typeof onClick === 'function') {\n onClick(event);\n }\n };\n\n return (\n <button\n {...otherProps}\n aria-invalid={invalid ? true : undefined}\n aria-readonly={readOnly ? true : undefined}\n className={className}\n disabled={disabled}\n onClick={handleClick}\n ref={ref}\n role=\"combobox\"\n tabIndex={disabled || readOnly ? -1 : tabIndex}\n type=\"button\">\n {children}\n <Icon name={open ? 'chevron-up' : 'chevron-down'} className=\"pointer-events-none -mr-1 ml-auto\" />\n </button>\n );\n});\n\ntype SingleProps = Omit<Select2TriggerProps, 'value'> & { value?: Select2OptionValue };\n\nconst Single = React.forwardRef<HTMLButtonElement, SingleProps>(function Select2TriggerSingle(props, ref) {\n const { children, emptyValue, value, ...buttonProps } = props;\n const { disabled, readOnly, tags } = useSelect2Context();\n const contentClassName = cn('truncate items-center gap-1');\n\n const currentValue = children.find(matchesValue(value));\n\n let output;\n\n if (currentValue) {\n if (tags && emptyValue !== undefined && emptyValue !== value) {\n output = (\n <Tag\n className=\"truncate\"\n color={currentValue.props.color}\n disabled={disabled}\n icon={currentValue.props.icon}\n readOnly={readOnly}>\n {currentValue.props.children}\n </Tag>\n );\n } else {\n output = (\n <>\n {currentValue.props.icon ? (\n typeof currentValue.props.icon === 'string' ? (\n <Icon name={currentValue.props.icon} />\n ) : (\n currentValue.props.icon\n )\n ) : null}\n {currentValue.props.children}\n </>\n );\n }\n }\n\n return (\n <Button {...buttonProps} ref={ref}>\n <div className={contentClassName}>{output}</div>\n </Button>\n );\n});\n\ntype MultipleProps = Omit<Select2TriggerProps, 'value'> & {\n values?: Select2OptionValue[];\n};\n\nconst Multiple = React.forwardRef<HTMLButtonElement, MultipleProps>(function Select2TriggerMultiple(props, ref) {\n const { children, emptyValue: _, values = [], ...buttonProps } = props;\n const { disabled, open, readOnly, setValue, tags } = useSelect2Context();\n const buttonRef = useMergedRef<HTMLButtonElement>(ref);\n\n const valuesAsChildren = values\n .map(value => children.find(c => c.props.value === value))\n .filter(c => !!c) as React.ReactElement<Select2OptionProps>[];\n\n let content;\n let { className } = buttonProps;\n\n if (open) {\n className = cn('!absolute z-20', buttonProps.className);\n content = (\n <ScrollArea className=\"my-1 flex max-h-[5.5rem] flex-col\">\n <div className=\"flex flex-wrap gap-1\">\n {valuesAsChildren.map(child => (\n <Tag\n key={child.props.value}\n className=\"truncate\"\n color={tags ? child.props.color : undefined}\n disabled={disabled}\n icon={child.props.icon}\n onDelete={event => {\n event?.stopPropagation();\n event?.preventDefault();\n\n if (!disabled && !readOnly) {\n setValue(child.props.value);\n }\n }}\n readOnly={readOnly}>\n {child.props.children}\n </Tag>\n ))}\n </div>\n </ScrollArea>\n );\n } else {\n content = <MultipleValue key={String(open)} valuesAsChildren={valuesAsChildren} />;\n }\n\n return (\n <div\n className={cn('relative inline-flex flex-grow', { 'h-8': open })}\n style={{ width: open ? buttonRef.current?.offsetWidth : undefined }}>\n <Button {...buttonProps} className={className} ref={buttonRef}>\n {content}\n </Button>\n </div>\n );\n});\n\nconst MultipleValue = ({ valuesAsChildren }) => {\n const { disabled, open, readOnly, setValue, tags } = useSelect2Context();\n const [contentRef, setContentRef] = React.useState<HTMLDivElement | null>(null);\n const boundaryIndex = contentRef ? getIndexOfFirstChildOverflowingParent(contentRef, 30) : undefined;\n\n const createClickHandler = tagValue => event => {\n event?.stopPropagation();\n event?.preventDefault();\n\n if (!disabled && !readOnly) {\n setValue(tagValue);\n }\n };\n\n return (\n <div className=\"relative flex items-center gap-1 overflow-hidden\">\n <div className=\"flex gap-1 truncate\" ref={el => setContentRef(el)}>\n {valuesAsChildren.map((child, index) => {\n const tag = (\n <Tag\n key={child.props.value}\n className={cn('cursor-pointer', {\n truncate: index === boundaryIndex,\n hidden: boundaryIndex !== undefined && boundaryIndex !== null ? index > boundaryIndex : false,\n })}\n color={tags ? child.props.color : undefined}\n disabled={disabled}\n icon={child.props.icon}\n onDelete={open ? createClickHandler(child.props.value) : undefined}\n readOnly={readOnly}>\n {child.props.children}\n </Tag>\n );\n\n if (index === boundaryIndex) {\n return (\n <Tooltip key={child.props.value} title={String(child.props.children)}>\n {tag}\n </Tooltip>\n );\n }\n\n return tag;\n })}\n </div>\n {boundaryIndex !== undefined && boundaryIndex !== null && boundaryIndex < valuesAsChildren.length - 1 ? (\n <Tooltip\n title={valuesAsChildren\n .slice(boundaryIndex + 1)\n .map(child => (child ? String(child.props.children) : ''))\n .join(', ')}>\n <Badge className=\"flex-shrink-0\">+{valuesAsChildren.length - (boundaryIndex + 1)}</Badge>\n </Tooltip>\n ) : null}\n </div>\n );\n};\n\nconst matchesValue = (value: undefined | any | any[]) => (child: React.ReactElement<any>) => {\n if (Array.isArray(value)) {\n return value.includes(child.props.value);\n }\n\n return child.props.value === value;\n};\n"],"names":["Trigger","React","forwardRef","Select2Trigger","props","ref","multiple","value","useSelect2Context","Array","isArray","values","undefined","Multiple","Single","Button","Select2TriggerButton","children","onClick","tabIndex","otherProps","disabled","highlighted","invalid","open","readOnly","className","cn","getInputClasses","replace","includes","handleClick","event","preventDefault","role","type","Icon","name","Select2TriggerSingle","emptyValue","buttonProps","tags","contentClassName","currentValue","find","matchesValue","output","Tag","color","icon","Select2TriggerMultiple","_","setValue","buttonRef","useMergedRef","valuesAsChildren","map","c","filter","content","ScrollArea","child","key","onDelete","stopPropagation","MultipleValue","String","style","width","current","offsetWidth","contentRef","setContentRef","useState","boundaryIndex","getIndexOfFirstChildOverflowingParent","createClickHandler","tagValue","el","index","tag","truncate","hidden","Tooltip","title","length","slice","join","Badge"],"mappings":"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"}
|
@@ -10,10 +10,10 @@ const Switch = /*#__PURE__*/forwardRef(function Switch(props, ref) {
|
|
10
10
|
...otherProps
|
11
11
|
} = props;
|
12
12
|
const id = useId(props.id);
|
13
|
-
const className = cn('group h-5 w-9 flex flex-shrink-0 rounded-full inline-flex', {
|
13
|
+
const className = cn('group h-5 w-9 flex flex-shrink-0 rounded-full inline-flex focus-visible:yt-focus', {
|
14
14
|
'mr-2': !!label,
|
15
|
-
'bg-grey-500 hover:bg-grey-
|
16
|
-
'bg-grey-
|
15
|
+
'bg-grey-500 hover:bg-grey-700 aria-checked:bg-blue-500 aria-checked:hover:bg-blue-700': !props.disabled,
|
16
|
+
'bg-grey-500/50 aria-checked:bg-blue-500/50 cursor-not-allowed': props.disabled
|
17
17
|
}, props.className);
|
18
18
|
let labelledByProps = null;
|
19
19
|
if (label) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Switch.js","sources":["../../../../../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport * as PrimitiveSwitch from '@radix-ui/react-switch';\nimport { useId } from '../../hooks/useId';\n\ntype SwitchBaseProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'onChange'> & {\n /** Label for the switch */\n label?: React.ReactNode;\n /* Whether user input is required */\n required?: boolean;\n};\n\ninterface UncontrolledSwitchProps extends SwitchBaseProps {\n checked?: never;\n onChange?: never;\n /* The default checked state (uncontrolled) */\n defaultChecked?: boolean;\n}\n\ninterface ControlledSwitchProps extends SwitchBaseProps {\n defaultChecked?: never;\n /* The current checked state (controlled) */\n checked: boolean;\n /* Handler called when the checked state changes */\n onChange: (checked: boolean) => void;\n}\n\nexport type SwitchProps = UncontrolledSwitchProps | ControlledSwitchProps;\n\nexport const Switch = React.forwardRef(function Switch(props: SwitchProps, ref: React.Ref<HTMLButtonElement>) {\n const { label, onChange, ...otherProps } = props;\n const id = useId(props.id);\n\n const className = cn(\n 'group h-5 w-9 flex flex-shrink-0 rounded-full inline-flex',\n {\n 'mr-2': !!label,\n 'bg-grey-500 hover:bg-grey-
|
1
|
+
{"version":3,"file":"Switch.js","sources":["../../../../../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport * as PrimitiveSwitch from '@radix-ui/react-switch';\nimport { useId } from '../../hooks/useId';\n\ntype SwitchBaseProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'onChange'> & {\n /** Label for the switch */\n label?: React.ReactNode;\n /* Whether user input is required */\n required?: boolean;\n};\n\ninterface UncontrolledSwitchProps extends SwitchBaseProps {\n checked?: never;\n onChange?: never;\n /* The default checked state (uncontrolled) */\n defaultChecked?: boolean;\n}\n\ninterface ControlledSwitchProps extends SwitchBaseProps {\n defaultChecked?: never;\n /* The current checked state (controlled) */\n checked: boolean;\n /* Handler called when the checked state changes */\n onChange: (checked: boolean) => void;\n}\n\nexport type SwitchProps = UncontrolledSwitchProps | ControlledSwitchProps;\n\nexport const Switch = React.forwardRef(function Switch(props: SwitchProps, ref: React.Ref<HTMLButtonElement>) {\n const { label, onChange, ...otherProps } = props;\n const id = useId(props.id);\n\n const className = cn(\n 'group h-5 w-9 flex flex-shrink-0 rounded-full inline-flex focus-visible:yt-focus',\n {\n 'mr-2': !!label,\n 'bg-grey-500 hover:bg-grey-700 aria-checked:bg-blue-500 aria-checked:hover:bg-blue-700': !props.disabled,\n 'bg-grey-500/50 aria-checked:bg-blue-500/50 cursor-not-allowed': props.disabled,\n },\n props.className\n );\n\n let labelledByProps: Record<string, string> | null = null;\n\n if (label) {\n labelledByProps = {\n 'aria-labelledby': `${id}-label`,\n id,\n };\n }\n\n const element = (\n <PrimitiveSwitch.Root {...otherProps} {...labelledByProps} className={className} onCheckedChange={onChange} ref={ref}>\n <PrimitiveSwitch.Thumb className=\"'will-change-transform mt-0.5 h-4 w-4 translate-x-[0.15rem] rounded-full bg-white transition-transform group-disabled:opacity-50 group-aria-checked:translate-x-[1.1rem]\" />\n </PrimitiveSwitch.Root>\n );\n\n if (label) {\n const labelContainerClassName = cn('flex self-start cursor-pointer', {\n 'cursor-not-allowed text-grey-300': props.disabled,\n });\n\n return (\n <span className={labelContainerClassName}>\n {element}\n <label htmlFor={id} id={`${id}-label`}>\n {label}\n </label>\n </span>\n );\n }\n\n return element;\n});\nSwitch.displayName = 'Switch';\n"],"names":["Switch","React","props","ref","label","onChange","otherProps","id","useId","className","cn","disabled","labelledByProps","element","PrimitiveSwitch","onCheckedChange","labelContainerClassName","htmlFor","displayName"],"mappings":";;;;;MA6BaA,MAAM,gBAAGC,UAAgB,CAAC,SAASD,MAAM,CAACE,KAAkB,EAAEC,GAAiC;EACxG,MAAM;IAAEC,KAAK;IAAEC,QAAQ;IAAE,GAAGC;GAAY,GAAGJ,KAAK;EAChD,MAAMK,EAAE,GAAGC,KAAK,CAACN,KAAK,CAACK,EAAE,CAAC;EAE1B,MAAME,SAAS,GAAGC,EAAE,CAChB,kFAAkF,EAClF;IACI,MAAM,EAAE,CAAC,CAACN,KAAK;IACf,uFAAuF,EAAE,CAACF,KAAK,CAACS,QAAQ;IACxG,+DAA+D,EAAET,KAAK,CAACS;GAC1E,EACDT,KAAK,CAACO,SAAS,CAClB;EAED,IAAIG,eAAe,GAAkC,IAAI;EAEzD,IAAIR,KAAK,EAAE;IACPQ,eAAe,GAAG;MACd,iBAAiB,KAAKL,UAAU;MAChCA;KACH;;EAGL,MAAMM,OAAO,gBACTZ,cAACa,IAAoB,oBAAKR,UAAU,EAAMM,eAAe;IAAEH,SAAS,EAAEA,SAAS;IAAEM,eAAe,EAAEV,QAAQ;IAAEF,GAAG,EAAEA;mBAC7GF,cAACa,KAAqB;IAACL,SAAS,EAAC;IAA6K,CAErN;EAED,IAAIL,KAAK,EAAE;IACP,MAAMY,uBAAuB,GAAGN,EAAE,CAAC,gCAAgC,EAAE;MACjE,kCAAkC,EAAER,KAAK,CAACS;KAC7C,CAAC;IAEF,oBACIV;MAAMQ,SAAS,EAAEO;OACZH,OAAO,eACRZ;MAAOgB,OAAO,EAAEV,EAAE;MAAEA,EAAE,KAAKA;OACtBH,KAAK,CACF,CACL;;EAIf,OAAOS,OAAO;AAClB,CAAC;AACDb,MAAM,CAACkB,WAAW,GAAG,QAAQ;;;;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Table2.js","sources":["../../../../../../../src/components/Table2/Table2.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Row as TRow, TableMeta } from '@tanstack/react-table';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { Cell } from './components/column/Cell';\nimport { Header } from './components/column/Header';\nimport { Footer } from './components/column/Footer';\nimport { Table2Props, Table2ColumnProps } from './types';\nimport { useTable } from './hooks/useTable';\nimport { useVirtualiser } from './hooks/useVirtualiser';\nimport { Group } from '../Group/Group';\nimport { useGridTemplate } from './hooks/useGridTemplate';\nimport { RowDensityButton } from './components/RowDensityButton';\nimport { ColumnSettingsButton } from './components/ColumnSettingsButton';\nimport { ExpandedRow } from './components/row/ExpandedRow';\nimport { BatchActionsMenu } from './components/BatchActionsMenu';\nimport { Row } from './components/row/Row';\nimport { FiltersButton } from './components/filters/FiltersButton';\nimport { Search } from './components/Search';\nimport { EditModeButton } from './components/EditModeButton';\n\nexport type Table2Texts = {\n columns: {\n resize: {\n tooltip: string;\n };\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n menu: {\n freezeColumns: (count: number) => string;\n unfreezeColumns: string;\n };\n };\n columnSettings: {\n search: string;\n tooltip: string;\n button: string;\n noResults: string;\n };\n editing: {\n button: string;\n tooltip: string;\n tooltipDisabled: string;\n rowIndicator: {\n rowWillMove: string;\n rowWillBeHidden: string;\n rowWillMoveReasonSearch: string;\n rowWillMoveReasonFilter: string;\n rowWillMoveReasonSorting: string;\n };\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isOneOf: string;\n isNoneOf: string;\n isAllOf: string;\n isEmpty: string;\n isNotEmpty: string;\n };\n tooltip: string;\n total: string;\n };\n rowDensity: {\n tooltip: string;\n compact: string;\n normal: string;\n comfortable: string;\n spacious: string;\n };\n search: {\n placeholder: string;\n };\n shortcuts: {\n tooltip: string;\n search: string;\n filter: string;\n previousRow: string;\n nextRow: string;\n editCell: string;\n previousColumn: string;\n nextColumn: string;\n rowClick: string;\n selectRow: string;\n selectAllRows: string;\n expandRow: string;\n collapseRow: string;\n };\n};\n\nfunction Column<TType = any>(_: Table2ColumnProps<TType>) {\n return null;\n}\nColumn.displayName = 'Table2Column';\n\nexport type Table2Ref = HTMLDivElement & {\n instance: {\n resetFiltering: () => void;\n resetRowExpansion: () => void;\n resetRowSelection: () => void;\n resetSorting: () => void;\n };\n};\n\nconst BaseTable2 = React.forwardRef(function BaseTable2<TType = any>(props: Table2Props<TType>, ref: React.Ref<Table2Ref>) {\n // dom\n const {\n emptyState: EmptyState,\n expandedRowRenderer,\n length = props.data.length,\n loadMore,\n onRowClick,\n onRowDrop,\n toolbarLeft,\n toolbarRight,\n _experimentalActionsForTable,\n _experimentalActionsForTableSummary,\n } = props;\n const tableRef = useMergedRef<Table2Ref>(ref);\n const timeoutIdRef = React.useRef<NodeJS.Timeout>();\n const prevScrollY = React.useRef<number>(0);\n\n // react-table\n const { rows, table, footers } = useTable(props.children, props, tableRef);\n const meta = table.options.meta as TableMeta<TType>;\n\n const { columnVisibility, columnOrder, globalFilter } = table.getState();\n\n React.useEffect(() => {\n if (tableRef.current) {\n tableRef.current.instance = {\n resetFiltering: () => table.resetColumnFilters(),\n resetRowExpansion: () => table.resetExpanded(),\n resetRowSelection: () => table.resetRowSelection(),\n resetSorting: () => table.resetSorting(),\n };\n }\n }, [table, tableRef.current]);\n\n // If column visibility or order changes then we turn off the edit mode so that control indexes gets computed\n // when user turns on the editing mode again. This is a temporary solution to make sure the keyboard navigation\n // still keeps working on changes in column visibility, order, or both\n React.useEffect(() => {\n meta.resetFocussableColumnIndexes();\n }, [columnVisibility, columnOrder]);\n\n React.useEffect(() => {\n // Whenever edit mode is turned off we reset the focussableColumnIndexes ref to an empty array so that\n // we don't have stale values, in case column visibility or ordering changes\n if (!meta.editMode.isEditing) {\n meta.resetFocussableColumnIndexes();\n }\n }, [meta.editMode.isEditing]);\n\n React.useEffect(() => {\n return () => clearTimeout(timeoutIdRef.current);\n }, []);\n\n // virtualiser\n const { virtualiser, virtualiserOffsets, setExpandedRowSizes } = useVirtualiser({ rows, table }, tableRef);\n\n // css grid\n const gridTemplateColumns = useGridTemplate(table);\n\n // handlers\n const editButtonRef = React.useRef(null);\n\n // support grid like keyboard navigation between cells\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (document.activeElement === tableRef.current) {\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(0);\n virtualiser.scrollToOffset(0);\n } else {\n meta.moveToPreviousRow(rows, nextIndex => {\n meta.setShouldPauseHoverState(true);\n virtualiser.scrollToIndex(nextIndex - 1);\n });\n }\n\n return;\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(rows.length - 1);\n virtualiser.scrollToOffset(virtualiser.totalSize + 1);\n } else {\n meta.moveToNextRow(rows, nextIndex => {\n meta.setShouldPauseHoverState(true);\n\n // the virtualiser doesn't always scroll right to the bottom for the last row\n if (nextIndex === rows.length - 1) {\n tableRef.current?.scrollTo(0, tableRef.current.scrollHeight);\n } else {\n virtualiser.scrollToIndex(nextIndex + 2);\n }\n });\n }\n\n return;\n }\n\n const canToggleRowExpansion = table.options.enableExpanding;\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n if (canToggleRowExpansion) {\n rows[meta.activeRowIndex]?.toggleExpanded(false);\n }\n }\n return;\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n if (canToggleRowExpansion) {\n rows[meta?.activeRowIndex]?.toggleExpanded(true);\n }\n }\n\n return;\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n if (onRowClick) {\n onRowClick(rows[meta?.activeRowIndex].original);\n }\n\n return;\n }\n\n if (event.key === ' ') {\n event.preventDefault();\n\n if (table.options.enableRowSelection) {\n rows[meta.activeRowIndex]?.toggleSelected();\n }\n\n return;\n }\n\n if (event.ctrlKey || event.metaKey) {\n if (event.key === 'a' && table.options.enableRowSelection) {\n event.preventDefault();\n table.toggleAllRowsSelected();\n }\n\n return;\n }\n }\n };\n\n let handleBlur;\n\n if (meta.editMode.isEditing) {\n handleBlur = (event: React.FocusEvent) => {\n let elementGainingFocus = event.relatedTarget;\n\n if (elementGainingFocus === undefined) {\n return;\n }\n\n // we might be focusing on a select or a popover that was triggered from inside the table\n // so see if the element gaining focus is inside a portal and look up its controller\n const portalId = elementGainingFocus?.closest('[data-radix-popper-content-wrapper] > :first-child')?.id;\n\n if (portalId) {\n elementGainingFocus = event.currentTarget.querySelector(`[aria-controls=\"${portalId}\"]`) ?? event.relatedTarget;\n }\n\n if (!event.currentTarget?.contains(elementGainingFocus) && elementGainingFocus !== editButtonRef.current) {\n // When we call manually blur on control component while navigating to the next cell, then when this\n // handler is run, the related target is not the next control component and active element is null,\n // that's why we explictly need to check what's the next focussed element in order to figure out whether\n // we should disabled the sorting or not.\n timeoutIdRef.current = setTimeout(() => {\n const parentRow = event.target.closest('[role=\"row\"]');\n const isNewFocussedElementInSameRow = parentRow?.contains(document.activeElement);\n\n // When we manually call blur on control component and focus another component then\n // we have to make sure we\n if (meta.shouldPauseSortingAndFiltering && !isNewFocussedElementInSameRow) {\n // if client side - unpause sorting\n meta.setShouldPauseSortingAndFiltering(false);\n }\n });\n }\n };\n }\n\n // TODO: this can probably be extracted into a hook\n // we only show the pinned shadow on display columns when scrolling is active\n const [scrolled, setScrolled] = React.useState(false);\n\n // extract - infinite loading\n const loadingRef = React.useRef(false);\n\n const handleScroll = async (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.currentTarget.scrollLeft > 0 && !scrolled) {\n setScrolled(true);\n } else if (event.currentTarget.scrollLeft === 0 && scrolled) {\n setScrolled(false);\n } else if (typeof loadMore === 'function') {\n const scrollY = event.currentTarget.scrollTop;\n const isScrollingDown = scrollY > prevScrollY.current;\n prevScrollY.current = scrollY;\n\n const scrolledPercentage = Math.round(\n (scrollY / (event.currentTarget.scrollHeight - event.currentTarget.clientHeight)) * 100\n );\n\n if (isScrollingDown && !loadingRef.current && scrolledPercentage >= 80) {\n try {\n const isAllRowsSelected = table.getIsAllRowsSelected();\n loadingRef.current = true;\n await loadMore();\n\n if (isAllRowsSelected) {\n table.toggleAllRowsSelected(true);\n }\n } catch (error) {\n console.error(error);\n } finally {\n loadingRef.current = false;\n }\n }\n }\n };\n\n let handleMouseLeave;\n\n if (meta.shouldPauseHoverState) {\n // sometimes the row's onMouseLeave doesn't trigger, this adds some extra redundancy\n handleMouseLeave = () => meta.setShouldPauseHoverState(false);\n }\n\n const className = cn(\n 'bg-white border border-grey-300 focus:yt-focus focus:border-blue-500 grid auto-rows-max overflow-auto relative rounded group',\n props.className\n );\n\n const enableSettingsButton = table.options.enableHiding || meta.enableColumnReordering;\n const hasInternalToolbar =\n enableSettingsButton ||\n meta.editMode.enableEditMode ||\n table.options.enableColumnFilters ||\n meta.enableRowDensity ||\n table.options.enableGlobalFilter;\n const hasToolbar = hasInternalToolbar || !!toolbarLeft || !toolbarRight;\n\n const hasFooters = React.useMemo(() => {\n const summaryIds = Object.keys(footers);\n const visibleIds = Object.keys(columnVisibility).filter(c => !columnVisibility[c]);\n return summaryIds.length && summaryIds.some(v => !visibleIds.includes(v));\n }, [footers, columnVisibility]);\n\n return (\n <div className=\"-m-0.5 flex h-full w-[calc(100%_+_0.25rem)] flex-col gap-4 overflow-hidden p-0.5\">\n {hasToolbar ? (\n <div className=\"flex flex-wrap gap-2\">\n {toolbarLeft}\n {hasInternalToolbar ? (\n <Group className=\"ml-auto flex-shrink-0 print:hidden\">\n {meta.editMode.enableEditMode ? (\n <EditModeButton\n ref={editButtonRef}\n table={table}\n tableRef={tableRef}\n scrollToIndex={virtualiser.scrollToIndex}\n />\n ) : null}\n {table.options.enableColumnFilters ? <FiltersButton length={length} table={table} /> : null}\n {toolbarRight}\n {meta.enableRowDensity ? <RowDensityButton table={table} /> : null}\n {enableSettingsButton ? <ColumnSettingsButton table={table} /> : null}\n {table.options.enableGlobalFilter ? (\n <Search\n disabled={meta.shouldDisableTableActions}\n onSearch={table.setGlobalFilter}\n value={globalFilter}\n />\n ) : null}\n </Group>\n ) : null}\n {/*<ShortcutsGuideButton table={table} />*/}\n </div>\n ) : null}\n <div\n className={className}\n data-taco=\"table2\"\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onMouseLeave={handleMouseLeave}\n onScroll={handleScroll}\n ref={tableRef}\n role=\"table\"\n style={{\n gridTemplateColumns,\n gridTemplateRows: rows.length ? undefined : '40px',\n // create a new stacking context so our internal z-indexes don't effect external components\n // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n opacity: 0.999,\n }}\n tabIndex={0}>\n <div className=\"contents\" data-taco=\"table2-header\" role=\"rowgroup\">\n {table.getHeaderGroups().map(headerGroup => (\n <div className=\"contents\" key={headerGroup.id} role=\"row\">\n {headerGroup.headers.map((header, columnIndex) => (\n <Header\n key={header.id}\n header={header}\n index={columnIndex}\n isLastColumn={columnIndex === headerGroup.headers.length - 1}\n scrolled={scrolled}\n table={table}\n tableRef={tableRef}\n />\n ))}\n </div>\n ))}\n </div>\n {rows.length ? (\n <div className=\"contents\" data-taco=\"table2-body\" role=\"rowgroup\">\n {virtualiserOffsets.top ? (\n <div style={{ height: virtualiserOffsets.top }} className=\"col-span-full\" />\n ) : null}\n {virtualiser.virtualItems.map(virtualRow => {\n const row = rows[virtualRow.index];\n\n return (\n <React.Fragment key={row.id}>\n <Row\n className=\"group/row contents\"\n onRowDrop={onRowDrop}\n row={row}\n rowIndex={virtualRow.index}\n table={table}>\n {row.getVisibleCells().map((cell, columnIndex) => (\n <Cell\n cell={cell}\n key={`${cell.id}_${cell.getValue()}`}\n index={columnIndex}\n isLastRow={virtualRow.index === rows.length - 1}\n rows={rows}\n rowIndex={virtualRow.index}\n scrolled={scrolled}\n scrollToIndex={virtualiser.scrollToIndex}\n scrollToOffset={virtualiser.scrollToOffset}\n table={table}\n tableRef={tableRef}\n />\n ))}\n </Row>\n {row.getIsExpanded() && expandedRowRenderer ? (\n <ExpandedRow index={virtualRow.index} setSize={setExpandedRowSizes}>\n {expandedRowRenderer(row.original)?.()}\n </ExpandedRow>\n ) : null}\n </React.Fragment>\n );\n })}\n {virtualiserOffsets.bottom ? (\n <div style={{ height: virtualiserOffsets.bottom }} className=\"col-span-full\" />\n ) : null}\n </div>\n ) : (\n <div className=\"col-span-full min-h-[theme(spacing.8)]\">{EmptyState ? <EmptyState /> : null}</div>\n )}\n {hasFooters ? (\n <div role=\"rowgroup\" className=\"contents\" data-taco=\"table2-footer\">\n {table.getFooterGroups().map(footerGroup => (\n <div key={footerGroup.id} role=\"row\" className=\"contents\">\n {footerGroup.headers.map((footer, cellIndex) => (\n <Footer key={footer.id} footer={footer} index={cellIndex} scrolled={scrolled} table={table}>\n {footers[footer.id]\n ? footers[footer.id](rows.map((row: TRow<TType>) => row.original[footer.id]))\n : null}\n </Footer>\n ))}\n </div>\n ))}\n </div>\n ) : null}\n </div>\n {!!_experimentalActionsForTable &&\n table.options.enableRowSelection &&\n (table.getIsSomeRowsSelected() || table.getIsAllRowsSelected()) ? (\n <BatchActionsMenu<TType>\n className=\"fixed-center-x bottom-0 z-50 mb-4 print:hidden\"\n actionsForTable={_experimentalActionsForTable}\n summary={_experimentalActionsForTableSummary}\n table={table}\n />\n ) : null}\n </div>\n );\n}) as React.ForwardRefExoticComponent<Table2Props<any>> &\n (<TType>(props: Table2Props<TType> & { ref?: React.Ref<Table2Ref> }) => JSX.Element);\n\nexport type ForwardedTable2WithStatics = React.ForwardRefExoticComponent<Table2Props<any>> & {\n Column: <TType>(props: Table2ColumnProps<TType>) => JSX.Element | null;\n} & (<TType>(props: Table2Props<TType> & { ref?: React.Ref<Table2Ref> }) => JSX.Element);\n\nconst Table2 = React.forwardRef(function Table2<TType = any>(props: Table2Props<TType>, ref: React.Ref<Table2Ref>) {\n const key = React.useMemo(() => String('tableKey_' + String(props.children)), [props.children]);\n return <BaseTable2 {...props} key={key} ref={ref} />;\n}) as ForwardedTable2WithStatics;\n\nTable2.Column = Column;\n\nexport { Table2 };\nexport type { Table2Props };\nexport type { Table2ColumnProps, Table2ActionProps, Table2RowActionRenderer, Table2Settings } from './types';\n"],"names":["Column","_","displayName","BaseTable2","React","forwardRef","props","ref","emptyState","EmptyState","expandedRowRenderer","length","data","loadMore","onRowClick","onRowDrop","toolbarLeft","toolbarRight","_experimentalActionsForTable","_experimentalActionsForTableSummary","tableRef","useMergedRef","timeoutIdRef","useRef","prevScrollY","rows","table","footers","useTable","children","meta","options","columnVisibility","columnOrder","globalFilter","getState","useEffect","current","instance","resetFiltering","resetColumnFilters","resetRowExpansion","resetExpanded","resetRowSelection","resetSorting","resetFocussableColumnIndexes","editMode","isEditing","clearTimeout","virtualiser","virtualiserOffsets","setExpandedRowSizes","useVirtualiser","gridTemplateColumns","useGridTemplate","editButtonRef","handleKeyDown","event","document","activeElement","key","preventDefault","ctrlKey","metaKey","setActiveRowIndex","scrollToOffset","moveToPreviousRow","nextIndex","setShouldPauseHoverState","scrollToIndex","totalSize","moveToNextRow","scrollTo","scrollHeight","canToggleRowExpansion","enableExpanding","activeRowIndex","toggleExpanded","original","enableRowSelection","toggleSelected","toggleAllRowsSelected","handleBlur","elementGainingFocus","relatedTarget","undefined","portalId","closest","id","currentTarget","querySelector","contains","setTimeout","parentRow","target","isNewFocussedElementInSameRow","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","scrolled","setScrolled","useState","loadingRef","handleScroll","scrollLeft","scrollY","scrollTop","isScrollingDown","scrolledPercentage","Math","round","clientHeight","isAllRowsSelected","getIsAllRowsSelected","error","console","handleMouseLeave","shouldPauseHoverState","className","cn","enableSettingsButton","enableHiding","enableColumnReordering","hasInternalToolbar","enableEditMode","enableColumnFilters","enableRowDensity","enableGlobalFilter","hasToolbar","hasFooters","useMemo","summaryIds","Object","keys","visibleIds","filter","c","some","v","includes","Group","EditModeButton","FiltersButton","RowDensityButton","ColumnSettingsButton","Search","disabled","shouldDisableTableActions","onSearch","setGlobalFilter","value","onBlur","onKeyDown","onMouseLeave","onScroll","role","style","gridTemplateRows","opacity","tabIndex","getHeaderGroups","map","headerGroup","headers","header","columnIndex","Header","index","isLastColumn","top","height","virtualItems","virtualRow","row","Fragment","Row","rowIndex","getVisibleCells","cell","Cell","getValue","isLastRow","getIsExpanded","ExpandedRow","setSize","bottom","getFooterGroups","footerGroup","footer","cellIndex","Footer","getIsSomeRowsSelected","BatchActionsMenu","actionsForTable","summary","Table2","String"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Table2.js","sources":["../../../../../../../src/components/Table2/Table2.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Row as TRow, TableMeta } from '@tanstack/react-table';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { Cell } from './components/column/Cell';\nimport { Header } from './components/column/Header';\nimport { Footer } from './components/column/Footer';\nimport { Table2Props, Table2ColumnProps } from './types';\nimport { useTable } from './hooks/useTable';\nimport { useVirtualiser } from './hooks/useVirtualiser';\nimport { Group } from '../Group/Group';\nimport { useGridTemplate } from './hooks/useGridTemplate';\nimport { RowDensityButton } from './components/RowDensityButton';\nimport { ColumnSettingsButton } from './components/ColumnSettingsButton';\nimport { ExpandedRow } from './components/row/ExpandedRow';\nimport { BatchActionsMenu } from './components/BatchActionsMenu';\nimport { Row } from './components/row/Row';\nimport { FiltersButton } from './components/filters/FiltersButton';\nimport { Search } from './components/Search';\nimport { EditModeButton } from './components/EditModeButton';\n\nexport type Table2Texts = {\n columns: {\n resize: {\n tooltip: string;\n };\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n menu: {\n hideColumn: string;\n freezeColumns: (count: number) => string;\n unfreezeColumns: string;\n };\n };\n columnSettings: {\n search: string;\n tooltip: string;\n button: string;\n noResults: string;\n };\n editing: {\n button: string;\n tooltip: string;\n tooltipDisabled: string;\n rowIndicator: {\n rowWillMove: string;\n rowWillBeHidden: string;\n rowWillMoveReasonSearch: string;\n rowWillMoveReasonFilter: string;\n rowWillMoveReasonSorting: string;\n };\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isOneOf: string;\n isNoneOf: string;\n isAllOf: string;\n isEmpty: string;\n isNotEmpty: string;\n };\n tooltip: string;\n total: string;\n };\n rowDensity: {\n tooltip: string;\n compact: string;\n normal: string;\n comfortable: string;\n spacious: string;\n };\n search: {\n placeholder: string;\n };\n shortcuts: {\n tooltip: string;\n search: string;\n filter: string;\n previousRow: string;\n nextRow: string;\n editCell: string;\n previousColumn: string;\n nextColumn: string;\n rowClick: string;\n selectRow: string;\n selectAllRows: string;\n expandRow: string;\n collapseRow: string;\n };\n};\n\nfunction Column<TType = any>(_: Table2ColumnProps<TType>) {\n return null;\n}\nColumn.displayName = 'Table2Column';\n\nexport type Table2Ref = HTMLDivElement & {\n instance: {\n resetFiltering: () => void;\n resetRowExpansion: () => void;\n resetRowSelection: () => void;\n resetSorting: () => void;\n };\n};\n\nconst BaseTable2 = React.forwardRef(function BaseTable2<TType = any>(props: Table2Props<TType>, ref: React.Ref<Table2Ref>) {\n // dom\n const {\n emptyState: EmptyState,\n expandedRowRenderer,\n length = props.data.length,\n loadMore,\n onRowClick,\n onRowDrop,\n toolbarLeft,\n toolbarRight,\n _experimentalActionsForTable,\n _experimentalActionsForTableSummary,\n } = props;\n const tableRef = useMergedRef<Table2Ref>(ref);\n const timeoutIdRef = React.useRef<NodeJS.Timeout>();\n const prevScrollY = React.useRef<number>(0);\n\n // react-table\n const { rows, table, footers } = useTable(props.children, props, tableRef);\n const meta = table.options.meta as TableMeta<TType>;\n\n const { columnVisibility, columnOrder, globalFilter } = table.getState();\n\n React.useEffect(() => {\n if (tableRef.current) {\n tableRef.current.instance = {\n resetFiltering: () => table.resetColumnFilters(),\n resetRowExpansion: () => table.resetExpanded(),\n resetRowSelection: () => table.resetRowSelection(),\n resetSorting: () => table.resetSorting(),\n };\n }\n }, [table, tableRef.current]);\n\n // If column visibility or order changes then we turn off the edit mode so that control indexes gets computed\n // when user turns on the editing mode again. This is a temporary solution to make sure the keyboard navigation\n // still keeps working on changes in column visibility, order, or both\n React.useEffect(() => {\n meta.resetFocussableColumnIndexes();\n }, [columnVisibility, columnOrder]);\n\n React.useEffect(() => {\n // Whenever edit mode is turned off we reset the focussableColumnIndexes ref to an empty array so that\n // we don't have stale values, in case column visibility or ordering changes\n if (!meta.editMode.isEditing) {\n meta.resetFocussableColumnIndexes();\n }\n }, [meta.editMode.isEditing]);\n\n React.useEffect(() => {\n return () => clearTimeout(timeoutIdRef.current);\n }, []);\n\n // virtualiser\n const { virtualiser, virtualiserOffsets, setExpandedRowSizes } = useVirtualiser({ rows, table }, tableRef);\n\n // css grid\n const gridTemplateColumns = useGridTemplate(table);\n\n // handlers\n const editButtonRef = React.useRef(null);\n\n // support grid like keyboard navigation between cells\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (document.activeElement === tableRef.current) {\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(0);\n virtualiser.scrollToOffset(0);\n } else {\n meta.moveToPreviousRow(rows, nextIndex => {\n meta.setShouldPauseHoverState(true);\n virtualiser.scrollToIndex(nextIndex - 1);\n });\n }\n\n return;\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(rows.length - 1);\n virtualiser.scrollToOffset(virtualiser.totalSize + 1);\n } else {\n meta.moveToNextRow(rows, nextIndex => {\n meta.setShouldPauseHoverState(true);\n\n // the virtualiser doesn't always scroll right to the bottom for the last row\n if (nextIndex === rows.length - 1) {\n tableRef.current?.scrollTo(0, tableRef.current.scrollHeight);\n } else {\n virtualiser.scrollToIndex(nextIndex + 2);\n }\n });\n }\n\n return;\n }\n\n const canToggleRowExpansion = table.options.enableExpanding;\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n if (canToggleRowExpansion) {\n rows[meta.activeRowIndex]?.toggleExpanded(false);\n }\n }\n return;\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n if (canToggleRowExpansion) {\n rows[meta?.activeRowIndex]?.toggleExpanded(true);\n }\n }\n\n return;\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n if (onRowClick) {\n onRowClick(rows[meta?.activeRowIndex].original);\n }\n\n return;\n }\n\n if (event.key === ' ') {\n event.preventDefault();\n\n if (table.options.enableRowSelection) {\n rows[meta.activeRowIndex]?.toggleSelected();\n }\n\n return;\n }\n\n if (event.ctrlKey || event.metaKey) {\n if (event.key === 'a' && table.options.enableRowSelection) {\n event.preventDefault();\n table.toggleAllRowsSelected();\n }\n\n return;\n }\n }\n };\n\n let handleBlur;\n\n if (meta.editMode.isEditing) {\n handleBlur = (event: React.FocusEvent) => {\n let elementGainingFocus = event.relatedTarget;\n\n if (elementGainingFocus === undefined) {\n return;\n }\n\n // we might be focusing on a select or a popover that was triggered from inside the table\n // so see if the element gaining focus is inside a portal and look up its controller\n const portalId = elementGainingFocus?.closest('[data-radix-popper-content-wrapper] > :first-child')?.id;\n\n if (portalId) {\n elementGainingFocus = event.currentTarget.querySelector(`[aria-controls=\"${portalId}\"]`) ?? event.relatedTarget;\n }\n\n if (!event.currentTarget?.contains(elementGainingFocus) && elementGainingFocus !== editButtonRef.current) {\n // When we call manually blur on control component while navigating to the next cell, then when this\n // handler is run, the related target is not the next control component and active element is null,\n // that's why we explictly need to check what's the next focussed element in order to figure out whether\n // we should disabled the sorting or not.\n timeoutIdRef.current = setTimeout(() => {\n const parentRow = event.target.closest('[role=\"row\"]');\n const isNewFocussedElementInSameRow = parentRow?.contains(document.activeElement);\n\n // When we manually call blur on control component and focus another component then\n // we have to make sure we\n if (meta.shouldPauseSortingAndFiltering && !isNewFocussedElementInSameRow) {\n // if client side - unpause sorting\n meta.setShouldPauseSortingAndFiltering(false);\n }\n });\n }\n };\n }\n\n // TODO: this can probably be extracted into a hook\n // we only show the pinned shadow on display columns when scrolling is active\n const [scrolled, setScrolled] = React.useState(false);\n\n // extract - infinite loading\n const loadingRef = React.useRef(false);\n\n const handleScroll = async (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.currentTarget.scrollLeft > 0 && !scrolled) {\n setScrolled(true);\n } else if (event.currentTarget.scrollLeft === 0 && scrolled) {\n setScrolled(false);\n } else if (typeof loadMore === 'function') {\n const scrollY = event.currentTarget.scrollTop;\n const isScrollingDown = scrollY > prevScrollY.current;\n prevScrollY.current = scrollY;\n\n const scrolledPercentage = Math.round(\n (scrollY / (event.currentTarget.scrollHeight - event.currentTarget.clientHeight)) * 100\n );\n\n if (isScrollingDown && !loadingRef.current && scrolledPercentage >= 80) {\n try {\n const isAllRowsSelected = table.getIsAllRowsSelected();\n loadingRef.current = true;\n await loadMore();\n\n if (isAllRowsSelected) {\n table.toggleAllRowsSelected(true);\n }\n } catch (error) {\n console.error(error);\n } finally {\n loadingRef.current = false;\n }\n }\n }\n };\n\n let handleMouseLeave;\n\n if (meta.shouldPauseHoverState) {\n // sometimes the row's onMouseLeave doesn't trigger, this adds some extra redundancy\n handleMouseLeave = () => meta.setShouldPauseHoverState(false);\n }\n\n const className = cn(\n 'bg-white border border-grey-300 focus:yt-focus focus:border-blue-500 grid auto-rows-max overflow-auto relative rounded group',\n props.className\n );\n\n const enableSettingsButton = table.options.enableHiding || meta.enableColumnReordering;\n const hasInternalToolbar =\n enableSettingsButton ||\n meta.editMode.enableEditMode ||\n table.options.enableColumnFilters ||\n meta.enableRowDensity ||\n table.options.enableGlobalFilter;\n const hasToolbar = hasInternalToolbar || !!toolbarLeft || !toolbarRight;\n\n const hasFooters = React.useMemo(() => {\n const summaryIds = Object.keys(footers);\n const visibleIds = Object.keys(columnVisibility).filter(c => !columnVisibility[c]);\n return summaryIds.length && summaryIds.some(v => !visibleIds.includes(v));\n }, [footers, columnVisibility]);\n\n return (\n <div className=\"-m-0.5 flex h-full w-[calc(100%_+_0.25rem)] flex-col gap-4 overflow-hidden p-0.5\">\n {hasToolbar ? (\n <div className=\"flex flex-wrap gap-2\">\n {toolbarLeft}\n {hasInternalToolbar ? (\n <Group className=\"ml-auto flex-shrink-0 print:hidden\">\n {meta.editMode.enableEditMode ? (\n <EditModeButton\n ref={editButtonRef}\n table={table}\n tableRef={tableRef}\n scrollToIndex={virtualiser.scrollToIndex}\n />\n ) : null}\n {table.options.enableColumnFilters ? <FiltersButton length={length} table={table} /> : null}\n {toolbarRight}\n {meta.enableRowDensity ? <RowDensityButton table={table} /> : null}\n {enableSettingsButton ? <ColumnSettingsButton table={table} /> : null}\n {table.options.enableGlobalFilter ? (\n <Search\n disabled={meta.shouldDisableTableActions}\n onSearch={table.setGlobalFilter}\n value={globalFilter}\n />\n ) : null}\n </Group>\n ) : null}\n {/*<ShortcutsGuideButton table={table} />*/}\n </div>\n ) : null}\n <div\n className={className}\n data-taco=\"table2\"\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onMouseLeave={handleMouseLeave}\n onScroll={handleScroll}\n ref={tableRef}\n role=\"table\"\n style={{\n gridTemplateColumns,\n gridTemplateRows: rows.length ? undefined : '40px',\n // create a new stacking context so our internal z-indexes don't effect external components\n // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n opacity: 0.999,\n }}\n tabIndex={0}>\n <div className=\"contents\" data-taco=\"table2-header\" role=\"rowgroup\">\n {table.getHeaderGroups().map(headerGroup => (\n <div className=\"contents\" key={headerGroup.id} role=\"row\">\n {headerGroup.headers.map((header, columnIndex) => (\n <Header\n key={header.id}\n header={header}\n index={columnIndex}\n isLastColumn={columnIndex === headerGroup.headers.length - 1}\n scrolled={scrolled}\n table={table}\n tableRef={tableRef}\n />\n ))}\n </div>\n ))}\n </div>\n {rows.length ? (\n <div className=\"contents\" data-taco=\"table2-body\" role=\"rowgroup\">\n {virtualiserOffsets.top ? (\n <div style={{ height: virtualiserOffsets.top }} className=\"col-span-full\" />\n ) : null}\n {virtualiser.virtualItems.map(virtualRow => {\n const row = rows[virtualRow.index];\n\n return (\n <React.Fragment key={row.id}>\n <Row\n className=\"group/row contents\"\n onRowDrop={onRowDrop}\n row={row}\n rowIndex={virtualRow.index}\n table={table}>\n {row.getVisibleCells().map((cell, columnIndex) => (\n <Cell\n cell={cell}\n key={`${cell.id}_${cell.getValue()}`}\n index={columnIndex}\n isLastRow={virtualRow.index === rows.length - 1}\n rows={rows}\n rowIndex={virtualRow.index}\n scrolled={scrolled}\n scrollToIndex={virtualiser.scrollToIndex}\n scrollToOffset={virtualiser.scrollToOffset}\n table={table}\n tableRef={tableRef}\n />\n ))}\n </Row>\n {row.getIsExpanded() && expandedRowRenderer ? (\n <ExpandedRow index={virtualRow.index} setSize={setExpandedRowSizes}>\n {expandedRowRenderer(row.original)?.()}\n </ExpandedRow>\n ) : null}\n </React.Fragment>\n );\n })}\n {virtualiserOffsets.bottom ? (\n <div style={{ height: virtualiserOffsets.bottom }} className=\"col-span-full\" />\n ) : null}\n </div>\n ) : (\n <div className=\"col-span-full min-h-[theme(spacing.8)]\">{EmptyState ? <EmptyState /> : null}</div>\n )}\n {hasFooters ? (\n <div role=\"rowgroup\" className=\"contents\" data-taco=\"table2-footer\">\n {table.getFooterGroups().map(footerGroup => (\n <div key={footerGroup.id} role=\"row\" className=\"contents\">\n {footerGroup.headers.map((footer, cellIndex) => (\n <Footer key={footer.id} footer={footer} index={cellIndex} scrolled={scrolled} table={table}>\n {footers[footer.id]\n ? footers[footer.id](rows.map((row: TRow<TType>) => row.original[footer.id]))\n : null}\n </Footer>\n ))}\n </div>\n ))}\n </div>\n ) : null}\n </div>\n {!!_experimentalActionsForTable &&\n table.options.enableRowSelection &&\n (table.getIsSomeRowsSelected() || table.getIsAllRowsSelected()) ? (\n <BatchActionsMenu<TType>\n className=\"fixed-center-x bottom-0 z-50 mb-4 print:hidden\"\n actionsForTable={_experimentalActionsForTable}\n summary={_experimentalActionsForTableSummary}\n table={table}\n />\n ) : null}\n </div>\n );\n}) as React.ForwardRefExoticComponent<Table2Props<any>> &\n (<TType>(props: Table2Props<TType> & { ref?: React.Ref<Table2Ref> }) => JSX.Element);\n\nexport type ForwardedTable2WithStatics = React.ForwardRefExoticComponent<Table2Props<any>> & {\n Column: <TType>(props: Table2ColumnProps<TType>) => JSX.Element | null;\n} & (<TType>(props: Table2Props<TType> & { ref?: React.Ref<Table2Ref> }) => JSX.Element);\n\nconst Table2 = React.forwardRef(function Table2<TType = any>(props: Table2Props<TType>, ref: React.Ref<Table2Ref>) {\n const key = React.useMemo(() => String('tableKey_' + String(props.children)), [props.children]);\n return <BaseTable2 {...props} key={key} ref={ref} />;\n}) as ForwardedTable2WithStatics;\n\nTable2.Column = Column;\n\nexport { Table2 };\nexport type { Table2Props };\nexport type { Table2ColumnProps, Table2ActionProps, Table2RowActionRenderer, Table2Settings } from './types';\n"],"names":["Column","_","displayName","BaseTable2","React","forwardRef","props","ref","emptyState","EmptyState","expandedRowRenderer","length","data","loadMore","onRowClick","onRowDrop","toolbarLeft","toolbarRight","_experimentalActionsForTable","_experimentalActionsForTableSummary","tableRef","useMergedRef","timeoutIdRef","useRef","prevScrollY","rows","table","footers","useTable","children","meta","options","columnVisibility","columnOrder","globalFilter","getState","useEffect","current","instance","resetFiltering","resetColumnFilters","resetRowExpansion","resetExpanded","resetRowSelection","resetSorting","resetFocussableColumnIndexes","editMode","isEditing","clearTimeout","virtualiser","virtualiserOffsets","setExpandedRowSizes","useVirtualiser","gridTemplateColumns","useGridTemplate","editButtonRef","handleKeyDown","event","document","activeElement","key","preventDefault","ctrlKey","metaKey","setActiveRowIndex","scrollToOffset","moveToPreviousRow","nextIndex","setShouldPauseHoverState","scrollToIndex","totalSize","moveToNextRow","scrollTo","scrollHeight","canToggleRowExpansion","enableExpanding","activeRowIndex","toggleExpanded","original","enableRowSelection","toggleSelected","toggleAllRowsSelected","handleBlur","elementGainingFocus","relatedTarget","undefined","portalId","closest","id","currentTarget","querySelector","contains","setTimeout","parentRow","target","isNewFocussedElementInSameRow","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","scrolled","setScrolled","useState","loadingRef","handleScroll","scrollLeft","scrollY","scrollTop","isScrollingDown","scrolledPercentage","Math","round","clientHeight","isAllRowsSelected","getIsAllRowsSelected","error","console","handleMouseLeave","shouldPauseHoverState","className","cn","enableSettingsButton","enableHiding","enableColumnReordering","hasInternalToolbar","enableEditMode","enableColumnFilters","enableRowDensity","enableGlobalFilter","hasToolbar","hasFooters","useMemo","summaryIds","Object","keys","visibleIds","filter","c","some","v","includes","Group","EditModeButton","FiltersButton","RowDensityButton","ColumnSettingsButton","Search","disabled","shouldDisableTableActions","onSearch","setGlobalFilter","value","onBlur","onKeyDown","onMouseLeave","onScroll","role","style","gridTemplateRows","opacity","tabIndex","getHeaderGroups","map","headerGroup","headers","header","columnIndex","Header","index","isLastColumn","top","height","virtualItems","virtualRow","row","Fragment","Row","rowIndex","getVisibleCells","cell","Cell","getValue","isLastRow","getIsExpanded","ExpandedRow","setSize","bottom","getFooterGroups","footerGroup","footer","cellIndex","Footer","getIsSomeRowsSelected","BatchActionsMenu","actionsForTable","summary","Table2","String"],"mappings":"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"}
|