@scbt-ecom/ui 0.95.3 → 0.95.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/shared/ui/formElements/uncontrolled/maskInput/MaskInput.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/maskInput/MaskInput.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/select/Select.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/select/Select.js.map +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/select/ui/SelectItem.js +1 -1
- package/dist/lib/shared/ui/formElements/uncontrolled/select/ui/SelectItem.js.map +1 -1
- package/dist/lib/widgets/model/helpers.js +2 -2
- package/dist/lib/widgets/model/helpers.js.map +1 -1
- package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js +1 -1
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +1 -1
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js.map +1 -1
- package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +1 -1
- package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js.map +1 -1
- package/dist/node_modules/use-mask-input/dist/index.js +14 -0
- package/dist/node_modules/use-mask-input/dist/index.js.map +1 -0
- package/dist/stats.html +1 -1
- package/package.json +5 -4
- package/dist/_virtual/use-sync-external-store-with-selector.production.js +0 -2
- package/dist/_virtual/use-sync-external-store-with-selector.production.js.map +0 -1
- package/dist/_virtual/with-selector.js +0 -2
- package/dist/_virtual/with-selector.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/combobox/combobox-machine-glue.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/components/combobox/combobox-machine-glue.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/combobox/combobox-machine.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/components/combobox/combobox-machine.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/combobox/combobox.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/components/combobox/combobox.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/description/description.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/components/description/description.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/keyboard.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/components/keyboard.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/label/label.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/components/label/label.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/mouse.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/components/mouse.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/portal/portal.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/components/portal/portal.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-active-press.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-active-press.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-by-comparator.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-by-comparator.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-controllable.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-controllable.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-default-value.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-default-value.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-disposables.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-disposables.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-document-event.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-document-event.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-element-size.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-element-size.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-event-listener.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-event-listener.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-event.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-event.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-flags.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-flags.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-inert-others.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-inert-others.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-is-top-layer.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-is-top-layer.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-latest-value.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-latest-value.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-on-disappear.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-on-disappear.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-on-unmount.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-on-unmount.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-outside-click.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-outside-click.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-owner.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-owner.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-quick-release.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-quick-release.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-refocusable-input.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-refocusable-input.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-scroll-lock.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-scroll-lock.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-store.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-store.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-tracked-pointer.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-tracked-pointer.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-transition.js +0 -3
- package/dist/node_modules/@headlessui/react/dist/hooks/use-transition.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-tree-walker.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-tree-walker.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-watch.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-watch.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-window-event.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/hooks/use-window-event.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/internal/disabled.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/internal/disabled.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/internal/floating.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/internal/floating.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/internal/form-fields.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/internal/form-fields.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/internal/frozen.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/internal/frozen.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/internal/hidden.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/internal/hidden.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/internal/id.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/internal/id.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/internal/open-closed.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/internal/open-closed.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/internal/portal-force-root.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/internal/portal-force-root.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/machine.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/machine.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/machines/stack-machine.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/machines/stack-machine.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/react-glue.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/react-glue.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/active-element-history.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/active-element-history.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/bugs.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/bugs.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/calculate-active-index.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/calculate-active-index.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/class-names.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/class-names.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/default-map.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/default-map.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/disposables.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/disposables.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/document-ready.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/document-ready.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/dom.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/dom.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/env.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/env.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/focus-management.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/focus-management.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/form.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/form.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/match.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/match.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/micro-task.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/micro-task.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/owner.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/owner.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/platform.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/platform.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/render.js +0 -5
- package/dist/node_modules/@headlessui/react/dist/utils/render.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/store.js +0 -2
- package/dist/node_modules/@headlessui/react/dist/utils/store.js.map +0 -1
- package/dist/node_modules/@headlessui/react/node_modules/@floating-ui/react/dist/floating-ui.react.js +0 -2
- package/dist/node_modules/@headlessui/react/node_modules/@floating-ui/react/dist/floating-ui.react.js.map +0 -1
- package/dist/node_modules/@headlessui/react/node_modules/@floating-ui/react/dist/floating-ui.react.utils.js +0 -2
- package/dist/node_modules/@headlessui/react/node_modules/@floating-ui/react/dist/floating-ui.react.utils.js.map +0 -1
- package/dist/node_modules/@react-aria/focus/dist/useFocusRing.js +0 -2
- package/dist/node_modules/@react-aria/focus/dist/useFocusRing.js.map +0 -1
- package/dist/node_modules/@react-aria/interactions/dist/useFocus.js +0 -2
- package/dist/node_modules/@react-aria/interactions/dist/useFocus.js.map +0 -1
- package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.js +0 -2
- package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.js.map +0 -1
- package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.js +0 -2
- package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.js.map +0 -1
- package/dist/node_modules/@react-aria/interactions/dist/useHover.js +0 -2
- package/dist/node_modules/@react-aria/interactions/dist/useHover.js.map +0 -1
- package/dist/node_modules/@react-aria/interactions/dist/utils.js +0 -2
- package/dist/node_modules/@react-aria/interactions/dist/utils.js.map +0 -1
- package/dist/node_modules/@react-aria/utils/dist/DOMFunctions.js +0 -2
- package/dist/node_modules/@react-aria/utils/dist/DOMFunctions.js.map +0 -1
- package/dist/node_modules/@react-aria/utils/dist/domHelpers.js +0 -2
- package/dist/node_modules/@react-aria/utils/dist/domHelpers.js.map +0 -1
- package/dist/node_modules/@react-aria/utils/dist/isVirtualEvent.js +0 -2
- package/dist/node_modules/@react-aria/utils/dist/isVirtualEvent.js.map +0 -1
- package/dist/node_modules/@react-aria/utils/dist/platform.js +0 -2
- package/dist/node_modules/@react-aria/utils/dist/platform.js.map +0 -1
- package/dist/node_modules/@react-aria/utils/dist/useEffectEvent.js +0 -2
- package/dist/node_modules/@react-aria/utils/dist/useEffectEvent.js.map +0 -1
- package/dist/node_modules/@react-aria/utils/dist/useGlobalListeners.js +0 -2
- package/dist/node_modules/@react-aria/utils/dist/useGlobalListeners.js.map +0 -1
- package/dist/node_modules/@react-aria/utils/dist/useLayoutEffect.js +0 -2
- package/dist/node_modules/@react-aria/utils/dist/useLayoutEffect.js.map +0 -1
- package/dist/node_modules/@react-stately/flags/dist/import.js +0 -2
- package/dist/node_modules/@react-stately/flags/dist/import.js.map +0 -1
- package/dist/node_modules/@tanstack/react-virtual/dist/esm/index.js +0 -2
- package/dist/node_modules/@tanstack/react-virtual/dist/esm/index.js.map +0 -1
- package/dist/node_modules/@tanstack/virtual-core/dist/esm/index.js +0 -2
- package/dist/node_modules/@tanstack/virtual-core/dist/esm/index.js.map +0 -1
- package/dist/node_modules/@tanstack/virtual-core/dist/esm/utils.js +0 -5
- package/dist/node_modules/@tanstack/virtual-core/dist/esm/utils.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js +0 -10
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/with-selector.js +0 -2
- package/dist/node_modules/use-sync-external-store/with-selector.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as s}from"react/jsx-runtime";import{forwardRef as f}from"react";import{useInputMask as m}from"use-mask-input";import{InputBase as n}from"../input/Input.js";import{defaultDefinitions as p}from"./model/mask/utils.js";import{mergeRefs as a}from"../../../../utils/mergeRefs.js";const u=f(({mask:o,externalMaskDefinitions:r,...t},e)=>{const i=m({mask:o,options:{jitMasking:!1,definitions:{...p,...r}}});return s(n,{ref:a(i,e),...t})});u.displayName="MaskInput";export{u as MaskInput};
|
|
1
|
+
import{jsx as s}from"react/jsx-runtime";import{forwardRef as f}from"react";import{useInputMask as m}from"../../../../../../node_modules/use-mask-input/dist/index.js";import{InputBase as n}from"../input/Input.js";import{defaultDefinitions as p}from"./model/mask/utils.js";import{mergeRefs as a}from"../../../../utils/mergeRefs.js";const u=f(({mask:o,externalMaskDefinitions:r,...t},e)=>{const i=m({mask:o,options:{jitMasking:!1,definitions:{...p,...r}}});return s(n,{ref:a(i,e),...t})});u.displayName="MaskInput";export{u as MaskInput};
|
|
2
2
|
//# sourceMappingURL=MaskInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaskInput.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/maskInput/MaskInput.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { useInputMask } from 'use-mask-input'\nimport { InputBase, type InputBaseProps } from '../input'\nimport { defaultDefinitions } from './model/mask'\nimport { mergeRefs } from '$/shared/utils'\n\ntype Validator = (char: string) => boolean\ntype Casing = 'upper' | 'lower' | 'title'\nexport type Definition = {\n validator: string | Validator\n casing?: Casing\n cardinality?: number\n placeholder?: string\n definitionSymbol?: string\n}\n\nexport type MaskInputProps = InputBaseProps & {\n /**\n * маска, по которой будет определяться валидация символов\n */\n mask:\n | 'datetime'\n | 'email'\n | 'numeric'\n | 'currency'\n | 'decimal'\n | 'integer'\n | 'percentage'\n | 'url'\n | 'ip'\n | 'mac'\n | 'ssn'\n | 'brl-currency'\n | 'cpf'\n | 'cnpj'\n | (string & {})\n | (string[] & {})\n | null\n /**\n * дополнительные валидаторы спец символов в маске\n */\n externalMaskDefinitions?: Record<string, Definition>\n}\n\n/**\n * Компонент маски очень умный, умеет обрабатывать специальные символы\n * в том порядке, который определён маской\n * @typeParam `#` позволяет вводить только числа (regexp: `/\\d/g`)\n * @typeParam `A` позволяет вводить любые буквы русского и английского алфавита (regexp: `/[A-Za-zА-Яа-я]/g`)\n * @typeParam `C` позволяет вводить любые буквы, которые определены для использования в гос номерах автомобилей (regexp: `/([АВЕКМНОРСТУХавекмнорстух])/`)\n */\nexport const MaskInput = forwardRef<HTMLInputElement, MaskInputProps>(({ mask, externalMaskDefinitions, ...props }, ref) => {\n const maskedRef = useInputMask({\n mask,\n options: {\n jitMasking: false,\n definitions: {\n ...defaultDefinitions,\n ...externalMaskDefinitions\n }\n }\n })\n\n return <InputBase ref={mergeRefs(maskedRef, ref)} {...props} />\n})\nMaskInput.displayName = 'MaskInput'\n"],"names":["MaskInput","forwardRef","mask","externalMaskDefinitions","props","ref","maskedRef","useInputMask","defaultDefinitions","jsx","InputBase","mergeRefs"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MaskInput.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/maskInput/MaskInput.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { useInputMask } from 'use-mask-input'\nimport { InputBase, type InputBaseProps } from '../input'\nimport { defaultDefinitions } from './model/mask'\nimport { mergeRefs } from '$/shared/utils'\n\ntype Validator = (char: string) => boolean\ntype Casing = 'upper' | 'lower' | 'title'\nexport type Definition = {\n validator: string | Validator\n casing?: Casing\n cardinality?: number\n placeholder?: string\n definitionSymbol?: string\n}\n\nexport type MaskInputProps = InputBaseProps & {\n /**\n * маска, по которой будет определяться валидация символов\n */\n mask:\n | 'datetime'\n | 'email'\n | 'numeric'\n | 'currency'\n | 'decimal'\n | 'integer'\n | 'percentage'\n | 'url'\n | 'ip'\n | 'mac'\n | 'ssn'\n | 'brl-currency'\n | 'cpf'\n | 'cnpj'\n | (string & {})\n | (string[] & {})\n | null\n /**\n * дополнительные валидаторы спец символов в маске\n */\n externalMaskDefinitions?: Record<string, Definition>\n}\n\n/**\n * Компонент маски очень умный, умеет обрабатывать специальные символы\n * в том порядке, который определён маской\n * @typeParam `#` позволяет вводить только числа (regexp: `/\\d/g`)\n * @typeParam `A` позволяет вводить любые буквы русского и английского алфавита (regexp: `/[A-Za-zА-Яа-я]/g`)\n * @typeParam `C` позволяет вводить любые буквы, которые определены для использования в гос номерах автомобилей (regexp: `/([АВЕКМНОРСТУХавекмнорстух])/`)\n */\nexport const MaskInput = forwardRef<HTMLInputElement, MaskInputProps>(({ mask, externalMaskDefinitions, ...props }, ref) => {\n const maskedRef = useInputMask({\n mask,\n options: {\n jitMasking: false,\n definitions: {\n ...defaultDefinitions,\n ...externalMaskDefinitions\n }\n }\n })\n\n return <InputBase ref={mergeRefs(maskedRef, ref)} {...props} />\n})\nMaskInput.displayName = 'MaskInput'\n"],"names":["MaskInput","forwardRef","mask","externalMaskDefinitions","props","ref","maskedRef","useInputMask","defaultDefinitions","jsx","InputBase","mergeRefs"],"mappings":"0UAmDO,MAAMA,EAAYC,EAA6C,CAAC,CAAE,KAAAC,EAAM,wBAAAC,EAAyB,GAAGC,CAAA,EAASC,IAAQ,CAC1H,MAAMC,EAAYC,EAAa,CAC7B,KAAAL,EACA,QAAS,CACP,WAAY,GACZ,YAAa,CACX,GAAGM,EACH,GAAGL,CAAA,CACL,CACF,CACD,EAED,OAAOM,EAACC,GAAU,IAAKC,EAAUL,EAAWD,CAAG,EAAI,GAAGD,EAAO,CAC/D,CAAC,EACDJ,EAAU,YAAc"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as i,jsxs as I,Fragment as
|
|
1
|
+
import{jsx as i,jsxs as I,Fragment as G}from"react/jsx-runtime";import{forwardRef as J,useRef as L}from"react";import{useFloating as Q}from"../../../../../../node_modules/@floating-ui/react/dist/floating-ui.react.js";import{Combobox as W,ComboboxButton as N,ComboboxInput as X,ComboboxOptions as Y}from"@headlessui/react";import{useSelectController as Z}from"./hooks/useSelectController.js";import{SelectItem as u}from"./ui/SelectItem.js";import{cn as f}from"../../../../utils/cn.js";import{mergeRefs as M}from"../../../../utils/mergeRefs.js";import"../../../button/Button.js";import"../../../buttonIcon/ButtonIcon.js";import"../../../calendar/Calendar.js";import"../../../calendar/model/utils.js";import"../../../accordion/Accordion.js";import"react-dom";import"../../../modal/ui/IframeModalContent.js";import"../../../../../../node_modules/react-hot-toast/dist/index.js";import{Icon as x}from"../../../icon/Icon.js";import"../../../table/ui/primitives/Primitives.js";import"../../../carousel/ui/CarouselContent.js";import"../../../slot/Slot.js";import"../autocomplete/Autocomplete.js";import"../checkbox/Checkbox.js";import"../../../dropdownList/ui/dropdownItem/DropdownItem.js";import{InputBase as H}from"../input/Input.js";import"../dayPicker/DayPicker.js";import"../inputOtp/InputOtpBase.js";import"../maskInput/MaskInput.js";import"../radio/RadioGroup.js";import"../radio/ui/RadioItem.js";import"../slider/SliderBase.js";import"../switch/Switch.js";import"../textarea/Textarea.js";import"../uploader/UploaderBase.js";import"../../controlled/editor/ui/Editor.js";import"../../controlled/input/MaskInputControl.js";import{autoUpdate as oo}from"../../../../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.js";import{flip as to,offset as io}from"../../../../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js";const mo=4,qo=J(({label:_,invalid:l,isMulti:m=!1,isSearchable:p,options:A,classes:D,displayValue:r,value:g,onChange:E,attachmentProps:j,virtual:d=!1,filterDisabled:k=!1,inputValue:s,onInputChange:c,externalHandlers:o,disabled:z,emptyList:h,reset:y,...S},T)=>{const{root:K,list:O,...a}=D||{},{refs:b,floatingStyles:U}=Q({placement:"bottom-start",strategy:"absolute",middleware:[to({boundary:"clippingAncestors",crossAxis:!1}),io(mo)],whileElementsMounted:oo}),w=L(null),{options:n,inputValue:C,onValueChange:V,onInputValueChange:v,selectDisplayValue:F}=Z({options:A,isSearchable:p,displayValue:r,onChange:E,filterDisabled:k,externalInputValue:s,externalOnInputChange:c,externalHandlers:o});return i(W,{...S,virtual:d?{options:n}:void 0,by:"value",onBlur:o==null?void 0:o.onBlur,onFocus:o==null?void 0:o.onFocus,onClick:o==null?void 0:o.onClick,value:g||(m?[]:""),onChange:V,multiple:m,disabled:z,"aria-invalid":l,children:({disabled:$,open:R,value:B})=>{var P;const q=()=>m&&p?F(B):p?C:F(B);return I("div",{ref:w,className:f("relative w-full",K),children:[i(N,{className:"w-full",children:i(X,{ref:M(T,b.setReference),"data-test-id":"select-input",as:H,label:_,"aria-haspopup":"listbox",ariaAutocomplete:"inline","aria-expanded":R,disabled:$,readOnly:!p,value:s||q(),autoComplete:"off",onKeyDown:t=>{t.stopPropagation(),t.nativeEvent.stopPropagation()},onChange:t=>{const{value:e}=t.target;p&&(c&&c(e),o!=null&&o.onInputChange&&o.onInputChange(e),v&&v(t))},invalid:l,classes:{input:m||!p?"cursor-pointer":void 0},attachmentProps:{icon:i(N,{as:"span",children:i(x,{name:"arrows/arrowRight",className:f("size-6 rotate-90 text-color-blue-grey-600 duration-100",{"-rotate-90":R})})}),...j}})}),i(Y,{portal:!0,"data-test-id":"select-list",ref:b.setFloating,as:"ul",style:{...U,width:(P=w.current)==null?void 0:P.getBoundingClientRect().width},className:f("customScrollbar-y z-10 mt-1","max-h-[264px] w-full overflow-y-auto bg-color-white","rounded-md p-1 shadow-[0_8px_20px_0px_rgba(41,41,41,0.08)]",O),children:d?({option:t})=>i(u,{option:t,isMulti:m,classes:{item:"w-[calc(100%-16px)]",...a},displayValue:r,motionProps:{initial:{opacity:0},animate:{opacity:1}}},t.value):n.length>0?I(G,{children:[y&&!m&&i(u,{"data-test-id":"select-item-empty",option:{value:null,label:y},isMulti:m,classes:a,displayValue:r,motionProps:{initial:{opacity:0},animate:{opacity:1}}}),n.map((t,e)=>i(u,{"data-test-id":`select-item-${e}`,option:t,isMulti:m,classes:a,displayValue:r,motionProps:{initial:{opacity:0},animate:{opacity:1}}},t.value))]}):h?h(s||C):i("p",{className:"py-4 text-center align-middle",children:"Ничего не найдено"})})]})}})});export{qo as SelectBase};
|
|
2
2
|
//# sourceMappingURL=Select.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/select/Select.tsx"],"sourcesContent":["import { forwardRef, useRef } from 'react'\nimport { autoUpdate, flip, offset, useFloating } from '@floating-ui/react'\nimport { Combobox, ComboboxButton, ComboboxInput, ComboboxOptions, type ComboboxProps } from '@headlessui/react'\nimport { useSelectController } from './hooks'\nimport { type SelectItemOption } from './model'\nimport { SelectItem, type SelectItemProps } from './ui'\nimport { type DeepPartial } from '$/shared/types'\nimport { Icon, InputBase } from '$/shared/ui'\nimport type { FieldAttachment } from '$/shared/ui/formElements/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\ntype FieldAttachmentProps = React.ComponentPropsWithoutRef<typeof FieldAttachment>\n\nexport type SelectClasses = SelectItemProps['classes'] & {\n root?: string\n list?: string\n}\n\nexport type ExternalHandlers = {\n onChange?: (value?: SelectItemOption | SelectItemOption[]) => void\n onClick?: (event: React.MouseEvent<HTMLElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLElement>) => void\n onInputChange?: (value: string) => void\n}\n\nexport type SelectBaseProps<Multi extends boolean> = Omit<\n ComboboxProps<SelectItemOption, Multi, 'li'>,\n 'multiple' | 'onChange' | 'by' | 'className' | 'virtual'\n> & {\n /**\n * Отображаемый лейбл\n */\n label: string\n /**\n * Поддержка множественного выбора\n */\n isMulti?: Multi\n /**\n * Пометить поле как не валидное\n */\n invalid?: boolean\n /**\n * Свойство управляющее поиском\n */\n isSearchable?: boolean\n /**\n * Список отображаемых значений\n */\n options: SelectItemOption[]\n /**\n * Дополнительные стили каждого внутреннего элемента\n */\n classes?: SelectClasses\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: SelectItemOption) => string\n /**\n * Функция для изменения значения\n */\n onChange?: (value: (Multi extends true ? SelectItemOption[] : SelectItemOption) | undefined) => void\n /**\n * Функция для изменения значения поиска\n */\n onInputChange?: (value: string) => void\n /**\n * Значение инпута\n */\n inputValue?: string\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<FieldAttachmentProps>\n /**\n * Включение виртуализации списка\n */\n virtual?: boolean\n /**\n * Свойство для выключения фильтрации по поиску\n */\n filterDisabled?: boolean\n /**\n * Внешние handlers которые можно прокинуть из вне\n */\n externalHandlers?: ExternalHandlers\n /**\n * Кастомизация отображения текста при пустом списке\n */\n emptyList?: (query?: string) => React.ReactNode\n /**\n * Добавляет option который, позволяет очистить значение селекта\n */\n reset?: string\n}\n\nconst LIST_OFFSET = 4\n\nexport const SelectBase = forwardRef<HTMLInputElement, SelectBaseProps<boolean>>(\n (\n {\n label,\n invalid,\n isMulti = false,\n isSearchable,\n options: initialOptions,\n classes,\n displayValue,\n value,\n onChange,\n attachmentProps,\n virtual = false,\n filterDisabled = false,\n inputValue: externalInputValue,\n onInputChange: externalOnInputChange,\n externalHandlers,\n disabled,\n emptyList,\n reset,\n ...props\n },\n ref\n ) => {\n const { root, list, ...innerClasses } = classes || {}\n\n const { refs, floatingStyles } = useFloating({\n placement: 'bottom-start',\n strategy: 'absolute',\n middleware: [\n flip({\n boundary: 'clippingAncestors',\n crossAxis: false\n }),\n offset(LIST_OFFSET)\n ],\n whileElementsMounted: autoUpdate\n })\n\n const triggerRef = useRef<HTMLDivElement>(null)\n\n const { options, inputValue, onValueChange, onInputValueChange, selectDisplayValue } = useSelectController({\n options: initialOptions,\n isSearchable,\n isMulti,\n displayValue,\n onChange,\n filterDisabled,\n externalInputValue,\n externalOnInputChange,\n externalHandlers\n })\n\n return (\n <Combobox\n {...props}\n virtual={\n virtual\n ? {\n options\n }\n : undefined\n }\n // @ts-expect-error headless ui issue\n by='value'\n onBlur={externalHandlers?.onBlur}\n onFocus={externalHandlers?.onFocus}\n onClick={externalHandlers?.onClick}\n value={(value ? value : isMulti ? [] : '') as typeof value}\n onChange={onValueChange}\n multiple={isMulti}\n // immediate\n disabled={disabled}\n aria-invalid={invalid}\n >\n {({ disabled, open, value }) => {\n const getDisplayValue = () => {\n if (isMulti && isSearchable) {\n return selectDisplayValue(value)\n } else if (isSearchable) {\n return inputValue\n } else {\n return selectDisplayValue(value)\n }\n }\n\n return (\n <div ref={triggerRef} className={cn('relative w-full', root)}>\n <ComboboxButton className='w-full'>\n <ComboboxInput\n // @ts-expect-error asdf\n ref={mergeRefs(ref, refs.setReference)}\n data-test-id='select-input'\n as={InputBase}\n label={label}\n aria-haspopup='listbox'\n ariaAutocomplete='inline'\n aria-expanded={open}\n disabled={disabled}\n readOnly={!isSearchable}\n value={externalInputValue || getDisplayValue()}\n autoComplete='off'\n onKeyDown={(event) => {\n event.stopPropagation()\n event.nativeEvent.stopPropagation()\n }}\n onChange={(event) => {\n const { value } = event.target\n\n if (isSearchable) {\n if (externalOnInputChange) externalOnInputChange(value)\n if (externalHandlers?.onInputChange) externalHandlers.onInputChange(value)\n if (onInputValueChange) onInputValueChange(event)\n }\n }}\n invalid={invalid}\n classes={{\n input: isMulti || !isSearchable ? 'cursor-pointer' : undefined\n }}\n // TODO: think about it\n // renderValues={\n // isMulti\n // ? (ref) => (\n // <ChipList\n // ref={ref}\n // values={value}\n // onDeleteItem={(option) => onDeleteItem(value, option)}\n // inputValue={inputValue}\n // onInputValueChange={onInputValueChange}\n // />\n // )\n // : undefined\n // }\n attachmentProps={{\n icon: (\n <ComboboxButton as='span'>\n <Icon\n name='arrows/arrowRight'\n className={cn('size-6 rotate-90 text-color-blue-grey-600 duration-100', {\n '-rotate-90': open\n })}\n />\n </ComboboxButton>\n ),\n ...attachmentProps\n }}\n />\n </ComboboxButton>\n <ComboboxOptions\n portal\n data-test-id='select-list'\n ref={refs.setFloating}\n as='ul'\n style={{\n ...floatingStyles,\n width: triggerRef.current?.getBoundingClientRect().width\n }}\n className={cn(\n 'customScrollbar-y z-10 mt-1',\n 'max-h-[264px] w-full overflow-y-auto bg-color-white',\n 'rounded-md p-1 shadow-[0_8px_20px_0px_rgba(41,41,41,0.08)]',\n list\n )}\n >\n {virtual ? (\n ({ option }) => (\n <SelectItem\n key={option.value}\n option={option}\n isMulti={isMulti}\n classes={{\n item: 'w-[calc(100%-16px)]',\n ...innerClasses\n }}\n displayValue={displayValue}\n motionProps={{\n initial: { opacity: 0 },\n animate: { opacity: 1 }\n }}\n />\n )\n ) : options.length > 0 ? (\n <>\n {reset && !isMulti && (\n <SelectItem\n data-test-id='select-item-empty'\n option={{ value: null, label: reset }}\n isMulti={isMulti}\n classes={innerClasses}\n displayValue={displayValue}\n motionProps={{\n initial: { opacity: 0 },\n animate: { opacity: 1 }\n }}\n />\n )}\n {options.map((option, index) => (\n <SelectItem\n data-test-id={`select-item-${index}`}\n key={option.value}\n option={option}\n isMulti={isMulti}\n classes={innerClasses}\n displayValue={displayValue}\n motionProps={{\n initial: { opacity: 0 },\n animate: { opacity: 1 }\n }}\n />\n ))}\n </>\n ) : emptyList ? (\n emptyList(externalInputValue || inputValue)\n ) : (\n <p className='py-4 text-center align-middle'>Ничего не найдено</p>\n )}\n </ComboboxOptions>\n </div>\n )\n }}\n </Combobox>\n )\n }\n)\n"],"names":["LIST_OFFSET","SelectBase","forwardRef","label","invalid","isMulti","isSearchable","initialOptions","classes","displayValue","value","onChange","attachmentProps","virtual","filterDisabled","externalInputValue","externalOnInputChange","externalHandlers","disabled","emptyList","reset","props","ref","root","list","innerClasses","refs","floatingStyles","useFloating","flip","offset","autoUpdate","triggerRef","useRef","options","inputValue","onValueChange","onInputValueChange","selectDisplayValue","useSelectController","jsx","Combobox","open","getDisplayValue","jsxs","cn","ComboboxButton","ComboboxInput","mergeRefs","InputBase","event","Icon","ComboboxOptions","_a","option","SelectItem","Fragment","index"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select.js","sources":["../../../../../../../lib/shared/ui/formElements/uncontrolled/select/Select.tsx"],"sourcesContent":["import { forwardRef, useRef } from 'react'\nimport { autoUpdate, flip, offset, useFloating } from '@floating-ui/react'\nimport { Combobox, ComboboxButton, ComboboxInput, ComboboxOptions, type ComboboxProps } from '@headlessui/react'\nimport { useSelectController } from './hooks'\nimport { type SelectItemOption } from './model'\nimport { SelectItem, type SelectItemProps } from './ui'\nimport { type DeepPartial } from '$/shared/types'\nimport { Icon, InputBase } from '$/shared/ui'\nimport type { FieldAttachment } from '$/shared/ui/formElements/ui'\nimport { cn, mergeRefs } from '$/shared/utils'\n\ntype FieldAttachmentProps = React.ComponentPropsWithoutRef<typeof FieldAttachment>\n\nexport type SelectClasses = SelectItemProps['classes'] & {\n root?: string\n list?: string\n}\n\nexport type ExternalHandlers = {\n onChange?: (value?: SelectItemOption | SelectItemOption[]) => void\n onClick?: (event: React.MouseEvent<HTMLElement>) => void\n onBlur?: (event: React.FocusEvent<HTMLElement>) => void\n onFocus?: (event: React.FocusEvent<HTMLElement>) => void\n onInputChange?: (value: string) => void\n}\n\nexport type SelectBaseProps<Multi extends boolean> = Omit<\n ComboboxProps<SelectItemOption, Multi, 'li'>,\n 'multiple' | 'onChange' | 'by' | 'className' | 'virtual'\n> & {\n /**\n * Отображаемый лейбл\n */\n label: string\n /**\n * Поддержка множественного выбора\n */\n isMulti?: Multi\n /**\n * Пометить поле как не валидное\n */\n invalid?: boolean\n /**\n * Свойство управляющее поиском\n */\n isSearchable?: boolean\n /**\n * Список отображаемых значений\n */\n options: SelectItemOption[]\n /**\n * Дополнительные стили каждого внутреннего элемента\n */\n classes?: SelectClasses\n /**\n * Функция для управления отображаемым значением\n */\n displayValue?: (option: SelectItemOption) => string\n /**\n * Функция для изменения значения\n */\n onChange?: (value: (Multi extends true ? SelectItemOption[] : SelectItemOption) | undefined) => void\n /**\n * Функция для изменения значения поиска\n */\n onInputChange?: (value: string) => void\n /**\n * Значение инпута\n */\n inputValue?: string\n /**\n * Свойства дополнительной иконки\n */\n attachmentProps?: DeepPartial<FieldAttachmentProps>\n /**\n * Включение виртуализации списка\n */\n virtual?: boolean\n /**\n * Свойство для выключения фильтрации по поиску\n */\n filterDisabled?: boolean\n /**\n * Внешние handlers которые можно прокинуть из вне\n */\n externalHandlers?: ExternalHandlers\n /**\n * Кастомизация отображения текста при пустом списке\n */\n emptyList?: (query?: string) => React.ReactNode\n /**\n * Добавляет option который, позволяет очистить значение селекта\n */\n reset?: string\n}\n\nconst LIST_OFFSET = 4\n\nexport const SelectBase = forwardRef<HTMLInputElement, SelectBaseProps<boolean>>(\n (\n {\n label,\n invalid,\n isMulti = false,\n isSearchable,\n options: initialOptions,\n classes,\n displayValue,\n value,\n onChange,\n attachmentProps,\n virtual = false,\n filterDisabled = false,\n inputValue: externalInputValue,\n onInputChange: externalOnInputChange,\n externalHandlers,\n disabled,\n emptyList,\n reset,\n ...props\n },\n ref\n ) => {\n const { root, list, ...innerClasses } = classes || {}\n\n const { refs, floatingStyles } = useFloating({\n placement: 'bottom-start',\n strategy: 'absolute',\n middleware: [\n flip({\n boundary: 'clippingAncestors',\n crossAxis: false\n }),\n offset(LIST_OFFSET)\n ],\n whileElementsMounted: autoUpdate\n })\n\n const triggerRef = useRef<HTMLDivElement>(null)\n\n const { options, inputValue, onValueChange, onInputValueChange, selectDisplayValue } = useSelectController({\n options: initialOptions,\n isSearchable,\n isMulti,\n displayValue,\n onChange,\n filterDisabled,\n externalInputValue,\n externalOnInputChange,\n externalHandlers\n })\n\n return (\n <Combobox\n {...props}\n virtual={\n virtual\n ? {\n options\n }\n : undefined\n }\n // @ts-expect-error headless ui issue\n by='value'\n onBlur={externalHandlers?.onBlur}\n onFocus={externalHandlers?.onFocus}\n onClick={externalHandlers?.onClick}\n value={(value ? value : isMulti ? [] : '') as typeof value}\n onChange={onValueChange}\n multiple={isMulti}\n // immediate\n disabled={disabled}\n aria-invalid={invalid}\n >\n {({ disabled, open, value }) => {\n const getDisplayValue = () => {\n if (isMulti && isSearchable) {\n return selectDisplayValue(value)\n } else if (isSearchable) {\n return inputValue\n } else {\n return selectDisplayValue(value)\n }\n }\n\n return (\n <div ref={triggerRef} className={cn('relative w-full', root)}>\n <ComboboxButton className='w-full'>\n <ComboboxInput\n // @ts-expect-error asdf\n ref={mergeRefs(ref, refs.setReference)}\n data-test-id='select-input'\n as={InputBase}\n label={label}\n aria-haspopup='listbox'\n ariaAutocomplete='inline'\n aria-expanded={open}\n disabled={disabled}\n readOnly={!isSearchable}\n value={externalInputValue || getDisplayValue()}\n autoComplete='off'\n onKeyDown={(event) => {\n event.stopPropagation()\n event.nativeEvent.stopPropagation()\n }}\n onChange={(event) => {\n const { value } = event.target\n\n if (isSearchable) {\n if (externalOnInputChange) externalOnInputChange(value)\n if (externalHandlers?.onInputChange) externalHandlers.onInputChange(value)\n if (onInputValueChange) onInputValueChange(event)\n }\n }}\n invalid={invalid}\n classes={{\n input: isMulti || !isSearchable ? 'cursor-pointer' : undefined\n }}\n // TODO: think about it\n // renderValues={\n // isMulti\n // ? (ref) => (\n // <ChipList\n // ref={ref}\n // values={value}\n // onDeleteItem={(option) => onDeleteItem(value, option)}\n // inputValue={inputValue}\n // onInputValueChange={onInputValueChange}\n // />\n // )\n // : undefined\n // }\n attachmentProps={{\n icon: (\n <ComboboxButton as='span'>\n <Icon\n name='arrows/arrowRight'\n className={cn('size-6 rotate-90 text-color-blue-grey-600 duration-100', {\n '-rotate-90': open\n })}\n />\n </ComboboxButton>\n ),\n ...attachmentProps\n }}\n />\n </ComboboxButton>\n <ComboboxOptions\n portal\n data-test-id='select-list'\n ref={refs.setFloating}\n as='ul'\n style={{\n ...floatingStyles,\n width: triggerRef.current?.getBoundingClientRect().width\n }}\n className={cn(\n 'customScrollbar-y z-10 mt-1',\n 'max-h-[264px] w-full overflow-y-auto bg-color-white',\n 'rounded-md p-1 shadow-[0_8px_20px_0px_rgba(41,41,41,0.08)]',\n list\n )}\n >\n {virtual ? (\n ({ option }) => (\n <SelectItem\n key={option.value}\n option={option}\n isMulti={isMulti}\n classes={{\n item: 'w-[calc(100%-16px)]',\n ...innerClasses\n }}\n displayValue={displayValue}\n motionProps={{\n initial: { opacity: 0 },\n animate: { opacity: 1 }\n }}\n />\n )\n ) : options.length > 0 ? (\n <>\n {reset && !isMulti && (\n <SelectItem\n data-test-id='select-item-empty'\n option={{ value: null, label: reset }}\n isMulti={isMulti}\n classes={innerClasses}\n displayValue={displayValue}\n motionProps={{\n initial: { opacity: 0 },\n animate: { opacity: 1 }\n }}\n />\n )}\n {options.map((option, index) => (\n <SelectItem\n data-test-id={`select-item-${index}`}\n key={option.value}\n option={option}\n isMulti={isMulti}\n classes={innerClasses}\n displayValue={displayValue}\n motionProps={{\n initial: { opacity: 0 },\n animate: { opacity: 1 }\n }}\n />\n ))}\n </>\n ) : emptyList ? (\n emptyList(externalInputValue || inputValue)\n ) : (\n <p className='py-4 text-center align-middle'>Ничего не найдено</p>\n )}\n </ComboboxOptions>\n </div>\n )\n }}\n </Combobox>\n )\n }\n)\n"],"names":["LIST_OFFSET","SelectBase","forwardRef","label","invalid","isMulti","isSearchable","initialOptions","classes","displayValue","value","onChange","attachmentProps","virtual","filterDisabled","externalInputValue","externalOnInputChange","externalHandlers","disabled","emptyList","reset","props","ref","root","list","innerClasses","refs","floatingStyles","useFloating","flip","offset","autoUpdate","triggerRef","useRef","options","inputValue","onValueChange","onInputValueChange","selectDisplayValue","useSelectController","jsx","Combobox","open","getDisplayValue","jsxs","cn","ComboboxButton","ComboboxInput","mergeRefs","InputBase","event","Icon","ComboboxOptions","_a","option","SelectItem","Fragment","index"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as r,jsxs as c}from"react/jsx-runtime";import{forwardRef as g,Fragment as l}from"react";import{
|
|
1
|
+
import{jsx as r,jsxs as c}from"react/jsx-runtime";import{forwardRef as g,Fragment as l}from"react";import{ComboboxOption as y}from"@headlessui/react";import{CheckboxBase as u}from"../../checkbox/Checkbox.js";import{cn as m}from"../../../../../utils/cn.js";import{motion as k}from"../../../../../../../node_modules/framer-motion/dist/es/render/components/motion/proxy.js";const B=g(({option:e,classes:s,displayValue:o,isMulti:t,motionProps:h,...d},n)=>{const x=o?o(e):e.label,{item:i,helperText:p,checkbox:b}=s||{},f=t||e.attachment||e.helperText?"div":l;return r(y,{...d,as:l,disabled:e.disabled,value:e,children:({disabled:a,selected:v})=>c(k.li,{...h,ref:n,className:m("unset-all-apply desk-body-regular-l cursor-pointer truncate rounded-sm bg-color-white px-2","flex h-12 items-center gap-x-4 text-color-dark hover:bg-color-primary-tr-hover hover:text-color-primary-hover","[&:not(:disabled)]:cursor-pointer [&:not(:last-child)]:mb-1 [&>p]:hover:text-color-secondary","data-[selected]:bg-color-primary-tr-hover data-[selected]:text-color-primary-hover","data-[focus]:bg-color-primary-tr-hover data-[focus]:text-color-primary-hover",{"pointer-events-none !text-color-disabled":a,"!flex items-center gap-x-4":t,"gap-x-3":e.attachment&&e.attachment.left},i),children:[t?r(u,{checked:v,disabled:a,classes:{root:"z-10",...b}}):e.attachment&&e.attachment.left,c(f,{children:[x,e.helperText&&r("p",{className:m("desk-body-regular-s text-color-tetriary",{"text-color-disabled":a},p),children:e.helperText})]}),r("div",{className:"ml-auto",children:e.attachment&&e.attachment.right})]})})});export{B as SelectItem};
|
|
2
2
|
//# sourceMappingURL=SelectItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectItem.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/select/ui/SelectItem.tsx"],"sourcesContent":["import React, { forwardRef, Fragment } from 'react'\nimport { ComboboxOption, type ComboboxOptionProps } from '@headlessui/react'\nimport { motion } from 'framer-motion'\nimport { CheckboxBase, type CheckboxBaseClasses } from '../../checkbox/Checkbox'\nimport type { SelectItemOption } from '../model'\nimport { cn } from '$/shared/utils'\n\ntype SelectItemClasses = {\n item?: string\n helperText?: string\n checkbox?: CheckboxBaseClasses\n}\n\nexport type SelectItemProps = Omit<ComboboxOptionProps, 'className' | 'value'> & {\n option: SelectItemOption\n isMulti?: boolean\n classes?: SelectItemClasses\n displayValue?: (option: SelectItemOption) => string\n motionProps?: React.ComponentPropsWithoutRef<typeof motion.li>\n}\n\nexport const SelectItem = forwardRef<HTMLLIElement, SelectItemProps>(\n ({ option, classes, displayValue, isMulti, motionProps, ...props }, ref) => {\n const label = displayValue ? displayValue(option) : option.label\n\n const { item, helperText, checkbox } = classes || {}\n\n const ContentWrapper = isMulti || option.attachment || option.helperText ? 'div' : Fragment\n\n return (\n <ComboboxOption {...props} as={Fragment} disabled={option.disabled} value={option}>\n {({ disabled, selected }) => (\n <motion.li\n {...motionProps}\n ref={ref}\n className={cn(\n 'unset-all-apply desk-body-regular-l cursor-pointer truncate rounded-sm bg-color-white px-2',\n 'flex h-12 items-center gap-x-4 text-color-dark hover:bg-color-primary-tr-hover hover:text-color-primary-hover',\n '[&:not(:disabled)]:cursor-pointer [&:not(:last-child)]:mb-1 [&>p]:hover:text-color-secondary',\n 'data-[selected]:bg-color-primary-tr-hover data-[selected]:text-color-primary-hover',\n 'data-[focus]:bg-color-primary-tr-hover data-[focus]:text-color-primary-hover',\n {\n 'pointer-events-none !text-color-disabled': disabled,\n '!flex items-center gap-x-4': isMulti,\n 'gap-x-3': option.attachment && option.attachment.left\n },\n item\n )}\n >\n {isMulti ? (\n <CheckboxBase checked={selected} disabled={disabled} classes={{ root: 'z-10', ...checkbox }} />\n ) : (\n option.attachment && option.attachment.left\n )}\n <ContentWrapper>\n {label}\n {option.helperText && (\n <p\n className={cn(\n 'desk-body-regular-s text-color-tetriary',\n {\n 'text-color-disabled': disabled\n },\n helperText\n )}\n >\n {option.helperText}\n </p>\n )}\n </ContentWrapper>\n <div className='ml-auto'>{option.attachment && option.attachment.right}</div>\n </motion.li>\n )}\n </ComboboxOption>\n )\n }\n)\n"],"names":["SelectItem","forwardRef","option","classes","displayValue","isMulti","motionProps","props","ref","label","item","helperText","checkbox","ContentWrapper","Fragment","jsx","ComboboxOption","disabled","selected","jsxs","motion","cn","CheckboxBase"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SelectItem.js","sources":["../../../../../../../../lib/shared/ui/formElements/uncontrolled/select/ui/SelectItem.tsx"],"sourcesContent":["import React, { forwardRef, Fragment } from 'react'\nimport { ComboboxOption, type ComboboxOptionProps } from '@headlessui/react'\nimport { motion } from 'framer-motion'\nimport { CheckboxBase, type CheckboxBaseClasses } from '../../checkbox/Checkbox'\nimport type { SelectItemOption } from '../model'\nimport { cn } from '$/shared/utils'\n\ntype SelectItemClasses = {\n item?: string\n helperText?: string\n checkbox?: CheckboxBaseClasses\n}\n\nexport type SelectItemProps = Omit<ComboboxOptionProps, 'className' | 'value'> & {\n option: SelectItemOption\n isMulti?: boolean\n classes?: SelectItemClasses\n displayValue?: (option: SelectItemOption) => string\n motionProps?: React.ComponentPropsWithoutRef<typeof motion.li>\n}\n\nexport const SelectItem = forwardRef<HTMLLIElement, SelectItemProps>(\n ({ option, classes, displayValue, isMulti, motionProps, ...props }, ref) => {\n const label = displayValue ? displayValue(option) : option.label\n\n const { item, helperText, checkbox } = classes || {}\n\n const ContentWrapper = isMulti || option.attachment || option.helperText ? 'div' : Fragment\n\n return (\n <ComboboxOption {...props} as={Fragment} disabled={option.disabled} value={option}>\n {({ disabled, selected }) => (\n <motion.li\n {...motionProps}\n ref={ref}\n className={cn(\n 'unset-all-apply desk-body-regular-l cursor-pointer truncate rounded-sm bg-color-white px-2',\n 'flex h-12 items-center gap-x-4 text-color-dark hover:bg-color-primary-tr-hover hover:text-color-primary-hover',\n '[&:not(:disabled)]:cursor-pointer [&:not(:last-child)]:mb-1 [&>p]:hover:text-color-secondary',\n 'data-[selected]:bg-color-primary-tr-hover data-[selected]:text-color-primary-hover',\n 'data-[focus]:bg-color-primary-tr-hover data-[focus]:text-color-primary-hover',\n {\n 'pointer-events-none !text-color-disabled': disabled,\n '!flex items-center gap-x-4': isMulti,\n 'gap-x-3': option.attachment && option.attachment.left\n },\n item\n )}\n >\n {isMulti ? (\n <CheckboxBase checked={selected} disabled={disabled} classes={{ root: 'z-10', ...checkbox }} />\n ) : (\n option.attachment && option.attachment.left\n )}\n <ContentWrapper>\n {label}\n {option.helperText && (\n <p\n className={cn(\n 'desk-body-regular-s text-color-tetriary',\n {\n 'text-color-disabled': disabled\n },\n helperText\n )}\n >\n {option.helperText}\n </p>\n )}\n </ContentWrapper>\n <div className='ml-auto'>{option.attachment && option.attachment.right}</div>\n </motion.li>\n )}\n </ComboboxOption>\n )\n }\n)\n"],"names":["SelectItem","forwardRef","option","classes","displayValue","isMulti","motionProps","props","ref","label","item","helperText","checkbox","ContentWrapper","Fragment","jsx","ComboboxOption","disabled","selected","jsxs","motion","cn","CheckboxBase"],"mappings":"mXAqBO,MAAMA,EAAaC,EACxB,CAAC,CAAE,OAAAC,EAAQ,QAAAC,EAAS,aAAAC,EAAc,QAAAC,EAAS,YAAAC,EAAa,GAAGC,CAAA,EAASC,IAAQ,CAC1E,MAAMC,EAAQL,EAAeA,EAAaF,CAAM,EAAIA,EAAO,MAErD,CAAE,KAAAQ,EAAM,WAAAC,EAAY,SAAAC,CAAA,EAAaT,GAAW,CAAA,EAE5CU,EAAiBR,GAAWH,EAAO,YAAcA,EAAO,WAAa,MAAQY,EAEnF,OACEC,EAACC,EAAA,CAAgB,GAAGT,EAAO,GAAIO,EAAU,SAAUZ,EAAO,SAAU,MAAOA,EACxE,SAAA,CAAC,CAAE,SAAAe,EAAU,SAAAC,KACZC,EAACC,EAAO,GAAP,CACE,GAAGd,EACJ,IAAAE,EACA,UAAWa,EACT,6FACA,gHACA,+FACA,qFACA,+EACA,CACE,2CAA4CJ,EAC5C,6BAA8BZ,EAC9B,UAAWH,EAAO,YAAcA,EAAO,WAAW,IAAA,EAEpDQ,CAAA,EAGD,SAAA,CAAAL,IACEiB,EAAA,CAAa,QAASJ,EAAU,SAAAD,EAAoB,QAAS,CAAE,KAAM,OAAQ,GAAGL,GAAY,EAE7FV,EAAO,YAAcA,EAAO,WAAW,OAExCW,EAAA,CACE,SAAA,CAAAJ,EACAP,EAAO,YACNa,EAAC,IAAA,CACC,UAAWM,EACT,0CACA,CACE,sBAAuBJ,CAAA,EAEzBN,CAAA,EAGD,SAAAT,EAAO,UAAA,CAAA,CACV,EAEJ,EACAa,EAAC,OAAI,UAAU,UAAW,WAAO,YAAcb,EAAO,WAAW,KAAA,CAAM,CAAA,CAAA,CAAA,EAG7E,CAEJ,CACF"}
|