@unoff/ui 1.21.0 → 1.21.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/Card.css +1 -1
- package/dist/assets/FormItem.css +1 -1
- package/dist/assets/Layout.css +1 -1
- package/dist/assets/MultipleSlider.css +1 -1
- package/dist/assets/Popin.css +1 -1
- package/dist/assets/SimpleSlider.css +1 -1
- package/dist/assets/styles/icons/icons.css +1 -1
- package/dist/assets/styles/icons/styles/figma.css +1 -1
- package/dist/assets/styles/icons/styles/framer.css +1 -1
- package/dist/assets/styles/icons/styles/penpot.css +1 -1
- package/dist/assets/styles/icons/styles/sketch.css +1 -1
- package/dist/components/actions/accordion/Accordion.d.ts +0 -1
- package/dist/components/actions/accordion/Accordion.d.ts.map +1 -1
- package/dist/components/actions/accordion/Accordion.js +6 -6
- package/dist/components/actions/accordion/Accordion.js.map +1 -1
- package/dist/components/actions/button/Button.d.ts +2 -3
- package/dist/components/actions/button/Button.d.ts.map +1 -1
- package/dist/components/actions/button/Button.figma.js +1 -1
- package/dist/components/actions/button/Button.js +87 -88
- package/dist/components/actions/button/Button.js.map +1 -1
- package/dist/components/actions/card/Card.d.ts +0 -1
- package/dist/components/actions/card/Card.d.ts.map +1 -1
- package/dist/components/actions/card/Card.js +1 -1
- package/dist/components/actions/card/Card.js.map +1 -1
- package/dist/components/actions/knob/Knob.d.ts +2 -3
- package/dist/components/actions/knob/Knob.d.ts.map +1 -1
- package/dist/components/actions/knob/Knob.js +1 -1
- package/dist/components/actions/knob/Knob.js.map +1 -1
- package/dist/components/actions/menu/Menu.d.ts +2 -3
- package/dist/components/actions/menu/Menu.d.ts.map +1 -1
- package/dist/components/actions/menu/Menu.js +4 -4
- package/dist/components/actions/menu/Menu.js.map +1 -1
- package/dist/components/assets/avatar/Avatar.d.ts +0 -1
- package/dist/components/assets/avatar/Avatar.d.ts.map +1 -1
- package/dist/components/assets/avatar/Avatar.js +6 -6
- package/dist/components/assets/avatar/Avatar.js.map +1 -1
- package/dist/components/assets/icon/Icon.d.ts +0 -1
- package/dist/components/assets/icon/Icon.d.ts.map +1 -1
- package/dist/components/assets/icon/Icon.figma.js +1 -1
- package/dist/components/assets/icon/Icon.js +6 -6
- package/dist/components/assets/icon/Icon.js.map +1 -1
- package/dist/components/assets/section-title/SectionTitle.d.ts +0 -1
- package/dist/components/assets/section-title/SectionTitle.d.ts.map +1 -1
- package/dist/components/assets/section-title/SectionTitle.js +1 -1
- package/dist/components/assets/section-title/SectionTitle.js.map +1 -1
- package/dist/components/assets/text/Text.d.ts +0 -1
- package/dist/components/assets/text/Text.d.ts.map +1 -1
- package/dist/components/assets/text/Text.js +1 -1
- package/dist/components/assets/text/Text.js.map +1 -1
- package/dist/components/assets/thumbnail/Thumbnail.d.ts +0 -1
- package/dist/components/assets/thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/components/dialogs/consent/Consent.d.ts +2 -3
- package/dist/components/dialogs/consent/Consent.d.ts.map +1 -1
- package/dist/components/dialogs/consent/Consent.js +1 -1
- package/dist/components/dialogs/consent/Consent.js.map +1 -1
- package/dist/components/dialogs/dialog/Dialog.d.ts +0 -1
- package/dist/components/dialogs/dialog/Dialog.d.ts.map +1 -1
- package/dist/components/dialogs/dialog/Dialog.js +4 -4
- package/dist/components/dialogs/dialog/Dialog.js.map +1 -1
- package/dist/components/dialogs/message/Message.d.ts +0 -1
- package/dist/components/dialogs/message/Message.js +1 -1
- package/dist/components/dialogs/message/Message.js.map +1 -1
- package/dist/components/dialogs/notification/Notification.d.ts +0 -1
- package/dist/components/dialogs/notification/Notification.d.ts.map +1 -1
- package/dist/components/dialogs/notification/Notification.js +4 -4
- package/dist/components/dialogs/notification/Notification.js.map +1 -1
- package/dist/components/dialogs/semantic-message/SemanticMessage.d.ts +2 -3
- package/dist/components/dialogs/semantic-message/SemanticMessage.d.ts.map +1 -1
- package/dist/components/dialogs/semantic-message/SemanticMessage.js +1 -1
- package/dist/components/dialogs/semantic-message/SemanticMessage.js.map +1 -1
- package/dist/components/inputs/dropdown/Dropdown.d.ts +2 -3
- package/dist/components/inputs/dropdown/Dropdown.d.ts.map +1 -1
- package/dist/components/inputs/dropdown/Dropdown.figma.js +1 -1
- package/dist/components/inputs/dropdown/Dropdown.js +1 -1
- package/dist/components/inputs/dropdown/Dropdown.js.map +1 -1
- package/dist/components/inputs/dropzone/Dropzone.d.ts +2 -3
- package/dist/components/inputs/dropzone/Dropzone.d.ts.map +1 -1
- package/dist/components/inputs/dropzone/Dropzone.js +4 -4
- package/dist/components/inputs/dropzone/Dropzone.js.map +1 -1
- package/dist/components/inputs/input/Input.d.ts +2 -3
- package/dist/components/inputs/input/Input.d.ts.map +1 -1
- package/dist/components/inputs/input/Input.figma.js +1 -1
- package/dist/components/inputs/input/Input.js +1 -1
- package/dist/components/inputs/input/Input.js.map +1 -1
- package/dist/components/inputs/inputs-bar/InputsBar.d.ts +0 -1
- package/dist/components/inputs/inputs-bar/InputsBar.d.ts.map +1 -1
- package/dist/components/inputs/inputs-bar/InputsBar.js +4 -4
- package/dist/components/inputs/inputs-bar/InputsBar.js.map +1 -1
- package/dist/components/inputs/multiple-slider/MultipleSlider.d.ts +19 -12
- package/dist/components/inputs/multiple-slider/MultipleSlider.d.ts.map +1 -1
- package/dist/components/inputs/multiple-slider/MultipleSlider.js +283 -235
- package/dist/components/inputs/multiple-slider/MultipleSlider.js.map +1 -1
- package/dist/components/inputs/multiple-slider/actions/addStop.d.ts.map +1 -1
- package/dist/components/inputs/multiple-slider/actions/deleteStop.d.ts.map +1 -1
- package/dist/components/inputs/multiple-slider/actions/shiftLeftStop.d.ts +1 -1
- package/dist/components/inputs/multiple-slider/actions/shiftLeftStop.d.ts.map +1 -1
- package/dist/components/inputs/multiple-slider/actions/shiftRightStop.d.ts +1 -1
- package/dist/components/inputs/multiple-slider/actions/shiftRightStop.d.ts.map +1 -1
- package/dist/components/inputs/select/Select.d.ts +3 -4
- package/dist/components/inputs/select/Select.d.ts.map +1 -1
- package/dist/components/inputs/select/Select.js +1 -1
- package/dist/components/inputs/select/Select.js.map +1 -1
- package/dist/components/inputs/simple-slider/SimpleSlider.d.ts +15 -5
- package/dist/components/inputs/simple-slider/SimpleSlider.d.ts.map +1 -1
- package/dist/components/inputs/simple-slider/SimpleSlider.js +116 -87
- package/dist/components/inputs/simple-slider/SimpleSlider.js.map +1 -1
- package/dist/components/lists/actions-item/ActionsItem.d.ts +0 -1
- package/dist/components/lists/actions-item/ActionsItem.js +1 -1
- package/dist/components/lists/actions-item/ActionsItem.js.map +1 -1
- package/dist/components/lists/actions-list/ActionsList.d.ts +4 -5
- package/dist/components/lists/actions-list/ActionsList.d.ts.map +1 -1
- package/dist/components/lists/actions-list/ActionsList.js +1 -1
- package/dist/components/lists/actions-list/ActionsList.js.map +1 -1
- package/dist/components/lists/color-item/ColorItem.d.ts +0 -1
- package/dist/components/lists/color-item/ColorItem.d.ts.map +1 -1
- package/dist/components/lists/color-item/ColorItem.js +1 -1
- package/dist/components/lists/color-item/ColorItem.js.map +1 -1
- package/dist/components/lists/draggable-item/DraggableItem.d.ts +2 -3
- package/dist/components/lists/draggable-item/DraggableItem.d.ts.map +1 -1
- package/dist/components/lists/draggable-item/DraggableItem.js +6 -6
- package/dist/components/lists/draggable-item/DraggableItem.js.map +1 -1
- package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.d.ts +0 -1
- package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.d.ts.map +1 -1
- package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.js +1 -1
- package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.js.map +1 -1
- package/dist/components/lists/members-list/MembersList.d.ts +0 -1
- package/dist/components/lists/sortable-list/SortableList.d.ts +2 -3
- package/dist/components/lists/sortable-list/SortableList.d.ts.map +1 -1
- package/dist/components/lists/sortable-list/SortableList.js.map +1 -1
- package/dist/components/lists/tabs/Tabs.d.ts +0 -1
- package/dist/components/lists/tabs/Tabs.d.ts.map +1 -1
- package/dist/components/lists/tabs/Tabs.figma.js +1 -1
- package/dist/components/lists/tabs/Tabs.js +1 -1
- package/dist/components/lists/tabs/Tabs.js.map +1 -1
- package/dist/components/slots/bar/Bar.d.ts +1 -2
- package/dist/components/slots/bar/Bar.d.ts.map +1 -1
- package/dist/components/slots/bar/Bar.js.map +1 -1
- package/dist/components/slots/draggable-window/DraggableWindow.d.ts +0 -1
- package/dist/components/slots/draggable-window/DraggableWindow.d.ts.map +1 -1
- package/dist/components/slots/draggable-window/DraggableWindow.js +6 -6
- package/dist/components/slots/draggable-window/DraggableWindow.js.map +1 -1
- package/dist/components/slots/drawer/Drawer.d.ts +1 -2
- package/dist/components/slots/drawer/Drawer.d.ts.map +1 -1
- package/dist/components/slots/drawer/Drawer.js.map +1 -1
- package/dist/components/slots/form-item/FormItem.d.ts +0 -1
- package/dist/components/slots/form-item/FormItem.d.ts.map +1 -1
- package/dist/components/slots/form-item/FormItem.js +1 -1
- package/dist/components/slots/form-item/FormItem.js.map +1 -1
- package/dist/components/slots/layout/Layout.d.ts +0 -1
- package/dist/components/slots/layout/Layout.d.ts.map +1 -1
- package/dist/components/slots/layout/Layout.js.map +1 -1
- package/dist/components/slots/list/List.d.ts +0 -1
- package/dist/components/slots/list/List.d.ts.map +1 -1
- package/dist/components/slots/list/List.js +4 -4
- package/dist/components/slots/list/List.js.map +1 -1
- package/dist/components/slots/popin/Popin.d.ts +0 -1
- package/dist/components/slots/popin/Popin.d.ts.map +1 -1
- package/dist/components/slots/popin/Popin.js +1 -1
- package/dist/components/slots/popin/Popin.js.map +1 -1
- package/dist/components/slots/section/Section.d.ts +1 -2
- package/dist/components/slots/section/Section.d.ts.map +1 -1
- package/dist/components/slots/section/Section.js.map +1 -1
- package/dist/components/slots/simple-item/SimpleItem.d.ts +0 -1
- package/dist/components/slots/simple-item/SimpleItem.js.map +1 -1
- package/dist/components/tags/chip/Chip.d.ts +0 -1
- package/dist/components/tags/chip/Chip.d.ts.map +1 -1
- package/dist/components/tags/chip/Chip.figma.js +1 -1
- package/dist/components/tags/chip/Chip.js +6 -6
- package/dist/components/tags/chip/Chip.js.map +1 -1
- package/dist/components/tags/color-chip/ColorChip.d.ts +2 -3
- package/dist/components/tags/color-chip/ColorChip.d.ts.map +1 -1
- package/dist/components/tags/color-chip/ColorChip.js.map +1 -1
- package/dist/components/tags/icon-chip/IconChip.d.ts +2 -3
- package/dist/components/tags/icon-chip/IconChip.d.ts.map +1 -1
- package/dist/components/tags/icon-chip/IconChip.js +4 -4
- package/dist/components/tags/icon-chip/IconChip.js.map +1 -1
- package/dist/components/tags/tooltip/Tooltip.d.ts +0 -1
- package/dist/components/tags/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/tags/tooltip/Tooltip.js +1 -1
- package/dist/components/tags/tooltip/Tooltip.js.map +1 -1
- package/dist/do-classnames-DSDFCvzy.js.map +1 -1
- package/dist/do-map-2nhWP1KI.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/index_react-BkjUklDQ.js +18392 -0
- package/dist/index_react-BkjUklDQ.js.map +1 -0
- package/dist/styles/icons/icons.module.js +114 -110
- package/dist/styles/icons/icons.module.js.map +1 -1
- package/dist/tests/setup.d.ts +0 -1
- package/dist/types/consent.types.d.ts +0 -1
- package/dist/types/consent.types.d.ts.map +1 -1
- package/dist/types/icon.types.d.ts +2 -1
- package/dist/types/icon.types.d.ts.map +1 -1
- package/dist/types/icon.types.js +114 -1
- package/dist/types/icon.types.js.map +1 -1
- package/dist/types/list.types.d.ts +0 -1
- package/package.json +15 -12
- package/dist/index_react-CmuCVQet.js +0 -13799
- package/dist/index_react-CmuCVQet.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Consent.js","sources":["../../../../src/components/dialogs/consent/Consent.tsx"],"sourcesContent":["import React from 'react'\nimport texts from '@styles/texts/texts.module.scss'\nimport layouts from '@styles/layouts.module.scss'\nimport Bar from '@components/slots/bar/Bar'\nimport Select from '@components/inputs/select/Select'\nimport Thumbnail from '@components/assets/thumbnail/Thumbnail'\nimport Button from '@components/actions/button/Button'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\nimport type { ConsentConfiguration } from '@tps/consent.types'\nimport './consent.scss'\n\nexport interface ConsentProps {\n /**\n * Welcome message displayed at the top\n */\n welcomeMessage: string\n /**\n * Message describing the vendors\n */\n vendorsMessage: string\n /**\n * Privacy policy link configuration\n */\n privacyPolicy: {\n /** Label for the privacy policy link */\n label: string\n /** Click handler for the privacy policy */\n action: React.MouseEventHandler & React.KeyboardEventHandler\n }\n /**\n * Label for the \"more details\" toggle\n */\n moreDetailsLabel: string\n /**\n * Label for the \"less details\" toggle\n */\n lessDetailsLabel: string\n /**\n * Configuration for consent action buttons\n */\n consentActions: {\n /** Consent to all action */\n consent: {\n label: string\n action: (vendorsConsent: Array<ConsentConfiguration>) => void\n }\n /** Deny all action */\n deny: {\n label: string\n action: (vendorsConsent: Array<ConsentConfiguration>) => void\n }\n /** Save preferences action */\n save: {\n label: string\n action: (vendorsConsent: Array<ConsentConfiguration>) => void\n }\n }\n /**\n * Configuration for a valid vendor\n */\n validVendor: ConsentConfiguration\n /**\n * List of all vendors\n */\n vendorsList: Array<ConsentConfiguration>\n /**\n * Whether the consent dialog can be closed\n */\n canBeClosed?: boolean\n /**\n * Label for the close button\n */\n closeLabel?: string\n /**\n * Close button handler\n */\n onClose?: React.MouseEventHandler & React.KeyboardEventHandler\n}\n\nexport interface ConsentStates {\n isVendorsOpen: boolean\n vendorsConsent: Array<ConsentConfiguration>\n}\n\nexport default class Consent extends React.Component<\n ConsentProps,\n ConsentStates\n> {\n constructor(props: ConsentProps) {\n super(props)\n this.state = {\n isVendorsOpen: false,\n vendorsConsent: props.vendorsList,\n }\n }\n\n // Direct Actions\n onConsentAll = () => {\n const { vendorsList, consentActions } = this.props\n\n consentActions.consent.action(\n vendorsList.map((vendor) => ({\n ...vendor,\n isConsented: true,\n }))\n )\n }\n\n onDenyAll = () => {\n const { vendorsList, consentActions } = this.props\n\n consentActions.deny.action(\n vendorsList.map((vendor) => ({\n ...vendor,\n isConsented: false,\n }))\n )\n }\n\n onPartialConsent = () => {\n const { consentActions } = this.props\n const { vendorsConsent } = this.state\n\n consentActions.save.action(vendorsConsent)\n }\n\n // Handlers\n consentVendorsHandler = (index: number) => {\n const { vendorsConsent } = this.state\n\n this.setState({\n vendorsConsent: vendorsConsent.map((consent, i) => {\n if (i === index)\n return {\n ...consent,\n isConsented: !consent.isConsented,\n }\n return {\n ...consent,\n }\n }),\n })\n }\n\n // Templates\n WelcomeScreen = () => {\n const {\n welcomeMessage,\n privacyPolicy,\n moreDetailsLabel,\n consentActions,\n canBeClosed,\n closeLabel,\n onClose,\n } = this.props\n\n const { isVendorsOpen } = this.state\n\n return (\n <div\n className=\"consent__banner\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Cookie consent\"\n >\n <div\n className=\"consent__banner__message\"\n role=\"region\"\n >\n <div className={texts.type}>{welcomeMessage}</div>\n <Button\n type=\"tertiary\"\n label={privacyPolicy.label}\n action={privacyPolicy.action}\n aria-label={privacyPolicy.label}\n />\n </div>\n <Bar\n leftPartSlot={\n <Button\n type=\"tertiary\"\n label={moreDetailsLabel}\n action={() =>\n this.setState({\n isVendorsOpen: !isVendorsOpen,\n })\n }\n aria-label={moreDetailsLabel}\n aria-expanded={isVendorsOpen}\n />\n }\n rightPartSlot={\n <div\n className={doClassnames([\n 'consent__banner__actions',\n layouts['snackbar--medium'],\n ])}\n role=\"group\"\n >\n <Button\n type=\"secondary\"\n label={consentActions.deny.label}\n action={this.onDenyAll}\n aria-label={consentActions.deny.label}\n />\n <Button\n type=\"primary\"\n label={consentActions.consent.label}\n action={this.onConsentAll}\n aria-label={consentActions.consent.label}\n />\n {canBeClosed && (\n <Button\n type=\"icon\"\n icon=\"close\"\n helper={\n closeLabel !== undefined\n ? { label: closeLabel, pin: 'TOP' }\n : undefined\n }\n action={onClose}\n />\n )}\n </div>\n }\n padding=\"0\"\n />\n </div>\n )\n }\n\n DetailedVendorsList = () => {\n const {\n vendorsMessage,\n lessDetailsLabel,\n validVendor,\n vendorsList,\n consentActions,\n canBeClosed,\n closeLabel,\n onClose,\n } = this.props\n\n const { isVendorsOpen, vendorsConsent } = this.state\n\n return (\n <div\n className=\"consent__banner\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Cookie vendors consent preferences\"\n >\n <div\n className=\"consent__banner__content\"\n role=\"region\"\n >\n <div\n className={doClassnames(['consent__banner__message', texts.type])}\n role=\"status\"\n aria-live=\"polite\"\n >\n {vendorsMessage}\n </div>\n <ul\n className=\"consent__banner__list\"\n role=\"list\"\n >\n <li\n className=\"consent__banner__item\"\n role=\"listitem\"\n >\n <Bar\n leftPartSlot={\n <div className={layouts['snackbar--large']}>\n <div>\n <div\n className={doClassnames([\n 'consent__banner__item__title',\n texts['type--large'],\n texts.type,\n ])}\n role=\"heading\"\n aria-level={2}\n >\n {validVendor.name}\n </div>\n <div\n className={doClassnames([\n 'consent__banner__item__description',\n texts.type,\n ])}\n role=\"note\"\n >\n {validVendor.description}\n </div>\n </div>\n </div>\n }\n rightPartSlot={\n <div\n className=\"consent__banner__item__action\"\n role=\"switch\"\n aria-checked={validVendor.isConsented}\n aria-readonly=\"true\"\n >\n <Select\n id={`legit-user-consent`}\n type=\"SWITCH_BUTTON\"\n isChecked={validVendor.isConsented}\n isDisabled={true}\n />\n </div>\n }\n border={['BOTTOM']}\n padding=\"var(--size-pos-xxxsmall) 0 var(--size-pos-xxsmall) 0\"\n />\n </li>\n {vendorsList.map((vendor, index) => (\n <li\n key={index}\n className=\"consent__banner__item\"\n role=\"listitem\"\n >\n <Bar\n leftPartSlot={\n <div className={layouts['snackbar--large']}>\n <div\n className=\"consent__banner__item__icon\"\n role=\"img\"\n >\n <Thumbnail\n src={vendor.icon}\n width=\"32px\"\n height=\"32px\"\n />\n </div>\n <div>\n <div\n className={doClassnames([\n 'consent__banner__item__title',\n texts['type--large'],\n texts.type,\n ])}\n role=\"heading\"\n aria-level={2}\n >\n {vendor.name}\n </div>\n <div\n className={doClassnames([\n 'consent__banner__item__description',\n texts.type,\n ])}\n role=\"note\"\n >\n {vendor.description}\n </div>\n </div>\n </div>\n }\n rightPartSlot={\n <div\n className=\"consent__banner__item__action\"\n role=\"switch\"\n aria-checked={vendorsConsent[index].isConsented}\n >\n <Select\n id={`change-${vendor.id}-user-consent`}\n type=\"SWITCH_BUTTON\"\n isChecked={vendorsConsent[index].isConsented}\n action={() => this.consentVendorsHandler(index)}\n />\n </div>\n }\n border={\n index === vendorsConsent.length - 1 ? undefined : ['BOTTOM']\n }\n padding=\"var(--size-pos-xxxsmall) 0 var(--size-pos-xxsmall) 0\"\n />\n </li>\n ))}\n </ul>\n </div>\n <Bar\n leftPartSlot={\n <Button\n type=\"tertiary\"\n label={lessDetailsLabel}\n action={() =>\n this.setState({\n isVendorsOpen: !isVendorsOpen,\n })\n }\n aria-label={lessDetailsLabel}\n aria-expanded={!isVendorsOpen}\n />\n }\n rightPartSlot={\n <div\n className={doClassnames([\n 'consent__banner__actions',\n layouts['snackbar--medium'],\n ])}\n role=\"group\"\n >\n <Button\n type=\"secondary\"\n label={consentActions.deny.label}\n action={this.onDenyAll}\n aria-label={consentActions.deny.label}\n />\n <Button\n type=\"primary\"\n label={consentActions.save.label}\n action={this.onPartialConsent}\n aria-label={consentActions.save.label}\n isAutofocus\n />\n {canBeClosed && (\n <Button\n type=\"icon\"\n icon=\"close\"\n helper={\n closeLabel !== undefined\n ? { label: closeLabel, pin: 'TOP' }\n : undefined\n }\n action={onClose}\n />\n )}\n </div>\n }\n padding=\"0\"\n />\n </div>\n )\n }\n\n // Render\n render() {\n const { isVendorsOpen } = this.state\n\n if (isVendorsOpen)\n return (\n <dialog className=\"consent\">\n <this.DetailedVendorsList />\n </dialog>\n )\n return (\n <dialog className=\"consent\">\n <this.WelcomeScreen />\n </dialog>\n )\n }\n}\n"],"names":["Consent","React","props","vendorsList","consentActions","vendor","vendorsConsent","index","consent","i","welcomeMessage","privacyPolicy","moreDetailsLabel","canBeClosed","closeLabel","onClose","isVendorsOpen","jsxs","jsx","texts","Button","Bar","doClassnames","layouts","vendorsMessage","lessDetailsLabel","validVendor","Select","Thumbnail"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Consent.js","sources":["../../../../src/components/dialogs/consent/Consent.tsx"],"sourcesContent":["import React from 'react'\nimport { doClassnames } from '@unoff/utils'\nimport texts from '@styles/texts/texts.module.scss'\nimport layouts from '@styles/layouts.module.scss'\nimport Bar from '@components/slots/bar/Bar'\nimport Select from '@components/inputs/select/Select'\nimport Thumbnail from '@components/assets/thumbnail/Thumbnail'\nimport Button from '@components/actions/button/Button'\nimport type { ConsentConfiguration } from '@tps/consent.types'\nimport './consent.scss'\n\nexport interface ConsentProps {\n /**\n * Welcome message displayed at the top\n */\n welcomeMessage: string\n /**\n * Message describing the vendors\n */\n vendorsMessage: string\n /**\n * Privacy policy link configuration\n */\n privacyPolicy: {\n /** Label for the privacy policy link */\n label: string\n /** Click handler for the privacy policy */\n action: React.MouseEventHandler & React.KeyboardEventHandler\n }\n /**\n * Label for the \"more details\" toggle\n */\n moreDetailsLabel: string\n /**\n * Label for the \"less details\" toggle\n */\n lessDetailsLabel: string\n /**\n * Configuration for consent action buttons\n */\n consentActions: {\n /** Consent to all action */\n consent: {\n label: string\n action: (vendorsConsent: Array<ConsentConfiguration>) => void\n }\n /** Deny all action */\n deny: {\n label: string\n action: (vendorsConsent: Array<ConsentConfiguration>) => void\n }\n /** Save preferences action */\n save: {\n label: string\n action: (vendorsConsent: Array<ConsentConfiguration>) => void\n }\n }\n /**\n * Configuration for a valid vendor\n */\n validVendor: ConsentConfiguration\n /**\n * List of all vendors\n */\n vendorsList: Array<ConsentConfiguration>\n /**\n * Whether the consent dialog can be closed\n */\n canBeClosed?: boolean\n /**\n * Label for the close button\n */\n closeLabel?: string\n /**\n * Close button handler\n */\n onClose?: React.MouseEventHandler & React.KeyboardEventHandler\n}\n\nexport interface ConsentState {\n isVendorsOpen: boolean\n vendorsConsent: Array<ConsentConfiguration>\n}\n\nexport default class Consent extends React.Component<ConsentProps, ConsentState> {\n constructor(props: ConsentProps) {\n super(props)\n this.state = {\n isVendorsOpen: false,\n vendorsConsent: props.vendorsList,\n }\n }\n\n // Direct Actions\n onConsentAll = () => {\n const { vendorsList, consentActions } = this.props\n\n consentActions.consent.action(\n vendorsList.map((vendor) => ({\n ...vendor,\n isConsented: true,\n }))\n )\n }\n\n onDenyAll = () => {\n const { vendorsList, consentActions } = this.props\n\n consentActions.deny.action(\n vendorsList.map((vendor) => ({\n ...vendor,\n isConsented: false,\n }))\n )\n }\n\n onPartialConsent = () => {\n const { consentActions } = this.props\n const { vendorsConsent } = this.state\n\n consentActions.save.action(vendorsConsent)\n }\n\n // Handlers\n consentVendorsHandler = (index: number) => {\n const { vendorsConsent } = this.state\n\n this.setState({\n vendorsConsent: vendorsConsent.map((consent, i) => {\n if (i === index)\n return {\n ...consent,\n isConsented: !consent.isConsented,\n }\n return {\n ...consent,\n }\n }),\n })\n }\n\n // Templates\n WelcomeScreen = () => {\n const {\n welcomeMessage,\n privacyPolicy,\n moreDetailsLabel,\n consentActions,\n canBeClosed,\n closeLabel,\n onClose,\n } = this.props\n\n const { isVendorsOpen } = this.state\n\n return (\n <div\n className=\"consent__banner\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Cookie consent\"\n >\n <div\n className=\"consent__banner__message\"\n role=\"region\"\n >\n <div className={texts.type}>{welcomeMessage}</div>\n <Button\n type=\"tertiary\"\n label={privacyPolicy.label}\n action={privacyPolicy.action}\n aria-label={privacyPolicy.label}\n />\n </div>\n <Bar\n leftPartSlot={\n <Button\n type=\"tertiary\"\n label={moreDetailsLabel}\n action={() =>\n this.setState({\n isVendorsOpen: !isVendorsOpen,\n })\n }\n aria-label={moreDetailsLabel}\n aria-expanded={isVendorsOpen}\n />\n }\n rightPartSlot={\n <div\n className={doClassnames([\n 'consent__banner__actions',\n layouts['snackbar--medium'],\n ])}\n role=\"group\"\n >\n <Button\n type=\"secondary\"\n label={consentActions.deny.label}\n action={this.onDenyAll}\n aria-label={consentActions.deny.label}\n />\n <Button\n type=\"primary\"\n label={consentActions.consent.label}\n action={this.onConsentAll}\n aria-label={consentActions.consent.label}\n />\n {canBeClosed && (\n <Button\n type=\"icon\"\n icon=\"close\"\n helper={\n closeLabel !== undefined\n ? { label: closeLabel, pin: 'TOP' }\n : undefined\n }\n action={onClose}\n />\n )}\n </div>\n }\n padding=\"0\"\n />\n </div>\n )\n }\n\n DetailedVendorsList = () => {\n const {\n vendorsMessage,\n lessDetailsLabel,\n validVendor,\n vendorsList,\n consentActions,\n canBeClosed,\n closeLabel,\n onClose,\n } = this.props\n\n const { isVendorsOpen, vendorsConsent } = this.state\n\n return (\n <div\n className=\"consent__banner\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Cookie vendors consent preferences\"\n >\n <div\n className=\"consent__banner__content\"\n role=\"region\"\n >\n <div\n className={doClassnames(['consent__banner__message', texts.type])}\n role=\"status\"\n aria-live=\"polite\"\n >\n {vendorsMessage}\n </div>\n <ul\n className=\"consent__banner__list\"\n role=\"list\"\n >\n <li\n className=\"consent__banner__item\"\n role=\"listitem\"\n >\n <Bar\n leftPartSlot={\n <div className={layouts['snackbar--large']}>\n <div>\n <div\n className={doClassnames([\n 'consent__banner__item__title',\n texts['type--large'],\n texts.type,\n ])}\n role=\"heading\"\n aria-level={2}\n >\n {validVendor.name}\n </div>\n <div\n className={doClassnames([\n 'consent__banner__item__description',\n texts.type,\n ])}\n role=\"note\"\n >\n {validVendor.description}\n </div>\n </div>\n </div>\n }\n rightPartSlot={\n <div\n className=\"consent__banner__item__action\"\n role=\"switch\"\n aria-checked={validVendor.isConsented}\n aria-readonly=\"true\"\n >\n <Select\n id={`legit-user-consent`}\n type=\"SWITCH_BUTTON\"\n isChecked={validVendor.isConsented}\n isDisabled={true}\n />\n </div>\n }\n border={['BOTTOM']}\n padding=\"var(--size-pos-xxxsmall) 0 var(--size-pos-xxsmall) 0\"\n />\n </li>\n {vendorsList.map((vendor, index) => (\n <li\n key={index}\n className=\"consent__banner__item\"\n role=\"listitem\"\n >\n <Bar\n leftPartSlot={\n <div className={layouts['snackbar--large']}>\n <div\n className=\"consent__banner__item__icon\"\n role=\"img\"\n >\n <Thumbnail\n src={vendor.icon}\n width=\"32px\"\n height=\"32px\"\n />\n </div>\n <div>\n <div\n className={doClassnames([\n 'consent__banner__item__title',\n texts['type--large'],\n texts.type,\n ])}\n role=\"heading\"\n aria-level={2}\n >\n {vendor.name}\n </div>\n <div\n className={doClassnames([\n 'consent__banner__item__description',\n texts.type,\n ])}\n role=\"note\"\n >\n {vendor.description}\n </div>\n </div>\n </div>\n }\n rightPartSlot={\n <div\n className=\"consent__banner__item__action\"\n role=\"switch\"\n aria-checked={vendorsConsent[index].isConsented}\n >\n <Select\n id={`change-${vendor.id}-user-consent`}\n type=\"SWITCH_BUTTON\"\n isChecked={vendorsConsent[index].isConsented}\n action={() => this.consentVendorsHandler(index)}\n />\n </div>\n }\n border={\n index === vendorsConsent.length - 1 ? undefined : ['BOTTOM']\n }\n padding=\"var(--size-pos-xxxsmall) 0 var(--size-pos-xxsmall) 0\"\n />\n </li>\n ))}\n </ul>\n </div>\n <Bar\n leftPartSlot={\n <Button\n type=\"tertiary\"\n label={lessDetailsLabel}\n action={() =>\n this.setState({\n isVendorsOpen: !isVendorsOpen,\n })\n }\n aria-label={lessDetailsLabel}\n aria-expanded={!isVendorsOpen}\n />\n }\n rightPartSlot={\n <div\n className={doClassnames([\n 'consent__banner__actions',\n layouts['snackbar--medium'],\n ])}\n role=\"group\"\n >\n <Button\n type=\"secondary\"\n label={consentActions.deny.label}\n action={this.onDenyAll}\n aria-label={consentActions.deny.label}\n />\n <Button\n type=\"primary\"\n label={consentActions.save.label}\n action={this.onPartialConsent}\n aria-label={consentActions.save.label}\n isAutofocus\n />\n {canBeClosed && (\n <Button\n type=\"icon\"\n icon=\"close\"\n helper={\n closeLabel !== undefined\n ? { label: closeLabel, pin: 'TOP' }\n : undefined\n }\n action={onClose}\n />\n )}\n </div>\n }\n padding=\"0\"\n />\n </div>\n )\n }\n\n // Render\n render() {\n const { isVendorsOpen } = this.state\n\n if (isVendorsOpen)\n return (\n <dialog className=\"consent\">\n <this.DetailedVendorsList />\n </dialog>\n )\n return (\n <dialog className=\"consent\">\n <this.WelcomeScreen />\n </dialog>\n )\n }\n}\n"],"names":["Consent","React","props","vendorsList","consentActions","vendor","vendorsConsent","index","consent","i","welcomeMessage","privacyPolicy","moreDetailsLabel","canBeClosed","closeLabel","onClose","isVendorsOpen","jsxs","jsx","texts","Button","Bar","doClassnames","layouts","vendorsMessage","lessDetailsLabel","validVendor","Select","Thumbnail"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/components/dialogs/dialog/Dialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/components/dialogs/dialog/Dialog.tsx"],"names":[],"mappings":"AAGA,OAAO,eAAe,CAAA;AAEtB,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,4BAA4B;QAC5B,OAAO,CAAC,EAAE;YACR,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;YAC1C,OAAO,CAAC,EAAE,MAAM,CAAA;YAChB,WAAW,CAAC,EAAE,OAAO,CAAA;YACrB,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;SAC/C,CAAA;QACD,gCAAgC;QAChC,WAAW,CAAC,EAAE;YACZ,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;YAC1C,OAAO,CAAC,EAAE,MAAM,CAAA;YAChB,WAAW,CAAC,EAAE,OAAO,CAAA;YACrB,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;SAC/C,CAAA;QACD,8BAA8B;QAC9B,SAAS,CAAC,EAAE;YACV,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;YAC1C,OAAO,CAAC,EAAE,MAAM,CAAA;YAChB,WAAW,CAAC,EAAE,OAAO,CAAA;YACrB,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;SAC/C,CAAA;KACF,CAAA;IACD;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,2BAA2B;QAC3B,KAAK,EAAE,MAAM,CAAA;QACb,oBAAoB;QACpB,KAAK,EAAE,OAAO,CAAA;QACd,qBAAqB;QACrB,MAAM,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;KACnD,CAAA;IACD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAA;CACjC;AAED,QAAA,MAAM,MAAM,GAAI,OAAO,WAAW,4CAqDjC,CAAA;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import '../../../assets/Dialog.css';
|
|
2
2
|
import { jsx as n } from "react/jsx-runtime";
|
|
3
3
|
import { useEffect as u } from "react";
|
|
4
|
-
import E from "
|
|
5
|
-
import
|
|
4
|
+
import { t as E } from "../../../do-classnames-DSDFCvzy.js";
|
|
5
|
+
import y from "../../slots/popin/Popin.js";
|
|
6
6
|
const P = (i) => {
|
|
7
7
|
const {
|
|
8
8
|
title: t,
|
|
@@ -28,14 +28,14 @@ const P = (i) => {
|
|
|
28
28
|
return /* @__PURE__ */ n(
|
|
29
29
|
"dialog",
|
|
30
30
|
{
|
|
31
|
-
className:
|
|
31
|
+
className: E(["dialog", a === "RIGHT" && "dialog--right"]),
|
|
32
32
|
role: "dialog",
|
|
33
33
|
"aria-modal": "true",
|
|
34
34
|
"aria-label": t,
|
|
35
35
|
tabIndex: -1,
|
|
36
36
|
onMouseDown: p,
|
|
37
37
|
children: /* @__PURE__ */ n(
|
|
38
|
-
|
|
38
|
+
y,
|
|
39
39
|
{
|
|
40
40
|
type: a === "RIGHT" ? "PANEL" : "POPIN",
|
|
41
41
|
title: t,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","sources":["../../../../src/components/dialogs/dialog/Dialog.tsx"],"sourcesContent":["import { SyntheticEvent, useEffect } from 'react'\nimport PopIn from '@components/slots/popin/Popin'\nimport './dialog.scss'\
|
|
1
|
+
{"version":3,"file":"Dialog.js","sources":["../../../../src/components/dialogs/dialog/Dialog.tsx"],"sourcesContent":["import { SyntheticEvent, useEffect } from 'react'\nimport { doClassnames } from '@unoff/utils'\nimport PopIn from '@components/slots/popin/Popin'\nimport './dialog.scss'\n\nexport interface DialogProps {\n /**\n * Title of the dialog\n */\n title: string\n /**\n * Optional tag displayed next to the title\n */\n tag?: string\n /**\n * Configuration for action buttons\n */\n actions?: {\n /** Primary action button */\n primary?: {\n label: string\n state?: 'DEFAULT' | 'DISABLED' | 'LOADING'\n feature?: string\n isAutofocus?: boolean\n action: React.ReactEventHandler | (() => void)\n }\n /** Destructive action button */\n destructive?: {\n label: string\n state?: 'DEFAULT' | 'DISABLED' | 'LOADING'\n feature?: string\n isAutofocus?: boolean\n action: React.ReactEventHandler | (() => void)\n }\n /** Secondary action button */\n secondary?: {\n label: string\n state?: 'DEFAULT' | 'DISABLED' | 'LOADING'\n feature?: string\n isAutofocus?: boolean\n action: React.ReactEventHandler | (() => void)\n }\n }\n /**\n * Select/checkbox configuration\n */\n select?: {\n /** Label for the select */\n label: string\n /** Current state */\n state: boolean\n /** Change handler */\n action: React.ChangeEventHandler<HTMLInputElement>\n }\n /**\n * Optional indicator text\n */\n indicator?: string\n /**\n * Position of the dialog\n * @default 'CENTER'\n */\n pin?: 'CENTER' | 'RIGHT'\n /**\n * Whether the dialog is in loading state\n * @default false\n */\n isLoading?: boolean\n /**\n * Whether to use message layout\n * @default false\n */\n isMessage?: boolean\n /**\n * Dialog content\n */\n children?: React.ReactNode\n /**\n * Close handler\n */\n onClose: React.ReactEventHandler\n}\n\nconst Dialog = (props: DialogProps) => {\n const {\n title,\n actions,\n select,\n indicator,\n tag,\n pin = 'CENTER',\n isLoading = false,\n isMessage = false,\n children,\n onClose,\n } = props\n\n useEffect(() => {\n const handleEscapeKey = (event: KeyboardEvent) =>\n event.key === 'Escape' && onClose(event as unknown as SyntheticEvent)\n\n document.addEventListener('keydown', handleEscapeKey)\n\n return () => {\n document.removeEventListener('keydown', handleEscapeKey)\n }\n }, [onClose])\n\n const closeHandler = (e: SyntheticEvent) => {\n if (e.currentTarget === e.target) onClose(e)\n }\n\n return (\n <dialog\n className={doClassnames(['dialog', pin === 'RIGHT' && 'dialog--right'])}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n tabIndex={-1}\n onMouseDown={closeHandler}\n >\n <PopIn\n type={pin === 'RIGHT' ? 'PANEL' : 'POPIN'}\n title={title}\n actions={actions}\n select={select}\n indicator={indicator}\n tag={tag}\n isLoading={isLoading}\n isMessage={isMessage}\n onClose={onClose}\n >\n {children}\n </PopIn>\n </dialog>\n )\n}\n\nexport default Dialog\n"],"names":["Dialog","props","title","actions","select","indicator","tag","pin","isLoading","isMessage","children","onClose","useEffect","handleEscapeKey","event","closeHandler","jsx","doClassnames","PopIn"],"mappings":";;;;AAmFA,MAAMA,IAAS,CAACC,MAAuB;AACrC,QAAM;AAAA,IACJ,OAAAC;AAAA,IACA,SAAAC;AAAA,IACA,QAAAC;AAAA,IACA,WAAAC;AAAA,IACA,KAAAC;AAAA,IACA,KAAAC,IAAM;AAAA,IACN,WAAAC,IAAY;AAAA,IACZ,WAAAC,IAAY;AAAA,IACZ,UAAAC;AAAA,IACA,SAAAC;AAAA,EAAA,IACEV;AAEJ,EAAAW,EAAU,MAAM;AACd,UAAMC,IAAkB,CAACC,MACvBA,EAAM,QAAQ,YAAYH,EAAQG,CAAkC;AAEtE,oBAAS,iBAAiB,WAAWD,CAAe,GAE7C,MAAM;AACX,eAAS,oBAAoB,WAAWA,CAAe;AAAA,IACzD;AAAA,EACF,GAAG,CAACF,CAAO,CAAC;AAEZ,QAAMI,IAAe,CAAC,MAAsB;AAC1C,IAAI,EAAE,kBAAkB,EAAE,YAAgB,CAAC;AAAA,EAC7C;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAa,CAAC,UAAUV,MAAQ,WAAW,eAAe,CAAC;AAAA,MACtE,MAAK;AAAA,MACL,cAAW;AAAA,MACX,cAAYL;AAAA,MACZ,UAAU;AAAA,MACV,aAAaa;AAAA,MAEb,UAAA,gBAAAC;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,MAAMX,MAAQ,UAAU,UAAU;AAAA,UAClC,OAAAL;AAAA,UACA,SAAAC;AAAA,UACA,QAAAC;AAAA,UACA,WAAAC;AAAA,UACA,KAAAC;AAAA,UACA,WAAAE;AAAA,UACA,WAAAC;AAAA,UACA,SAAAE;AAAA,UAEC,UAAAD;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAGN;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import '../../../assets/Message.css';
|
|
2
2
|
import { jsxs as r, jsx as e } from "react/jsx-runtime";
|
|
3
3
|
import l from "react";
|
|
4
|
+
import { t as a } from "../../../do-classnames-DSDFCvzy.js";
|
|
4
5
|
import n from "../../../styles/texts/texts.module.js";
|
|
5
6
|
import { Icon as o } from "../../assets/icon/Icon.js";
|
|
6
|
-
import { t as a } from "../../../do-classnames-DSDFCvzy.js";
|
|
7
7
|
class _ extends l.Component {
|
|
8
8
|
static defaultProps = {
|
|
9
9
|
isBlocked: !1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Message.js","sources":["../../../../src/components/dialogs/message/Message.tsx"],"sourcesContent":["import React from 'react'\nimport texts from '@styles/texts/texts.module.scss'\nimport Icon from '@components/assets/icon/Icon'\nimport
|
|
1
|
+
{"version":3,"file":"Message.js","sources":["../../../../src/components/dialogs/message/Message.tsx"],"sourcesContent":["import React from 'react'\nimport { doClassnames } from '@unoff/utils'\nimport texts from '@styles/texts/texts.module.scss'\nimport Icon from '@components/assets/icon/Icon'\nimport type { IconList } from '@tps/icon.types'\nimport './message.scss'\n\nexport interface MessageProps {\n /**\n * Icon to display with the message\n */\n icon: IconList\n /**\n * Array of message strings to display\n */\n messages: Array<string>\n /**\n * Whether the message is blocked\n * @default false\n */\n isBlocked?: boolean\n}\n\nexport default class Message extends React.Component<MessageProps> {\n static defaultProps: Partial<MessageProps> = {\n isBlocked: false,\n }\n\n // Templates\n SingleMessage = () => {\n const { icon, messages, isBlocked } = this.props\n\n return (\n <div\n className={doClassnames(['message', isBlocked && 'message--blocked'])}\n role=\"status\"\n aria-live=\"polite\"\n >\n <Icon\n type=\"PICTO\"\n iconName={icon}\n customClassName=\"icon\"\n aria-hidden=\"true\"\n />\n <div\n className={doClassnames([texts.type, 'message__msg'])}\n role=\"presentation\"\n >\n {messages[0]}\n </div>\n </div>\n )\n }\n\n MultipleMessages = () => {\n const { icon, messages } = this.props\n\n return (\n <div\n className=\"message message--multiple\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <Icon\n type=\"PICTO\"\n iconName={icon}\n customClassName=\"icon\"\n aria-hidden=\"true\"\n />\n <div\n className=\"message__ticker\"\n role=\"marquee\"\n >\n <div\n className=\"message__tips\"\n style={{\n animation: `ticker ${\n messages.length * 5000\n }ms 0ms linear infinite`,\n }}\n role=\"presentation\"\n >\n {messages.map((message, index) => {\n return (\n <React.Fragment key={`message-${index}`}>\n <div\n className={doClassnames([texts.type, 'message__msg'])}\n role=\"presentation\"\n >\n {message}\n </div>\n <div\n className={doClassnames([texts.type, 'message__msg'])}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n ﹒\n </div>\n </React.Fragment>\n )\n })}\n </div>\n <div\n className=\"message__tips\"\n style={{\n animation: `ticker ${\n messages.length * 5000\n }ms 0ms linear infinite`,\n }}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n {messages.map((message, index) => {\n return (\n <React.Fragment key={`message-${index}`}>\n <div\n className={doClassnames([texts.type, 'message__msg'])}\n role=\"presentation\"\n >\n {message}\n </div>\n <div\n className={doClassnames([texts.type, 'message__msg'])}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n ﹒\n </div>\n </React.Fragment>\n )\n })}\n </div>\n </div>\n </div>\n )\n }\n\n // Render\n render() {\n const { messages } = this.props\n\n if (messages.length > 1) return this.MultipleMessages()\n return this.SingleMessage()\n }\n}\n"],"names":["Message","React","icon","messages","isBlocked","jsxs","doClassnames","jsx","Icon","texts","message","index"],"mappings":";;;;;AAuBA,MAAqBA,UAAgBC,EAAM,UAAwB;AAAA,EACjE,OAAO,eAAsC;AAAA,IAC3C,WAAW;AAAA,EAAA;AAAA;AAAA,EAIb,gBAAgB,MAAM;AACpB,UAAM,EAAE,MAAAC,GAAM,UAAAC,GAAU,WAAAC,EAAA,IAAc,KAAK;AAE3C,WACE,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC,EAAa,CAAC,WAAWF,KAAa,kBAAkB,CAAC;AAAA,QACpE,MAAK;AAAA,QACL,aAAU;AAAA,QAEV,UAAA;AAAA,UAAA,gBAAAG;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,UAAUN;AAAA,cACV,iBAAgB;AAAA,cAChB,eAAY;AAAA,YAAA;AAAA,UAAA;AAAA,UAEd,gBAAAK;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWD,EAAa,CAACG,EAAM,MAAM,cAAc,CAAC;AAAA,cACpD,MAAK;AAAA,cAEJ,YAAS,CAAC;AAAA,YAAA;AAAA,UAAA;AAAA,QACb;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AAAA,EAEA,mBAAmB,MAAM;AACvB,UAAM,EAAE,MAAAP,GAAM,UAAAC,EAAA,IAAa,KAAK;AAEhC,WACE,gBAAAE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,MAAK;AAAA,QACL,aAAU;AAAA,QAEV,UAAA;AAAA,UAAA,gBAAAE;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,UAAUN;AAAA,cACV,iBAAgB;AAAA,cAChB,eAAY;AAAA,YAAA;AAAA,UAAA;AAAA,UAEd,gBAAAG;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,MAAK;AAAA,cAEL,UAAA;AAAA,gBAAA,gBAAAE;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,OAAO;AAAA,sBACL,WAAW,UACTJ,EAAS,SAAS,GACpB;AAAA,oBAAA;AAAA,oBAEF,MAAK;AAAA,oBAEJ,UAAAA,EAAS,IAAI,CAACO,GAASC,MAEpB,gBAAAN,EAACJ,EAAM,UAAN,EACC,UAAA;AAAA,sBAAA,gBAAAM;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,WAAWD,EAAa,CAACG,EAAM,MAAM,cAAc,CAAC;AAAA,0BACpD,MAAK;AAAA,0BAEJ,UAAAC;AAAA,wBAAA;AAAA,sBAAA;AAAA,sBAEH,gBAAAH;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,WAAWD,EAAa,CAACG,EAAM,MAAM,cAAc,CAAC;AAAA,0BACpD,MAAK;AAAA,0BACL,eAAY;AAAA,0BACb,UAAA;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBAED,EAAA,GAbmB,WAAWE,CAAK,EAcrC,CAEH;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEH,gBAAAJ;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,OAAO;AAAA,sBACL,WAAW,UACTJ,EAAS,SAAS,GACpB;AAAA,oBAAA;AAAA,oBAEF,MAAK;AAAA,oBACL,eAAY;AAAA,oBAEX,UAAAA,EAAS,IAAI,CAACO,GAASC,MAEpB,gBAAAN,EAACJ,EAAM,UAAN,EACC,UAAA;AAAA,sBAAA,gBAAAM;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,WAAWD,EAAa,CAACG,EAAM,MAAM,cAAc,CAAC;AAAA,0BACpD,MAAK;AAAA,0BAEJ,UAAAC;AAAA,wBAAA;AAAA,sBAAA;AAAA,sBAEH,gBAAAH;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,WAAWD,EAAa,CAACG,EAAM,MAAM,cAAc,CAAC;AAAA,0BACpD,MAAK;AAAA,0BACL,eAAY;AAAA,0BACb,UAAA;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBAED,EAAA,GAbmB,WAAWE,CAAK,EAcrC,CAEH;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACH;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AAAA;AAAA,EAGA,SAAS;AACP,UAAM,EAAE,UAAAR,MAAa,KAAK;AAE1B,WAAIA,EAAS,SAAS,IAAU,KAAK,iBAAA,IAC9B,KAAK,cAAA;AAAA,EACd;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Notification.d.ts","sourceRoot":"","sources":["../../../../src/components/dialogs/notification/Notification.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Notification.d.ts","sourceRoot":"","sources":["../../../../src/components/dialogs/notification/Notification.tsx"],"names":[],"mappings":"AAGA,OAAO,qBAAqB,CAAA;AAE5B,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;IAC1D;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAA;CACjC;AAED,QAAA,MAAM,YAAY,GAAI,OAAO,iBAAiB,4CA4B7C,CAAA;AAED,eAAe,YAAY,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import '../../../assets/Notification.css';
|
|
2
2
|
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
-
import n from "
|
|
4
|
-
import
|
|
3
|
+
import { t as n } from "../../../do-classnames-DSDFCvzy.js";
|
|
4
|
+
import s from "../../actions/button/Button.js";
|
|
5
5
|
import m from "../semantic-message/SemanticMessage.js";
|
|
6
6
|
const d = (e) => {
|
|
7
7
|
const { type: r, message: a, timer: o, onClose: i } = e;
|
|
@@ -10,7 +10,7 @@ const d = (e) => {
|
|
|
10
10
|
}, o), /* @__PURE__ */ t(
|
|
11
11
|
"div",
|
|
12
12
|
{
|
|
13
|
-
className:
|
|
13
|
+
className: n(["notification"]),
|
|
14
14
|
role: "alert",
|
|
15
15
|
"aria-live": "polite",
|
|
16
16
|
tabIndex: -1,
|
|
@@ -20,7 +20,7 @@ const d = (e) => {
|
|
|
20
20
|
type: r,
|
|
21
21
|
message: a,
|
|
22
22
|
actionsSlot: /* @__PURE__ */ t(
|
|
23
|
-
|
|
23
|
+
s,
|
|
24
24
|
{
|
|
25
25
|
type: "icon",
|
|
26
26
|
icon: "close",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Notification.js","sources":["../../../../src/components/dialogs/notification/Notification.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"Notification.js","sources":["../../../../src/components/dialogs/notification/Notification.tsx"],"sourcesContent":["import { doClassnames } from '@unoff/utils'\nimport Button from '@components/actions/button/Button'\nimport SemanticMessage from '../semantic-message/SemanticMessage'\nimport './notification.scss'\n\nexport interface NotificationProps {\n /**\n * Type of notification determining its visual style\n */\n type: 'NEUTRAL' | 'INFO' | 'SUCCESS' | 'WARNING' | 'ERROR'\n /**\n * Message content to display\n */\n message: string\n /**\n * Auto-close timer in milliseconds (0 or undefined for no auto-close)\n */\n timer?: number\n /**\n * Close handler\n */\n onClose: React.ReactEventHandler\n}\n\nconst Notification = (props: NotificationProps) => {\n const { type, message, timer, onClose } = props\n\n if (timer !== undefined && timer > 0)\n setTimeout(() => {\n onClose({} as React.SyntheticEvent)\n }, timer)\n\n return (\n <div\n className={doClassnames(['notification'])}\n role=\"alert\"\n aria-live=\"polite\"\n tabIndex={-1}\n >\n <SemanticMessage\n type={type}\n message={message}\n actionsSlot={\n <Button\n type=\"icon\"\n icon=\"close\"\n action={onClose}\n />\n }\n />\n </div>\n )\n}\n\nexport default Notification\n"],"names":["Notification","props","type","message","timer","onClose","jsx","doClassnames","SemanticMessage","Button"],"mappings":";;;;AAwBA,MAAMA,IAAe,CAACC,MAA6B;AACjD,QAAM,EAAE,MAAAC,GAAM,SAAAC,GAAS,OAAAC,GAAO,SAAAC,MAAYJ;AAE1C,SAAIG,MAAU,UAAaA,IAAQ,KACjC,WAAW,MAAM;AACf,IAAAC,EAAQ,CAAA,CAA0B;AAAA,EACpC,GAAGD,CAAK,GAGR,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAa,CAAC,cAAc,CAAC;AAAA,MACxC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,UAAU;AAAA,MAEV,UAAA,gBAAAD;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,MAAAN;AAAA,UACA,SAAAC;AAAA,UACA,aACE,gBAAAG;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,MAAK;AAAA,cACL,QAAQJ;AAAA,YAAA;AAAA,UAAA;AAAA,QACV;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAGN;"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { IconList } from '../../../types/icon.types';
|
|
3
|
-
|
|
4
3
|
export interface SemanticMessageProps {
|
|
5
4
|
/**
|
|
6
5
|
* Type of message determining its visual style and icon
|
|
@@ -25,10 +24,10 @@ export interface SemanticMessageProps {
|
|
|
25
24
|
*/
|
|
26
25
|
actionsSlot?: React.ReactNode;
|
|
27
26
|
}
|
|
28
|
-
export interface
|
|
27
|
+
export interface SemanticMessageState {
|
|
29
28
|
documentWidth: number;
|
|
30
29
|
}
|
|
31
|
-
export default class SemanticMessage extends React.Component<SemanticMessageProps,
|
|
30
|
+
export default class SemanticMessage extends React.Component<SemanticMessageProps, SemanticMessageState> {
|
|
32
31
|
static defaultProps: Partial<SemanticMessageProps>;
|
|
33
32
|
constructor(props: SemanticMessageProps);
|
|
34
33
|
componentDidMount: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SemanticMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/dialogs/semantic-message/SemanticMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"SemanticMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/dialogs/semantic-message/SemanticMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAG1C,OAAO,yBAAyB,CAAA;AAEhC,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;IAC1D;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAC1D,oBAAoB,EACpB,oBAAoB,CACrB;IACC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAGjD;gBAEW,KAAK,EAAE,oBAAoB;IAWvC,iBAAiB,aAEhB;IAED,oBAAoB,aAEnB;IAGD,YAAY,aAEX;IAED,OAAO,GAAI,MAAM,MAAM,KAAG,QAAQ,CAMjC;IAGD,MAAM;CAuCP"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import '../../../assets/SemanticMessage.css';
|
|
2
2
|
import { jsxs as d, jsx as t } from "react/jsx-runtime";
|
|
3
3
|
import l from "react";
|
|
4
|
-
import s from "../../../styles/layouts.module.js";
|
|
5
4
|
import { t as i } from "../../../do-classnames-DSDFCvzy.js";
|
|
5
|
+
import s from "../../../styles/layouts.module.js";
|
|
6
6
|
import u from "../message/Message.js";
|
|
7
7
|
class w extends l.Component {
|
|
8
8
|
static defaultProps = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SemanticMessage.js","sources":["../../../../src/components/dialogs/semantic-message/SemanticMessage.tsx"],"sourcesContent":["import React from 'react'\nimport { IconList } from '@tps/icon.types'\nimport layouts from '@styles/layouts.module.scss'\nimport
|
|
1
|
+
{"version":3,"file":"SemanticMessage.js","sources":["../../../../src/components/dialogs/semantic-message/SemanticMessage.tsx"],"sourcesContent":["import React from 'react'\nimport { doClassnames } from '@unoff/utils'\nimport { IconList } from '@tps/icon.types'\nimport layouts from '@styles/layouts.module.scss'\nimport Message from '../message/Message'\nimport './semantic-message.scss'\n\nexport interface SemanticMessageProps {\n /**\n * Type of message determining its visual style and icon\n */\n type: 'NEUTRAL' | 'INFO' | 'SUCCESS' | 'WARNING' | 'ERROR'\n /**\n * Message content to display\n */\n message: string\n /**\n * Whether the message is anchored to its position\n * @default false\n */\n isAnchored?: boolean\n /**\n * Layout orientation\n * @default 'HORIZONTAL'\n */\n orientation?: 'HORIZONTAL' | 'VERTICAL'\n /**\n * Optional action buttons slot\n */\n actionsSlot?: React.ReactNode\n}\n\nexport interface SemanticMessageState {\n documentWidth: number\n}\n\nexport default class SemanticMessage extends React.Component<\n SemanticMessageProps,\n SemanticMessageState\n> {\n static defaultProps: Partial<SemanticMessageProps> = {\n orientation: 'HORIZONTAL',\n isAnchored: false,\n }\n\n constructor(props: SemanticMessageProps) {\n super(props)\n this.state = {\n documentWidth:\n typeof document !== 'undefined'\n ? document.documentElement.clientWidth\n : 1024,\n }\n }\n\n // Lifecycle\n componentDidMount = () => {\n window.addEventListener('resize', this.handleResize)\n }\n\n componentWillUnmount = () => {\n window.removeEventListener('resize', this.handleResize)\n }\n\n // Handlers\n handleResize = () => {\n this.setState({ documentWidth: document.documentElement.clientWidth })\n }\n\n setIcon = (type: string): IconList => {\n if (type === 'SUCCESS') return 'check'\n else if (type === 'WARNING') return 'warning'\n else if (type === 'ERROR') return 'alert'\n\n return 'info'\n }\n\n // Render\n render() {\n const { type, message, isAnchored, orientation, actionsSlot } = this.props\n const { documentWidth } = this.state\n\n const isResponsiveVertical = documentWidth <= 460\n const effectiveOrientation = isResponsiveVertical ? 'VERTICAL' : orientation\n\n return (\n <div\n className={doClassnames([\n 'semantic-message',\n `semantic-message--${type.toLowerCase()}`,\n effectiveOrientation === 'VERTICAL' && 'semantic-message--vertical',\n isAnchored && 'semantic-message--anchored',\n ])}\n role=\"status\"\n >\n <div className=\"semantic-message__body\">\n <Message\n icon={this.setIcon(type)}\n messages={[message]}\n />\n </div>\n {actionsSlot !== undefined && (\n <div\n className={doClassnames([\n layouts['snackbar--medium'],\n layouts['snackbar--wrap'],\n layouts['snackbar--center'],\n 'semantic-message__actions',\n ])}\n role=\"toolbar\"\n >\n {actionsSlot}\n </div>\n )}\n </div>\n )\n }\n}\n"],"names":["SemanticMessage","React","props","type","message","isAnchored","orientation","actionsSlot","documentWidth","effectiveOrientation","jsxs","doClassnames","jsx","Message","layouts"],"mappings":";;;;;AAoCA,MAAqBA,UAAwBC,EAAM,UAGjD;AAAA,EACA,OAAO,eAA8C;AAAA,IACnD,aAAa;AAAA,IACb,YAAY;AAAA,EAAA;AAAA,EAGd,YAAYC,GAA6B;AACvC,UAAMA,CAAK,GACX,KAAK,QAAQ;AAAA,MACX,eACE,OAAO,WAAa,MAChB,SAAS,gBAAgB,cACzB;AAAA,IAAA;AAAA,EAEV;AAAA;AAAA,EAGA,oBAAoB,MAAM;AACxB,WAAO,iBAAiB,UAAU,KAAK,YAAY;AAAA,EACrD;AAAA,EAEA,uBAAuB,MAAM;AAC3B,WAAO,oBAAoB,UAAU,KAAK,YAAY;AAAA,EACxD;AAAA;AAAA,EAGA,eAAe,MAAM;AACnB,SAAK,SAAS,EAAE,eAAe,SAAS,gBAAgB,aAAa;AAAA,EACvE;AAAA,EAEA,UAAU,CAACC,MACLA,MAAS,YAAkB,UACtBA,MAAS,YAAkB,YAC3BA,MAAS,UAAgB,UAE3B;AAAA;AAAA,EAIT,SAAS;AACP,UAAM,EAAE,MAAAA,GAAM,SAAAC,GAAS,YAAAC,GAAY,aAAAC,GAAa,aAAAC,EAAA,IAAgB,KAAK,OAC/D,EAAE,eAAAC,MAAkB,KAAK,OAGzBC,IADuBD,KAAiB,MACM,aAAaF;AAEjE,WACE,gBAAAI;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC,EAAa;AAAA,UACtB;AAAA,UACA,qBAAqBR,EAAK,YAAA,CAAa;AAAA,UACvCM,MAAyB,cAAc;AAAA,UACvCJ,KAAc;AAAA,QAAA,CACf;AAAA,QACD,MAAK;AAAA,QAEL,UAAA;AAAA,UAAA,gBAAAO,EAAC,OAAA,EAAI,WAAU,0BACb,UAAA,gBAAAA;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,MAAM,KAAK,QAAQV,CAAI;AAAA,cACvB,UAAU,CAACC,CAAO;AAAA,YAAA;AAAA,UAAA,GAEtB;AAAA,UACCG,MAAgB,UACf,gBAAAK;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWD,EAAa;AAAA,gBACtBG,EAAQ,kBAAkB;AAAA,gBAC1BA,EAAQ,gBAAgB;AAAA,gBACxBA,EAAQ,kBAAkB;AAAA,gBAC1B;AAAA,cAAA,CACD;AAAA,cACD,MAAK;AAAA,cAEJ,UAAAP;AAAA,YAAA;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { DropdownOption } from '../../../types/list.types';
|
|
3
3
|
import { IconList } from '../../../types/icon.types';
|
|
4
|
-
|
|
5
4
|
export interface DropdownProps {
|
|
6
5
|
/**
|
|
7
6
|
* Unique identifier for the dropdown
|
|
@@ -92,14 +91,14 @@ export interface DropdownProps {
|
|
|
92
91
|
*/
|
|
93
92
|
onUnblock?: React.MouseEventHandler & React.KeyboardEventHandler;
|
|
94
93
|
}
|
|
95
|
-
export interface
|
|
94
|
+
export interface DropdownState {
|
|
96
95
|
isMenuOpen: boolean;
|
|
97
96
|
isMenuVisible: boolean;
|
|
98
97
|
listShouldScroll: boolean;
|
|
99
98
|
isTooltipVisible: boolean;
|
|
100
99
|
documentWidth: number;
|
|
101
100
|
}
|
|
102
|
-
export default class Dropdown extends React.Component<DropdownProps,
|
|
101
|
+
export default class Dropdown extends React.Component<DropdownProps, DropdownState> {
|
|
103
102
|
private selectMenuRef;
|
|
104
103
|
private buttonRef;
|
|
105
104
|
private listRef;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/dropdown/Dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,iBAAiB,CAAA;AAExB,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IACV;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IAC9B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;IACrC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;IAC/B;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,sBAAsB;QACtB,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;QAC/B,uBAAuB;QACvB,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;QACtB,2BAA2B;QAC3B,IAAI,CAAC,EAAE,YAAY,GAAG,aAAa,CAAA;KACpC,CAAA;IACD;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,wBAAwB;QACxB,KAAK,EAAE,MAAM,CAAA;QACb,mBAAmB;QACnB,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;QAC9B,uBAAuB;QACvB,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;KACvB,CAAA;IACD;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,sBAAsB;QACtB,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;QAC/B,uBAAuB;QACvB,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;QACtB,2BAA2B;QAC3B,IAAI,CAAC,EAAE,YAAY,GAAG,aAAa,CAAA;KACpC,CAAA;IACD;;;OAGG;IACH,YAAY,CAAC,EAAE;QACb,gCAAgC;QAChC,SAAS,EAAE,OAAO,CAAA;QAClB,iCAAiC;QACjC,IAAI,EAAE,QAAQ,CAAA;KACf,CAAA;IACD;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,oBAAoB,CAAA;CACjE;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/dropdown/Dropdown.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import '../../../assets/Dropdown.css';
|
|
2
2
|
import { jsxs as p, jsx as f } from "react/jsx-runtime";
|
|
3
3
|
import h from "react";
|
|
4
|
+
import { t as m } from "../../../do-classnames-DSDFCvzy.js";
|
|
4
5
|
import R from "../../../styles/texts/texts.module.js";
|
|
5
6
|
import T from "../../tags/tooltip/Tooltip.js";
|
|
6
7
|
import v from "../../tags/icon-chip/IconChip.js";
|
|
@@ -8,7 +9,6 @@ import w from "../../tags/chip/Chip.js";
|
|
|
8
9
|
import M from "../../lists/actions-list/ActionsList.js";
|
|
9
10
|
import { Icon as O } from "../../assets/icon/Icon.js";
|
|
10
11
|
import y from "../../actions/menu/Menu.js";
|
|
11
|
-
import { t as m } from "../../../do-classnames-DSDFCvzy.js";
|
|
12
12
|
class _ extends h.Component {
|
|
13
13
|
selectMenuRef;
|
|
14
14
|
buttonRef;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.js","sources":["../../../../src/components/inputs/dropdown/Dropdown.tsx"],"sourcesContent":["import React from 'react'\nimport texts from '@styles/texts/texts.module.scss'\nimport Tooltip from '@components/tags/tooltip/Tooltip'\nimport IconChip from '@components/tags/icon-chip/IconChip'\nimport Chip from '@components/tags/chip/Chip'\nimport ActionsList from '@components/lists/actions-list/ActionsList'\nimport Icon from '@components/assets/icon/Icon'\nimport Menu, { MenuProps } from '@components/actions/menu/Menu'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\nimport type { DropdownOption } from '@tps/list.types'\nimport type { IconList } from '@tps/icon.types'\nimport './dropdown.scss'\n\nexport interface DropdownProps {\n /**\n * Unique identifier for the dropdown\n */\n id: string\n /**\n * List of options to display in the dropdown\n */\n options: Array<DropdownOption>\n /**\n * ID of the currently selected option\n */\n selected: string\n /**\n * ID of the container element for portal rendering\n */\n containerId?: string\n /**\n * Horizontal alignment of the dropdown\n * @default 'LEFT'\n */\n alignment?: 'RIGHT' | 'LEFT' | 'FILL'\n /**\n * Vertical position of helper tooltips\n * @default 'NONE'\n */\n pin?: 'NONE' | 'TOP' | 'BOTTOM'\n /**\n * Helper tooltip configuration\n */\n helper?: {\n /** Tooltip content */\n label: string | React.ReactNode\n /** Tooltip position */\n pin?: 'TOP' | 'BOTTOM'\n /** Tooltip display type */\n type?: 'MULTI_LINE' | 'SINGLE_LINE'\n }\n /**\n * Preview tooltip configuration with image\n */\n preview?: {\n /** Preview image URL */\n image: string\n /** Preview text */\n text: string | React.ReactNode\n /** Preview position */\n pin?: 'TOP' | 'BOTTOM'\n }\n /**\n * Warning tooltip configuration\n */\n warning?: {\n /** Warning message */\n label: string | React.ReactNode\n /** Warning position */\n pin?: 'TOP' | 'BOTTOM'\n /** Warning display type */\n type?: 'MULTI_LINE' | 'SINGLE_LINE'\n }\n /**\n * Reflow configuration for responsive behavior\n * @default { isEnabled: false, icon: 'adjust' }\n */\n shouldReflow?: {\n /** Whether reflow is enabled */\n isEnabled: boolean\n /** Icon to show when reflowed */\n icon: IconList\n }\n /**\n * Whether the dropdown is disabled\n * @default false\n */\n isDisabled?: boolean\n /**\n * Whether the dropdown is blocked\n * @default false\n */\n isBlocked?: boolean\n /**\n * Whether to show a \"New\" badge\n * @default false\n */\n isNew?: boolean\n /**\n * Handler called when unblock is clicked\n */\n onUnblock?: React.MouseEventHandler & React.KeyboardEventHandler\n}\n\nexport interface DropdownStates {\n isMenuOpen: boolean\n isMenuVisible: boolean\n listShouldScroll: boolean\n isTooltipVisible: boolean\n documentWidth: number\n}\n\nexport default class Dropdown extends React.Component<\n DropdownProps,\n DropdownStates\n> {\n private selectMenuRef: React.RefObject<HTMLDivElement>\n private buttonRef: React.RefObject<HTMLButtonElement>\n private listRef: React.RefObject<HTMLDivElement>\n private actionsListRef: React.RefObject<ActionsList>\n private menuRef: React.RefObject<HTMLUListElement>\n private subMenuRef: React.RefObject<HTMLUListElement>\n\n static defaultProps: Partial<DropdownProps> = {\n alignment: 'LEFT',\n pin: 'NONE',\n shouldReflow: { isEnabled: false, icon: 'adjust' },\n isNew: false,\n isBlocked: false,\n isDisabled: false,\n }\n\n constructor(props: DropdownProps) {\n super(props)\n this.state = {\n isMenuOpen: false,\n isMenuVisible: false,\n listShouldScroll: false,\n isTooltipVisible: false,\n documentWidth: typeof window !== 'undefined' ? window.innerWidth : 1024,\n }\n this.selectMenuRef = React.createRef()\n this.buttonRef = React.createRef()\n this.listRef = React.createRef()\n this.actionsListRef = React.createRef()\n this.menuRef = React.createRef()\n this.subMenuRef = React.createRef()\n this.handleClickOutside = this.handleClickOutside.bind(this)\n }\n\n componentDidMount = () => {\n document.addEventListener('mousedown', this.handleClickOutside)\n window.addEventListener('resize', this.handleResize)\n }\n\n componentWillUnmount = () => {\n document.removeEventListener('mousedown', this.handleClickOutside)\n window.removeEventListener('resize', this.handleResize)\n }\n\n // Handlers\n handleResize = () => {\n this.setState({ documentWidth: window.innerWidth })\n }\n\n // Direct Actions\n onOpenMenu = () => {\n const { containerId } = this.props\n const { isMenuOpen } = this.state\n\n this.setState({\n isMenuOpen: !isMenuOpen,\n })\n\n setTimeout(() => {\n if (this.listRef.current != null) {\n const menuRect = this.listRef.current.getBoundingClientRect()\n const buttonRect = this.buttonRef.current?.getBoundingClientRect()\n\n let adjustedTop = 0\n let adjustedLeft = 0\n let shouldTransformY = false\n let shouldTransformX = false\n\n if (menuRect.bottom > window.innerHeight) {\n adjustedTop = window.innerHeight - menuRect.height - 8\n shouldTransformY = true\n }\n if (menuRect.top < 0) {\n adjustedTop = 8\n shouldTransformY = true\n }\n\n if (menuRect.right > window.innerWidth) {\n adjustedLeft = window.innerWidth - menuRect.width - 8\n shouldTransformX = true\n }\n if (menuRect.left < 0) {\n adjustedLeft = 8\n shouldTransformX = true\n }\n\n if (shouldTransformY) {\n if (buttonRect)\n this.listRef.current.style.top = `${adjustedTop - buttonRect.top}px`\n this.listRef.current.style.transform = shouldTransformX\n ? `translate(${adjustedLeft - menuRect.left}px, 0)`\n : 'none'\n }\n\n if (shouldTransformX && !shouldTransformY)\n this.listRef.current.style.transform = `translateX(${adjustedLeft - menuRect.left}px)`\n\n if (containerId !== undefined) {\n const containerElement = document.getElementById(containerId)\n if (containerElement) {\n const container = containerElement.getBoundingClientRect()\n const button = this.buttonRef.current?.getBoundingClientRect()\n\n const diffTop =\n this.listRef.current.getBoundingClientRect().top - container.top\n const diffBottom =\n this.listRef.current.getBoundingClientRect().bottom -\n container.bottom\n\n if (diffTop < -16 && button) {\n this.listRef.current.style.top = `${container.top - button.top + 16}px`\n this.setState({\n listShouldScroll: true,\n })\n\n const diffBottomV2 =\n this.listRef.current.getBoundingClientRect().bottom -\n container.bottom\n\n if (diffBottomV2 < -16)\n this.listRef.current.style.bottom = `${\n button.bottom - container.bottom + 16\n }px`\n }\n\n if (diffBottom > -16 && button) {\n this.listRef.current.style.bottom = `${\n button.bottom - container.bottom + 16\n }px`\n this.setState({\n listShouldScroll: true,\n })\n\n const diffTopV2 =\n this.listRef.current.getBoundingClientRect().top - container.top\n\n if (diffTopV2 > -16)\n this.listRef.current.style.top = `${container.top - button.top + 16}px`\n }\n\n this.listRef.current.style.visibility = 'visible'\n }\n }\n\n // Rendre le menu visible après positionnement\n this.setState({ isMenuVisible: true })\n }\n }, 1)\n }\n\n setPosition = () => {\n const { options, selected } = this.props\n if (!this.selectMenuRef.current || !this.listRef.current) return '0px'\n\n const listComputedStyle = getComputedStyle(this.listRef.current)\n const itemHeight = parseInt(\n listComputedStyle.getPropertyValue('--actions-list-item-height') || '32',\n 10\n )\n const dividerHeight = parseInt(\n listComputedStyle.getPropertyValue('--actions-list-divider-height') ||\n '1',\n 10\n )\n const dividerMarginTop = parseInt(\n listComputedStyle.getPropertyValue('--actions-list-divider-margin-top') ||\n '11',\n 10\n )\n const dividerMarginBottom = parseInt(\n listComputedStyle.getPropertyValue(\n '--actions-list-divider-margin-bottom'\n ) || '8',\n 10\n )\n\n const menuPaddingTop = parseInt(\n listComputedStyle.getPropertyValue('--actions-list-padding-top') || '4',\n 10\n )\n\n let totalHeight = menuPaddingTop\n\n for (let i = 0; i < options.length; i++) {\n const option = options[i]\n\n if (\n option.value === selected ||\n option.children?.find((child) => child.value === selected) !== undefined\n )\n break\n\n if (option.type === 'SEPARATOR')\n totalHeight += dividerHeight + dividerMarginTop + dividerMarginBottom\n else if (\n option.type === 'TITLE' ||\n option.type === 'OPTION' ||\n option.type === 'GROUP'\n )\n totalHeight += itemHeight\n }\n\n return `-${totalHeight}px`\n }\n\n handleClickOutside = (e: Event) => {\n const target = e.target as HTMLElement\n if (\n target === this.buttonRef.current ||\n target === this.menuRef.current ||\n target === this.subMenuRef.current ||\n (target.tagName === 'HR' && this.menuRef.current?.contains(target)) ||\n (target.dataset.role === 'GROUP' &&\n this.menuRef.current?.contains(target))\n )\n this.setState({\n isMenuOpen: true,\n })\n else\n this.setState({\n isMenuOpen: false,\n isMenuVisible: false,\n listShouldScroll: false,\n })\n }\n\n findSelectedOption = (options: Array<DropdownOption>): string => {\n const { selected } = this.props\n const label: Array<string> = []\n\n selected.split(', ').forEach((value) => {\n options.forEach((option) => {\n if (option.value === value) label.push(option.label ?? '')\n if (\n option.children?.find((child) => child.value === value) !== undefined\n )\n label.push(\n option.children?.find((child) => child.value === value)?.label ?? ''\n )\n })\n })\n return label.join(', ')\n }\n\n // Template\n Status = () => {\n const { warning, preview, isBlocked, isNew, onUnblock } = this.props\n\n if (warning || isBlocked || isNew)\n return (\n <div className=\"select-menu__status\">\n {warning !== undefined && (\n <IconChip\n iconType=\"PICTO\"\n iconName=\"warning\"\n text={warning.label}\n pin={warning.pin}\n type={warning.type}\n />\n )}\n {(isBlocked || isNew) && (\n <Chip\n preview={preview}\n isSolo\n action={isBlocked ? onUnblock : undefined}\n >\n {isNew ? 'New' : 'Pro'}\n </Chip>\n )}\n </div>\n )\n }\n\n // Templates\n MenuButton = () => {\n const {\n id,\n helper,\n warning,\n options,\n selected,\n pin,\n alignment,\n shouldReflow,\n isBlocked,\n } = this.props\n\n const newAlignment = []\n\n if (pin === 'TOP' || pin === 'NONE') newAlignment.push('BOTTOM')\n else newAlignment.push('TOP')\n\n if (alignment === 'LEFT' || alignment === 'FILL') newAlignment.push('LEFT')\n else newAlignment.push('RIGHT')\n\n return (\n <Menu\n id={id}\n options={options}\n selected={selected}\n alignment={`${newAlignment.join('_')}` as MenuProps['alignment']}\n icon={shouldReflow?.icon}\n helper={helper}\n warning={warning}\n isBlocked={isBlocked}\n />\n )\n }\n\n DropdownButton = () => {\n const {\n id,\n alignment,\n options,\n selected,\n helper,\n containerId,\n isDisabled,\n isBlocked,\n } = this.props\n const { isMenuOpen, listShouldScroll, isTooltipVisible } = this.state\n\n return (\n <div\n id={id}\n className={doClassnames([\n 'select-menu',\n (() => {\n if (alignment === 'LEFT') return 'select-menu--left'\n if (alignment === 'RIGHT') return 'select-menu--right'\n return 'select-menu--fill'\n })(),\n (isDisabled || isBlocked) && 'select-menu--disabled',\n ])}\n ref={this.selectMenuRef}\n >\n <button\n role=\"combobox\"\n className={doClassnames([\n 'select-menu__button',\n isMenuOpen && 'select-menu__button--active',\n ])}\n disabled={isDisabled || isBlocked}\n aria-expanded={isMenuOpen ? 'true' : 'false'}\n {...(isMenuOpen &&\n (containerId === undefined ? this.state.isMenuVisible : true) && {\n 'aria-controls': `${id}-menu`,\n })}\n aria-label={`Select option: ${this.findSelectedOption(options)}`}\n aria-haspopup=\"menu\"\n onKeyDown={(e) => {\n if (\n e.key === ' ' ||\n (e.key === 'Enter' && !(isDisabled || isBlocked))\n ) {\n this.onOpenMenu()\n setTimeout(\n () => this.actionsListRef.current?.focusFirstMenuItem(),\n 0\n )\n }\n if (e.key === 'Escape') return (e.target as HTMLElement).blur()\n return null\n }}\n onMouseDown={!(isDisabled || isBlocked) ? this.onOpenMenu : undefined}\n onMouseEnter={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onMouseLeave={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n onFocus={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onBlur={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n tabIndex={0}\n ref={this.buttonRef}\n >\n <span\n className={doClassnames([\n texts['type--truncated'],\n texts.type,\n 'select-menu__label',\n ])}\n >\n {this.findSelectedOption(options)}\n </span>\n <span className=\"select-menu__caret\">\n <Icon\n type=\"PICTO\"\n iconName=\"caret-down\"\n />\n </span>\n {isTooltipVisible && helper !== undefined && (\n <Tooltip\n pin={helper?.pin || 'BOTTOM'}\n type={helper?.type || 'SINGLE_LINE'}\n >\n {helper?.label}\n </Tooltip>\n )}\n </button>\n {this.Status()}\n {(() => {\n const { pin } = this.props\n\n if (isMenuOpen)\n return (\n <div\n className=\"floating-menu\"\n id={`${id}-menu`}\n style={{\n position: 'absolute',\n zIndex: 99,\n top:\n pin === 'TOP'\n ? '-4px'\n : pin === 'BOTTOM'\n ? 'auto'\n : this.setPosition(),\n bottom: pin === 'BOTTOM' ? '-4px' : 'auto',\n right: alignment === 'RIGHT' ? 0 : 'auto',\n left: alignment === 'LEFT' ? 0 : 'auto',\n visibility:\n containerId === undefined && this.state.isMenuVisible\n ? 'visible'\n : 'hidden',\n }}\n ref={this.listRef}\n >\n <ActionsList\n options={options}\n selected={selected}\n direction={alignment?.includes('LEFT') ? 'RIGHT' : 'LEFT'}\n shouldScroll={listShouldScroll}\n containerId={containerId}\n onCancellation={() => this.setState({ isMenuOpen: false })}\n ref={this.actionsListRef}\n menuRef={this.menuRef}\n subMenuRef={this.subMenuRef}\n />\n </div>\n )\n return null\n })()}\n </div>\n )\n }\n\n // Render\n render() {\n const { shouldReflow } = this.props\n const { documentWidth } = this.state\n\n const isReflowActive = shouldReflow?.isEnabled && documentWidth <= 460\n\n if (isReflowActive) return this.MenuButton()\n return this.DropdownButton()\n }\n}\n"],"names":["Dropdown","React","props","containerId","isMenuOpen","menuRect","buttonRect","adjustedTop","adjustedLeft","shouldTransformY","shouldTransformX","containerElement","container","button","diffTop","diffBottom","options","selected","listComputedStyle","itemHeight","dividerHeight","dividerMarginTop","dividerMarginBottom","totalHeight","i","option","child","e","target","label","value","warning","preview","isBlocked","isNew","onUnblock","jsxs","jsx","IconChip","Chip","id","helper","pin","alignment","shouldReflow","newAlignment","Menu","isDisabled","listShouldScroll","isTooltipVisible","doClassnames","texts","Icon","Tooltip","ActionsList","documentWidth"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dropdown.js","sources":["../../../../src/components/inputs/dropdown/Dropdown.tsx"],"sourcesContent":["import React from 'react'\nimport { doClassnames } from '@unoff/utils'\nimport texts from '@styles/texts/texts.module.scss'\nimport Tooltip from '@components/tags/tooltip/Tooltip'\nimport IconChip from '@components/tags/icon-chip/IconChip'\nimport Chip from '@components/tags/chip/Chip'\nimport ActionsList from '@components/lists/actions-list/ActionsList'\nimport Icon from '@components/assets/icon/Icon'\nimport Menu, { MenuProps } from '@components/actions/menu/Menu'\nimport type { DropdownOption } from '@tps/list.types'\nimport type { IconList } from '@tps/icon.types'\nimport './dropdown.scss'\n\nexport interface DropdownProps {\n /**\n * Unique identifier for the dropdown\n */\n id: string\n /**\n * List of options to display in the dropdown\n */\n options: Array<DropdownOption>\n /**\n * ID of the currently selected option\n */\n selected: string\n /**\n * ID of the container element for portal rendering\n */\n containerId?: string\n /**\n * Horizontal alignment of the dropdown\n * @default 'LEFT'\n */\n alignment?: 'RIGHT' | 'LEFT' | 'FILL'\n /**\n * Vertical position of helper tooltips\n * @default 'NONE'\n */\n pin?: 'NONE' | 'TOP' | 'BOTTOM'\n /**\n * Helper tooltip configuration\n */\n helper?: {\n /** Tooltip content */\n label: string | React.ReactNode\n /** Tooltip position */\n pin?: 'TOP' | 'BOTTOM'\n /** Tooltip display type */\n type?: 'MULTI_LINE' | 'SINGLE_LINE'\n }\n /**\n * Preview tooltip configuration with image\n */\n preview?: {\n /** Preview image URL */\n image: string\n /** Preview text */\n text: string | React.ReactNode\n /** Preview position */\n pin?: 'TOP' | 'BOTTOM'\n }\n /**\n * Warning tooltip configuration\n */\n warning?: {\n /** Warning message */\n label: string | React.ReactNode\n /** Warning position */\n pin?: 'TOP' | 'BOTTOM'\n /** Warning display type */\n type?: 'MULTI_LINE' | 'SINGLE_LINE'\n }\n /**\n * Reflow configuration for responsive behavior\n * @default { isEnabled: false, icon: 'adjust' }\n */\n shouldReflow?: {\n /** Whether reflow is enabled */\n isEnabled: boolean\n /** Icon to show when reflowed */\n icon: IconList\n }\n /**\n * Whether the dropdown is disabled\n * @default false\n */\n isDisabled?: boolean\n /**\n * Whether the dropdown is blocked\n * @default false\n */\n isBlocked?: boolean\n /**\n * Whether to show a \"New\" badge\n * @default false\n */\n isNew?: boolean\n /**\n * Handler called when unblock is clicked\n */\n onUnblock?: React.MouseEventHandler & React.KeyboardEventHandler\n}\n\nexport interface DropdownState {\n isMenuOpen: boolean\n isMenuVisible: boolean\n listShouldScroll: boolean\n isTooltipVisible: boolean\n documentWidth: number\n}\n\nexport default class Dropdown extends React.Component<DropdownProps, DropdownState> {\n private selectMenuRef: React.RefObject<HTMLDivElement>\n private buttonRef: React.RefObject<HTMLButtonElement>\n private listRef: React.RefObject<HTMLDivElement>\n private actionsListRef: React.RefObject<ActionsList>\n private menuRef: React.RefObject<HTMLUListElement>\n private subMenuRef: React.RefObject<HTMLUListElement>\n\n static defaultProps: Partial<DropdownProps> = {\n alignment: 'LEFT',\n pin: 'NONE',\n shouldReflow: { isEnabled: false, icon: 'adjust' },\n isNew: false,\n isBlocked: false,\n isDisabled: false,\n }\n\n constructor(props: DropdownProps) {\n super(props)\n this.state = {\n isMenuOpen: false,\n isMenuVisible: false,\n listShouldScroll: false,\n isTooltipVisible: false,\n documentWidth: typeof window !== 'undefined' ? window.innerWidth : 1024,\n }\n this.selectMenuRef = React.createRef()\n this.buttonRef = React.createRef()\n this.listRef = React.createRef()\n this.actionsListRef = React.createRef()\n this.menuRef = React.createRef()\n this.subMenuRef = React.createRef()\n this.handleClickOutside = this.handleClickOutside.bind(this)\n }\n\n componentDidMount = () => {\n document.addEventListener('mousedown', this.handleClickOutside)\n window.addEventListener('resize', this.handleResize)\n }\n\n componentWillUnmount = () => {\n document.removeEventListener('mousedown', this.handleClickOutside)\n window.removeEventListener('resize', this.handleResize)\n }\n\n // Handlers\n handleResize = () => {\n this.setState({ documentWidth: window.innerWidth })\n }\n\n // Direct Actions\n onOpenMenu = () => {\n const { containerId } = this.props\n const { isMenuOpen } = this.state\n\n this.setState({\n isMenuOpen: !isMenuOpen,\n })\n\n setTimeout(() => {\n if (this.listRef.current != null) {\n const menuRect = this.listRef.current.getBoundingClientRect()\n const buttonRect = this.buttonRef.current?.getBoundingClientRect()\n\n let adjustedTop = 0\n let adjustedLeft = 0\n let shouldTransformY = false\n let shouldTransformX = false\n\n if (menuRect.bottom > window.innerHeight) {\n adjustedTop = window.innerHeight - menuRect.height - 8\n shouldTransformY = true\n }\n if (menuRect.top < 0) {\n adjustedTop = 8\n shouldTransformY = true\n }\n\n if (menuRect.right > window.innerWidth) {\n adjustedLeft = window.innerWidth - menuRect.width - 8\n shouldTransformX = true\n }\n if (menuRect.left < 0) {\n adjustedLeft = 8\n shouldTransformX = true\n }\n\n if (shouldTransformY) {\n if (buttonRect)\n this.listRef.current.style.top = `${adjustedTop - buttonRect.top}px`\n this.listRef.current.style.transform = shouldTransformX\n ? `translate(${adjustedLeft - menuRect.left}px, 0)`\n : 'none'\n }\n\n if (shouldTransformX && !shouldTransformY)\n this.listRef.current.style.transform = `translateX(${adjustedLeft - menuRect.left}px)`\n\n if (containerId !== undefined) {\n const containerElement = document.getElementById(containerId)\n if (containerElement) {\n const container = containerElement.getBoundingClientRect()\n const button = this.buttonRef.current?.getBoundingClientRect()\n\n const diffTop =\n this.listRef.current.getBoundingClientRect().top - container.top\n const diffBottom =\n this.listRef.current.getBoundingClientRect().bottom -\n container.bottom\n\n if (diffTop < -16 && button) {\n this.listRef.current.style.top = `${container.top - button.top + 16}px`\n this.setState({\n listShouldScroll: true,\n })\n\n const diffBottomV2 =\n this.listRef.current.getBoundingClientRect().bottom -\n container.bottom\n\n if (diffBottomV2 < -16)\n this.listRef.current.style.bottom = `${\n button.bottom - container.bottom + 16\n }px`\n }\n\n if (diffBottom > -16 && button) {\n this.listRef.current.style.bottom = `${\n button.bottom - container.bottom + 16\n }px`\n this.setState({\n listShouldScroll: true,\n })\n\n const diffTopV2 =\n this.listRef.current.getBoundingClientRect().top - container.top\n\n if (diffTopV2 > -16)\n this.listRef.current.style.top = `${container.top - button.top + 16}px`\n }\n\n this.listRef.current.style.visibility = 'visible'\n }\n }\n\n // Rendre le menu visible après positionnement\n this.setState({ isMenuVisible: true })\n }\n }, 1)\n }\n\n setPosition = () => {\n const { options, selected } = this.props\n if (!this.selectMenuRef.current || !this.listRef.current) return '0px'\n\n const listComputedStyle = getComputedStyle(this.listRef.current)\n const itemHeight = parseInt(\n listComputedStyle.getPropertyValue('--actions-list-item-height') || '32',\n 10\n )\n const dividerHeight = parseInt(\n listComputedStyle.getPropertyValue('--actions-list-divider-height') ||\n '1',\n 10\n )\n const dividerMarginTop = parseInt(\n listComputedStyle.getPropertyValue('--actions-list-divider-margin-top') ||\n '11',\n 10\n )\n const dividerMarginBottom = parseInt(\n listComputedStyle.getPropertyValue(\n '--actions-list-divider-margin-bottom'\n ) || '8',\n 10\n )\n\n const menuPaddingTop = parseInt(\n listComputedStyle.getPropertyValue('--actions-list-padding-top') || '4',\n 10\n )\n\n let totalHeight = menuPaddingTop\n\n for (let i = 0; i < options.length; i++) {\n const option = options[i]\n\n if (\n option.value === selected ||\n option.children?.find((child) => child.value === selected) !== undefined\n )\n break\n\n if (option.type === 'SEPARATOR')\n totalHeight += dividerHeight + dividerMarginTop + dividerMarginBottom\n else if (\n option.type === 'TITLE' ||\n option.type === 'OPTION' ||\n option.type === 'GROUP'\n )\n totalHeight += itemHeight\n }\n\n return `-${totalHeight}px`\n }\n\n handleClickOutside = (e: Event) => {\n const target = e.target as HTMLElement\n if (\n target === this.buttonRef.current ||\n target === this.menuRef.current ||\n target === this.subMenuRef.current ||\n (target.tagName === 'HR' && this.menuRef.current?.contains(target)) ||\n (target.dataset.role === 'GROUP' &&\n this.menuRef.current?.contains(target))\n )\n this.setState({\n isMenuOpen: true,\n })\n else\n this.setState({\n isMenuOpen: false,\n isMenuVisible: false,\n listShouldScroll: false,\n })\n }\n\n findSelectedOption = (options: Array<DropdownOption>): string => {\n const { selected } = this.props\n const label: Array<string> = []\n\n selected.split(', ').forEach((value) => {\n options.forEach((option) => {\n if (option.value === value) label.push(option.label ?? '')\n if (\n option.children?.find((child) => child.value === value) !== undefined\n )\n label.push(\n option.children?.find((child) => child.value === value)?.label ?? ''\n )\n })\n })\n return label.join(', ')\n }\n\n // Template\n Status = () => {\n const { warning, preview, isBlocked, isNew, onUnblock } = this.props\n\n if (warning || isBlocked || isNew)\n return (\n <div className=\"select-menu__status\">\n {warning !== undefined && (\n <IconChip\n iconType=\"PICTO\"\n iconName=\"warning\"\n text={warning.label}\n pin={warning.pin}\n type={warning.type}\n />\n )}\n {(isBlocked || isNew) && (\n <Chip\n preview={preview}\n isSolo\n action={isBlocked ? onUnblock : undefined}\n >\n {isNew ? 'New' : 'Pro'}\n </Chip>\n )}\n </div>\n )\n }\n\n // Templates\n MenuButton = () => {\n const {\n id,\n helper,\n warning,\n options,\n selected,\n pin,\n alignment,\n shouldReflow,\n isBlocked,\n } = this.props\n\n const newAlignment = []\n\n if (pin === 'TOP' || pin === 'NONE') newAlignment.push('BOTTOM')\n else newAlignment.push('TOP')\n\n if (alignment === 'LEFT' || alignment === 'FILL') newAlignment.push('LEFT')\n else newAlignment.push('RIGHT')\n\n return (\n <Menu\n id={id}\n options={options}\n selected={selected}\n alignment={`${newAlignment.join('_')}` as MenuProps['alignment']}\n icon={shouldReflow?.icon}\n helper={helper}\n warning={warning}\n isBlocked={isBlocked}\n />\n )\n }\n\n DropdownButton = () => {\n const {\n id,\n alignment,\n options,\n selected,\n helper,\n containerId,\n isDisabled,\n isBlocked,\n } = this.props\n const { isMenuOpen, listShouldScroll, isTooltipVisible } = this.state\n\n return (\n <div\n id={id}\n className={doClassnames([\n 'select-menu',\n (() => {\n if (alignment === 'LEFT') return 'select-menu--left'\n if (alignment === 'RIGHT') return 'select-menu--right'\n return 'select-menu--fill'\n })(),\n (isDisabled || isBlocked) && 'select-menu--disabled',\n ])}\n ref={this.selectMenuRef}\n >\n <button\n role=\"combobox\"\n className={doClassnames([\n 'select-menu__button',\n isMenuOpen && 'select-menu__button--active',\n ])}\n disabled={isDisabled || isBlocked}\n aria-expanded={isMenuOpen ? 'true' : 'false'}\n {...(isMenuOpen &&\n (containerId === undefined ? this.state.isMenuVisible : true) && {\n 'aria-controls': `${id}-menu`,\n })}\n aria-label={`Select option: ${this.findSelectedOption(options)}`}\n aria-haspopup=\"menu\"\n onKeyDown={(e) => {\n if (\n e.key === ' ' ||\n (e.key === 'Enter' && !(isDisabled || isBlocked))\n ) {\n this.onOpenMenu()\n setTimeout(\n () => this.actionsListRef.current?.focusFirstMenuItem(),\n 0\n )\n }\n if (e.key === 'Escape') return (e.target as HTMLElement).blur()\n return null\n }}\n onMouseDown={!(isDisabled || isBlocked) ? this.onOpenMenu : undefined}\n onMouseEnter={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onMouseLeave={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n onFocus={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onBlur={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n tabIndex={0}\n ref={this.buttonRef}\n >\n <span\n className={doClassnames([\n texts['type--truncated'],\n texts.type,\n 'select-menu__label',\n ])}\n >\n {this.findSelectedOption(options)}\n </span>\n <span className=\"select-menu__caret\">\n <Icon\n type=\"PICTO\"\n iconName=\"caret-down\"\n />\n </span>\n {isTooltipVisible && helper !== undefined && (\n <Tooltip\n pin={helper?.pin || 'BOTTOM'}\n type={helper?.type || 'SINGLE_LINE'}\n >\n {helper?.label}\n </Tooltip>\n )}\n </button>\n {this.Status()}\n {(() => {\n const { pin } = this.props\n\n if (isMenuOpen)\n return (\n <div\n className=\"floating-menu\"\n id={`${id}-menu`}\n style={{\n position: 'absolute',\n zIndex: 99,\n top:\n pin === 'TOP'\n ? '-4px'\n : pin === 'BOTTOM'\n ? 'auto'\n : this.setPosition(),\n bottom: pin === 'BOTTOM' ? '-4px' : 'auto',\n right: alignment === 'RIGHT' ? 0 : 'auto',\n left: alignment === 'LEFT' ? 0 : 'auto',\n visibility:\n containerId === undefined && this.state.isMenuVisible\n ? 'visible'\n : 'hidden',\n }}\n ref={this.listRef}\n >\n <ActionsList\n options={options}\n selected={selected}\n direction={alignment?.includes('LEFT') ? 'RIGHT' : 'LEFT'}\n shouldScroll={listShouldScroll}\n containerId={containerId}\n onCancellation={() => this.setState({ isMenuOpen: false })}\n ref={this.actionsListRef}\n menuRef={this.menuRef}\n subMenuRef={this.subMenuRef}\n />\n </div>\n )\n return null\n })()}\n </div>\n )\n }\n\n // Render\n render() {\n const { shouldReflow } = this.props\n const { documentWidth } = this.state\n\n const isReflowActive = shouldReflow?.isEnabled && documentWidth <= 460\n\n if (isReflowActive) return this.MenuButton()\n return this.DropdownButton()\n }\n}\n"],"names":["Dropdown","React","props","containerId","isMenuOpen","menuRect","buttonRect","adjustedTop","adjustedLeft","shouldTransformY","shouldTransformX","containerElement","container","button","diffTop","diffBottom","options","selected","listComputedStyle","itemHeight","dividerHeight","dividerMarginTop","dividerMarginBottom","totalHeight","i","option","child","e","target","label","value","warning","preview","isBlocked","isNew","onUnblock","jsxs","jsx","IconChip","Chip","id","helper","pin","alignment","shouldReflow","newAlignment","Menu","isDisabled","listShouldScroll","isTooltipVisible","doClassnames","texts","Icon","Tooltip","ActionsList","documentWidth"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
|
|
3
2
|
interface FileContent {
|
|
4
3
|
name: string;
|
|
5
4
|
content: string | ArrayBuffer | null | undefined;
|
|
@@ -55,13 +54,13 @@ export interface DropzoneProps {
|
|
|
55
54
|
*/
|
|
56
55
|
onImportFiles: (files: Array<FileContent>) => void;
|
|
57
56
|
}
|
|
58
|
-
export interface
|
|
57
|
+
export interface DropzoneState {
|
|
59
58
|
status: 'READY' | 'WAITING' | 'WARNING' | 'ERROR';
|
|
60
59
|
isLoading: boolean;
|
|
61
60
|
isDraggedOver: boolean;
|
|
62
61
|
blackList: Array<string>;
|
|
63
62
|
}
|
|
64
|
-
export default class Dropzone extends React.Component<DropzoneProps,
|
|
63
|
+
export default class Dropzone extends React.Component<DropzoneProps, DropzoneState> {
|
|
65
64
|
stopLoading: NodeJS.Timeout | undefined;
|
|
66
65
|
static defaultProps: Partial<DropzoneProps>;
|
|
67
66
|
constructor(props: DropzoneProps);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropzone.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/dropzone/Dropzone.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Dropzone.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/dropzone/Dropzone.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,iBAAiB,CAAA;AAExB,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,CAAA;CACjD;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAChC;;OAEG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,CAAA;CACnD;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;IACjD,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CACzB;AAED,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACjF,WAAW,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAA;IAEvC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,aAAa,CAAC,CAM1C;gBAEW,KAAK,EAAE,aAAa;IAYhC,kBAAkB,GAAI,WAAW,QAAQ,CAAC,aAAa,CAAC,UAqBvD;IAGD,QAAQ,GAAI,YAAY,KAAK,CAAC,IAAI,CAAC,EAAE,cAAc,KAAK,CAAC,IAAI,CAAC,UAmC7D;IAED,qBAAqB,aAsBpB;IAED,mBAAmB,GAAI,OAAO,KAAK,CAAC,SAAS,UAiC5C;IAED,UAAU,GAAI,OAAO,KAAK,CAAC,SAAS,UAKnC;IAED,WAAW,GAAI,OAAO,KAAK,CAAC,SAAS,UAKpC;IAED,WAAW,GAAI,OAAO,KAAK,CAAC,SAAS,UAKpC;IAED,MAAM;CAiHP"}
|