/** * Widgets d'interface PARTAGES — zone viewer. * * Extraits de `components/configmenus/MenuCommon.tsx` pour OS#1331, sur le meme motif * qu'`OSTooltip`. Ce sont des primitives de formulaire et de mise en page, sans rien de l'atelier * d'edition : elles ne dependent que de React, Chakra et de modules de la zone viewer. Verifie * avant deplacement : aucune n'utilise `SankeyLinkSelectionSimple` ni `SankeyNodeSelectionSimple`, * les deux seuls symboles d'edition que `MenuCommon` importe. * * Motif du deplacement : elles etaient importees depuis OSP et SA, ce qui aurait force ces paquets a * dependre du paquet EDITEUR (AGPL) pour un champ de saisie ou un selecteur de couleur. La frontiere * de licence doit passer entre « primitives d'UI partagees » et « atelier d'edition », pas au milieu * d'un fichier de 2231 lignes. * * `MenuCommon` les reimporte pour son usage interne et les reexporte : aucun import existant ne casse. */ import React, { FC, ChangeEvent } from 'react'; import type { CheckboxProps } from '@chakra-ui/react'; import type { TFunction } from 'i18next'; import { Class_ApplicationData } from '../../types/ApplicationData'; import { AttributeConfig, ElementsType, ShapePrefix } from '../../Elements/ElementsAttributesConfig'; import type { FCType_WrapperBoxSubSectionMenu } from '../SankeyMenuTypes'; export declare const InputIndicatorWrapper: ({ isOverloaded, isMultiValue, provenance, children, fit, t: _t }: React.PropsWithChildren<{ isOverloaded?: boolean; isMultiValue?: boolean; provenance?: string; children: React.ReactNode; fit?: boolean; t: (key: string) => string; }>) => React.JSX.Element; /** * Component developped for number input of the config menu * @param {*} { * ref_to_set_value, * function_on_blur, * menu_for_style = false, * minimum_value = Number.MIN_SAFE_INTEGER, * maximum_value = Number.MAX_SAFE_INTEGER, * stepper = false, * step = 1, * unit_text = undefined, * } * @return {*} */ export type FCType_ConfigMenuTextInput = { t: TFunction; default_value: string | null | undefined; function_on_blur: (_: string | null) => void; menu_for_style?: boolean; disabled?: boolean; multiValue?: boolean; isOverloaded?: boolean; provenance?: string; }; declare global { interface Window { EyeDropper?: { new (): EyeDropper; }; } } export interface EyeDropper { open(): Promise<{ sRGBHex: string; }>; } export declare const WrapperBoxSubSectionMenu: FC; export type typeElementSelectable = { label: string; value: string; selected: boolean; disabled?: boolean; }[]; /** * Component to select multple element from a list passed in parameter * * @param {*} { * elements, * selected_elements, * onClick * } * @return {*} */ export declare const OSMultiSelect: ({ elements, onClick, placeholder, with_select_all }: { t: TFunction; elements: typeElementSelectable; onClick: (entries: typeElementSelectable) => void; placeholder?: string; with_select_all?: boolean; }) => React.JSX.Element; export declare const CustomFaEyeCheckIcon: (props: CheckboxProps) => React.JSX.Element; /** * #1243 — PROVENANCE d'un attribut : d'où vient la valeur affichée ? * * Modèle de la cascade (cf. Class_ProtoElement) : * surcharge locale > dernier style de la cascade qui définit l'attribut * > valeur d'usine (config.default) * * Rendue en TOOLTIP du contrôle (pas en étiquette permanente : le panneau est * déjà dense, et le retrait/liseré porte déjà l'information principale). Le * nom du style répond à la question que le retrait seul laisse ouverte : * « hérité, oui — mais de QUI ? ». * * @returns un libellé traduit, ou undefined si non pertinent (édition de style, * sélection vide, valeurs divergentes entre éléments). */ export declare const ConfigMenuTextInput: React.ForwardRefExoticComponent>; export declare const MenuColorPicker: ({ initialColor, label, onColorChange, isDisabled, disabledTooltip, showLabel, showEyeDropper }: { initialColor: string; label?: string; onColorChange: (color: string) => void; isDisabled?: boolean; disabledTooltip?: string; showLabel?: boolean; showEyeDropper?: boolean; }) => React.JSX.Element; export interface ColorPickerWithSustainableProps>> { app_data: Class_ApplicationData; elements: ElementsType; config: T; prefix: ShapePrefix | 'value_label' | 'name_label' | 'icon'; attributePath: string; colorAttributeKey: keyof T; sustainableAttributeKey: keyof T; refreshParentComponent: () => void; } export declare const getButtonVariant: (position: "left" | "center" | "right" | "", isIndeterminate: boolean, isActive: boolean) => string; /** * Sélecteur de fichier localisé. * * Le navigateur rend le bouton et le libellé d'un natif * ("Parcourir..." / "Aucun fichier sélectionné") dans SA propre langue, non * traduisible via l'i18n de l'app. On masque donc l'input natif et on pilote * nous-mêmes un bouton + un libellé via t(), pour qu'ils suivent la langue de * l'application. La fenêtre système de choix de fichier reste, elle, dans la * langue de l'OS (hors de portée du code web). */ export declare const LocalizedFileInput: FC<{ accept?: string; multiple?: boolean; onChange: (evt: ChangeEvent) => void; currentFileName?: string; disabled?: boolean; buttonSize?: string; gridTemplateColumns?: string; }>;