@seij/common-ui 0.0.1
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/LICENSE +201 -0
- package/README.md +7 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +113 -0
- package/dist/index.js.map +1 -0
- package/dist/init/SeijUIProvider.d.ts +15 -0
- package/dist/init/SeijUIProvider.d.ts.map +1 -0
- package/dist/init/SeijUIProvider.js +20 -0
- package/dist/init/SeijUIProvider.js.map +1 -0
- package/dist/lib/applicationshell/ApplicationShell.d.ts +13 -0
- package/dist/lib/applicationshell/ApplicationShell.d.ts.map +1 -0
- package/dist/lib/applicationshell/ApplicationShell.js +110 -0
- package/dist/lib/applicationshell/ApplicationShell.js.map +1 -0
- package/dist/lib/applicationshell/ApplicationShell.types.d.ts +9 -0
- package/dist/lib/applicationshell/ApplicationShell.types.d.ts.map +1 -0
- package/dist/lib/applicationshell/TitleBar.d.ts +9 -0
- package/dist/lib/applicationshell/TitleBar.d.ts.map +1 -0
- package/dist/lib/applicationshell/TitleBar.js +100 -0
- package/dist/lib/applicationshell/TitleBar.js.map +1 -0
- package/dist/lib/badge/Badge.d.ts +5 -0
- package/dist/lib/badge/Badge.d.ts.map +1 -0
- package/dist/lib/badge/Badge.js +9 -0
- package/dist/lib/badge/Badge.js.map +1 -0
- package/dist/lib/button/Button.d.ts +16 -0
- package/dist/lib/button/Button.d.ts.map +1 -0
- package/dist/lib/button/Button.js +15 -0
- package/dist/lib/button/Button.js.map +1 -0
- package/dist/lib/button_bar/ButtonBar.d.ts +5 -0
- package/dist/lib/button_bar/ButtonBar.d.ts.map +1 -0
- package/dist/lib/button_bar/ButtonBar.js +26 -0
- package/dist/lib/button_bar/ButtonBar.js.map +1 -0
- package/dist/lib/common-ui.d.ts +5 -0
- package/dist/lib/common-ui.d.ts.map +1 -0
- package/dist/lib/common-ui.js +9 -0
- package/dist/lib/common-ui.js.map +1 -0
- package/dist/lib/commons/currencysymbol.d.ts +2 -0
- package/dist/lib/commons/currencysymbol.d.ts.map +1 -0
- package/dist/lib/commons/currencysymbol.js +15 -0
- package/dist/lib/commons/currencysymbol.js.map +1 -0
- package/dist/lib/commons/obfuscatelabel.d.ts +17 -0
- package/dist/lib/commons/obfuscatelabel.d.ts.map +1 -0
- package/dist/lib/commons/obfuscatelabel.js +23 -0
- package/dist/lib/commons/obfuscatelabel.js.map +1 -0
- package/dist/lib/data_table/DataTable.d.ts +32 -0
- package/dist/lib/data_table/DataTable.d.ts.map +1 -0
- package/dist/lib/data_table/DataTable.js +40 -0
- package/dist/lib/data_table/DataTable.js.map +1 -0
- package/dist/lib/datatabledynamic/DataTableDynamic.d.ts +14 -0
- package/dist/lib/datatabledynamic/DataTableDynamic.d.ts.map +1 -0
- package/dist/lib/datatabledynamic/DataTableDynamic.js +18 -0
- package/dist/lib/datatabledynamic/DataTableDynamic.js.map +1 -0
- package/dist/lib/devise/DeviseContext.d.ts +2 -0
- package/dist/lib/devise/DeviseContext.d.ts.map +1 -0
- package/dist/lib/devise/DeviseContext.js +6 -0
- package/dist/lib/devise/DeviseContext.js.map +1 -0
- package/dist/lib/error_notifier/ErrorNotifier.d.ts +6 -0
- package/dist/lib/error_notifier/ErrorNotifier.d.ts.map +1 -0
- package/dist/lib/error_notifier/ErrorNotifier.js +29 -0
- package/dist/lib/error_notifier/ErrorNotifier.js.map +1 -0
- package/dist/lib/errorbox/ErrorBox.d.ts +6 -0
- package/dist/lib/errorbox/ErrorBox.d.ts.map +1 -0
- package/dist/lib/errorbox/ErrorBox.js +26 -0
- package/dist/lib/errorbox/ErrorBox.js.map +1 -0
- package/dist/lib/form_layout/FormLayout.d.ts +23 -0
- package/dist/lib/form_layout/FormLayout.d.ts.map +1 -0
- package/dist/lib/form_layout/FormLayout.js +102 -0
- package/dist/lib/form_layout/FormLayout.js.map +1 -0
- package/dist/lib/i18n/i18n.detect.d.ts +10 -0
- package/dist/lib/i18n/i18n.detect.d.ts.map +1 -0
- package/dist/lib/i18n/i18n.detect.js +30 -0
- package/dist/lib/i18n/i18n.detect.js.map +1 -0
- package/dist/lib/i18n/i18n.factory.d.ts +3 -0
- package/dist/lib/i18n/i18n.factory.d.ts.map +1 -0
- package/dist/lib/i18n/i18n.factory.js +70 -0
- package/dist/lib/i18n/i18n.factory.js.map +1 -0
- package/dist/lib/i18n/i18n.react.d.ts +19 -0
- package/dist/lib/i18n/i18n.react.d.ts.map +1 -0
- package/dist/lib/i18n/i18n.react.js +29 -0
- package/dist/lib/i18n/i18n.react.js.map +1 -0
- package/dist/lib/i18n/i18n.types.d.ts +28 -0
- package/dist/lib/i18n/i18n.types.d.ts.map +1 -0
- package/dist/lib/i18n/index.d.ts +3 -0
- package/dist/lib/i18n/index.d.ts.map +1 -0
- package/dist/lib/info_box/InfoBox.d.ts +7 -0
- package/dist/lib/info_box/InfoBox.d.ts.map +1 -0
- package/dist/lib/info_box/InfoBox.js +13 -0
- package/dist/lib/info_box/InfoBox.js.map +1 -0
- package/dist/lib/inlineedit/InlineEdit.d.ts +9 -0
- package/dist/lib/inlineedit/InlineEdit.d.ts.map +1 -0
- package/dist/lib/inlineedit/InlineEdit.js +47 -0
- package/dist/lib/inlineedit/InlineEdit.js.map +1 -0
- package/dist/lib/listview/ListView.d.ts +16 -0
- package/dist/lib/listview/ListView.d.ts.map +1 -0
- package/dist/lib/listview/ListView.js +100 -0
- package/dist/lib/listview/ListView.js.map +1 -0
- package/dist/lib/loader/Loader.d.ts +4 -0
- package/dist/lib/loader/Loader.d.ts.map +1 -0
- package/dist/lib/loader/Loader.js +9 -0
- package/dist/lib/loader/Loader.js.map +1 -0
- package/dist/lib/localdate/InputLocalDate.d.ts +17 -0
- package/dist/lib/localdate/InputLocalDate.d.ts.map +1 -0
- package/dist/lib/localdate/InputLocalDate.js +61 -0
- package/dist/lib/localdate/InputLocalDate.js.map +1 -0
- package/dist/lib/localdate/LabelLocalDate.d.ts +6 -0
- package/dist/lib/localdate/LabelLocalDate.d.ts.map +1 -0
- package/dist/lib/localdate/LabelLocalDate.js +9 -0
- package/dist/lib/localdate/LabelLocalDate.js.map +1 -0
- package/dist/lib/money/InputMoneyDec.d.ts +20 -0
- package/dist/lib/money/InputMoneyDec.d.ts.map +1 -0
- package/dist/lib/money/InputMoneyDec.js +24 -0
- package/dist/lib/money/InputMoneyDec.js.map +1 -0
- package/dist/lib/money/InputMoneyInt.d.ts +24 -0
- package/dist/lib/money/InputMoneyInt.d.ts.map +1 -0
- package/dist/lib/money/InputMoneyInt.js +24 -0
- package/dist/lib/money/InputMoneyInt.js.map +1 -0
- package/dist/lib/money/LabelMoneyDec.d.ts +33 -0
- package/dist/lib/money/LabelMoneyDec.d.ts.map +1 -0
- package/dist/lib/money/LabelMoneyDec.js +22 -0
- package/dist/lib/money/LabelMoneyDec.js.map +1 -0
- package/dist/lib/money/LabelMoneyInt.d.ts +33 -0
- package/dist/lib/money/LabelMoneyInt.d.ts.map +1 -0
- package/dist/lib/money/LabelMoneyInt.js +22 -0
- package/dist/lib/money/LabelMoneyInt.js.map +1 -0
- package/dist/lib/month/InputDurationMonths.d.ts +9 -0
- package/dist/lib/month/InputDurationMonths.d.ts.map +1 -0
- package/dist/lib/month/InputDurationMonths.js +22 -0
- package/dist/lib/month/InputDurationMonths.js.map +1 -0
- package/dist/lib/month/InputMonth.d.ts +13 -0
- package/dist/lib/month/InputMonth.d.ts.map +1 -0
- package/dist/lib/month/InputMonth.js +15 -0
- package/dist/lib/month/InputMonth.js.map +1 -0
- package/dist/lib/navigation/Navigation.d.ts +9 -0
- package/dist/lib/navigation/Navigation.d.ts.map +1 -0
- package/dist/lib/navigation/Navigation.js +38 -0
- package/dist/lib/navigation/Navigation.js.map +1 -0
- package/dist/lib/navigation/Navigation.types.d.ts +48 -0
- package/dist/lib/navigation/Navigation.types.d.ts.map +1 -0
- package/dist/lib/navigation/NavigationService.d.ts +8 -0
- package/dist/lib/navigation/NavigationService.d.ts.map +1 -0
- package/dist/lib/navigation/NavigationService.js +13 -0
- package/dist/lib/navigation/NavigationService.js.map +1 -0
- package/dist/lib/number/InputNumber.d.ts +22 -0
- package/dist/lib/number/InputNumber.d.ts.map +1 -0
- package/dist/lib/number/InputNumber.js +82 -0
- package/dist/lib/number/InputNumber.js.map +1 -0
- package/dist/lib/number/InputNumberDec.d.ts +16 -0
- package/dist/lib/number/InputNumberDec.d.ts.map +1 -0
- package/dist/lib/number/InputNumberDec.js +21 -0
- package/dist/lib/number/InputNumberDec.js.map +1 -0
- package/dist/lib/number/InputNumberInt.d.ts +19 -0
- package/dist/lib/number/InputNumberInt.d.ts.map +1 -0
- package/dist/lib/number/InputNumberInt.js +21 -0
- package/dist/lib/number/InputNumberInt.js.map +1 -0
- package/dist/lib/number/index.d.ts +4 -0
- package/dist/lib/number/index.d.ts.map +1 -0
- package/dist/lib/percent/InputPercent.d.ts +9 -0
- package/dist/lib/percent/InputPercent.d.ts.map +1 -0
- package/dist/lib/percent/InputPercent.js +29 -0
- package/dist/lib/percent/InputPercent.js.map +1 -0
- package/dist/lib/percent/LabelPercent.d.ts +8 -0
- package/dist/lib/percent/LabelPercent.d.ts.map +1 -0
- package/dist/lib/percent/LabelPercent.js +9 -0
- package/dist/lib/percent/LabelPercent.js.map +1 -0
- package/dist/lib/percent/LabelPercentInt.d.ts +4 -0
- package/dist/lib/percent/LabelPercentInt.d.ts.map +1 -0
- package/dist/lib/percent/LabelPercentInt.js +10 -0
- package/dist/lib/percent/LabelPercentInt.js.map +1 -0
- package/dist/lib/select/InputCombobox.d.ts +49 -0
- package/dist/lib/select/InputCombobox.d.ts.map +1 -0
- package/dist/lib/select/InputCombobox.js +42 -0
- package/dist/lib/select/InputCombobox.js.map +1 -0
- package/dist/lib/select/InputSelect.d.ts +22 -0
- package/dist/lib/select/InputSelect.d.ts.map +1 -0
- package/dist/lib/select/InputSelect.js +31 -0
- package/dist/lib/select/InputSelect.js.map +1 -0
- package/dist/lib/switchbutton/SwitchButton.d.ts +9 -0
- package/dist/lib/switchbutton/SwitchButton.d.ts.map +1 -0
- package/dist/lib/switchbutton/SwitchButton.js +18 -0
- package/dist/lib/switchbutton/SwitchButton.js.map +1 -0
- package/dist/lib/tabs/Tabs.d.ts +18 -0
- package/dist/lib/tabs/Tabs.d.ts.map +1 -0
- package/dist/lib/tabs/Tabs.js +30 -0
- package/dist/lib/tabs/Tabs.js.map +1 -0
- package/dist/lib/tabs/index.d.ts +2 -0
- package/dist/lib/tabs/index.d.ts.map +1 -0
- package/dist/lib/text/InputText.d.ts +12 -0
- package/dist/lib/text/InputText.d.ts.map +1 -0
- package/dist/lib/text/InputText.js +32 -0
- package/dist/lib/text/InputText.js.map +1 -0
- package/dist/lib/typography/description/Description.d.ts +4 -0
- package/dist/lib/typography/description/Description.d.ts.map +1 -0
- package/dist/lib/typography/description/Description.js +9 -0
- package/dist/lib/typography/description/Description.js.map +1 -0
- package/dist/lib/typography/description/index.d.ts +2 -0
- package/dist/lib/typography/description/index.d.ts.map +1 -0
- package/dist/lib/typography/index.d.ts +5 -0
- package/dist/lib/typography/index.d.ts.map +1 -0
- package/dist/lib/typography/label_and_description/LabelAndDescription.d.ts +5 -0
- package/dist/lib/typography/label_and_description/LabelAndDescription.d.ts.map +1 -0
- package/dist/lib/typography/label_and_description/LabelAndDescription.js +16 -0
- package/dist/lib/typography/label_and_description/LabelAndDescription.js.map +1 -0
- package/dist/lib/typography/label_and_description/index.d.ts +2 -0
- package/dist/lib/typography/label_and_description/index.d.ts.map +1 -0
- package/dist/lib/typography/sectiontitle/SectionTitle.d.ts +5 -0
- package/dist/lib/typography/sectiontitle/SectionTitle.d.ts.map +1 -0
- package/dist/lib/typography/sectiontitle/SectionTitle.js +8 -0
- package/dist/lib/typography/sectiontitle/SectionTitle.js.map +1 -0
- package/dist/lib/typography/todo/Todo.d.ts +5 -0
- package/dist/lib/typography/todo/Todo.d.ts.map +1 -0
- package/dist/lib/typography/todo/Todo.js +7 -0
- package/dist/lib/typography/todo/Todo.js.map +1 -0
- package/dist/lib/view_layout/ViewBody.d.ts +8 -0
- package/dist/lib/view_layout/ViewBody.d.ts.map +1 -0
- package/dist/lib/view_layout/ViewBody.js +8 -0
- package/dist/lib/view_layout/ViewBody.js.map +1 -0
- package/dist/lib/view_layout/ViewFooter.d.ts +10 -0
- package/dist/lib/view_layout/ViewFooter.d.ts.map +1 -0
- package/dist/lib/view_layout/ViewFooter.js +8 -0
- package/dist/lib/view_layout/ViewFooter.js.map +1 -0
- package/dist/lib/view_layout/ViewHeader.d.ts +5 -0
- package/dist/lib/view_layout/ViewHeader.d.ts.map +1 -0
- package/dist/lib/view_layout/ViewHeader.js +8 -0
- package/dist/lib/view_layout/ViewHeader.js.map +1 -0
- package/dist/lib/view_layout/ViewLayout.d.ts +16 -0
- package/dist/lib/view_layout/ViewLayout.d.ts.map +1 -0
- package/dist/lib/view_layout/ViewLayout.js +127 -0
- package/dist/lib/view_layout/ViewLayout.js.map +1 -0
- package/dist/lib/view_layout/ViewTitle.d.ts +21 -0
- package/dist/lib/view_layout/ViewTitle.d.ts.map +1 -0
- package/dist/lib/view_layout/ViewTitle.js +71 -0
- package/dist/lib/view_layout/ViewTitle.js.map +1 -0
- package/dist/lib/year/InputDurationYears.d.ts +9 -0
- package/dist/lib/year/InputDurationYears.d.ts.map +1 -0
- package/dist/lib/year/InputDurationYears.js +22 -0
- package/dist/lib/year/InputDurationYears.js.map +1 -0
- package/dist/lib/year/InputYear.d.ts +9 -0
- package/dist/lib/year/InputYear.d.ts.map +1 -0
- package/dist/lib/year/InputYear.js +21 -0
- package/dist/lib/year/InputYear.js.map +1 -0
- package/dist/locales/en.d.ts +8 -0
- package/dist/locales/en.d.ts.map +1 -0
- package/dist/locales/en.js +41 -0
- package/dist/locales/en.js.map +1 -0
- package/dist/locales/fr.d.ts +8 -0
- package/dist/locales/fr.d.ts.map +1 -0
- package/dist/locales/fr.js +41 -0
- package/dist/locales/fr.js.map +1 -0
- package/dist/locales/interfaces.d.ts +11 -0
- package/dist/locales/interfaces.d.ts.map +1 -0
- package/dist/stories/utils/SeijUIProviderDecorator.d.ts +2 -0
- package/dist/stories/utils/SeijUIProviderDecorator.d.ts.map +1 -0
- package/dist/stories/utils/StoryComponentFrame.d.ts +11 -0
- package/dist/stories/utils/StoryComponentFrame.d.ts.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as n, jsxs as m } from "react/jsx-runtime";
|
|
2
|
+
import { NavDivider as p, NavItem as v, Text as I, NavCategory as f, NavCategoryItem as C, NavSubItemGroup as B, NavSubItem as b } from "@fluentui/react-components";
|
|
3
|
+
import { bundleIcon as o, Board20Filled as S, Board20Regular as h, People20Filled as x, People20Regular as y, BookContactsFilled as N, BookContactsRegular as F, CalendarEmptyFilled as R, CalendarEmptyRegular as T, SignOutFilled as k, SignOutRegular as P, PersonStarburstFilled as D, PersonStarburstRegular as E, BuildingBankFilled as O, BuildingBankRegular as j } from "@fluentui/react-icons";
|
|
4
|
+
import { createContext as G, useMemo as L, useContext as c } from "react";
|
|
5
|
+
import { createNavigationTreeItemServiceImpl as s } from "./NavigationService.js";
|
|
6
|
+
const u = G(s([]));
|
|
7
|
+
function _({
|
|
8
|
+
items: e
|
|
9
|
+
}) {
|
|
10
|
+
const r = L(() => s(e), [e]), t = r.findTopLevelItems();
|
|
11
|
+
return /* @__PURE__ */ n(u.Provider, { value: r, children: t.map((i) => /* @__PURE__ */ n(M, { id: i.id }, i.id)) });
|
|
12
|
+
}
|
|
13
|
+
function M({ id: e }) {
|
|
14
|
+
const t = c(u).findById(e);
|
|
15
|
+
return t.type === "divider" ? /* @__PURE__ */ n(U, { item: t }) : t.type === "page" ? /* @__PURE__ */ n(w, { item: t }) : t.type === "group" ? /* @__PURE__ */ n(q, { item: t }) : null;
|
|
16
|
+
}
|
|
17
|
+
function U({ item: e }) {
|
|
18
|
+
return /* @__PURE__ */ n(p, {});
|
|
19
|
+
}
|
|
20
|
+
function q({ item: e }) {
|
|
21
|
+
const r = c(u), t = d({ iconName: e.icon }), i = r.findChildren(e.id);
|
|
22
|
+
return /* @__PURE__ */ m(f, { value: e.id, children: [
|
|
23
|
+
/* @__PURE__ */ n(C, { icon: /* @__PURE__ */ n(t, {}), children: e.label }),
|
|
24
|
+
/* @__PURE__ */ n(B, { children: i.map((a) => {
|
|
25
|
+
const g = a;
|
|
26
|
+
return /* @__PURE__ */ n(b, { value: a.id, children: g.label }, a.id);
|
|
27
|
+
}) })
|
|
28
|
+
] });
|
|
29
|
+
}
|
|
30
|
+
function w({ item: e }) {
|
|
31
|
+
const r = d({ iconName: e.icon });
|
|
32
|
+
return /* @__PURE__ */ n(v, { value: e.id, icon: /* @__PURE__ */ n(r, {}), children: /* @__PURE__ */ n(I, { children: e.label }) });
|
|
33
|
+
}
|
|
34
|
+
const z = o(S, h), A = o(x, y), H = o(N, F), l = o(R, T), J = o(k, P), K = o(D, E), Q = o(O, j), d = ({ iconName: e }) => e ? e === "dashboard" ? z : e === "users" ? A : e === "customers" ? H : e === "signout" ? J : e === "signin" ? K : e === "buildingBank" ? Q : l : l;
|
|
35
|
+
export {
|
|
36
|
+
_ as Navigation
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=Navigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Navigation.js","sources":["../../../src/lib/navigation/Navigation.tsx"],"sourcesContent":["import {\n NavCategory,\n NavCategoryItem,\n NavDivider,\n NavItem,\n NavSubItem,\n NavSubItemGroup,\n Text,\n} from \"@fluentui/react-components\";\nimport {\n Board20Filled,\n Board20Regular,\n BookContactsFilled,\n BookContactsRegular,\n BuildingBankFilled,\n BuildingBankRegular,\n bundleIcon,\n CalendarEmptyFilled,\n CalendarEmptyRegular,\n FluentIcon,\n People20Filled,\n People20Regular,\n PersonStarburstFilled,\n PersonStarburstRegular,\n SignOutFilled,\n SignOutRegular,\n} from \"@fluentui/react-icons\";\nimport { createContext, useContext, useMemo } from \"react\";\nimport {\n NavigationTreeIconName,\n NavigationTreeItem,\n NavigationTreeItemDivider,\n NavigationTreeItemGroup,\n NavigationTreeItemPage,\n} from \"./Navigation.types\";\nimport { createNavigationTreeItemServiceImpl, NavigationTreeItemService } from \"./NavigationService\";\n\nconst itemsService = createContext<NavigationTreeItemService>(createNavigationTreeItemServiceImpl([]));\n/**\n * Affiche un menu de navigation\n */\nexport function Navigation({\n items,\n}: {\n /** Liste des items du menu */\n items: NavigationTreeItem[];\n}) {\n const service = useMemo(() => createNavigationTreeItemServiceImpl(items), [items]);\n\n const topLevelItems = service.findTopLevelItems();\n\n return (\n <itemsService.Provider value={service}>\n {topLevelItems.map((it) => (\n <NavigationTreeItemComponent key={it.id} id={it.id} />\n ))}\n </itemsService.Provider>\n );\n}\n\nfunction NavigationTreeItemComponent({ id }: { id: string }) {\n const ctx = useContext(itemsService);\n const item = ctx.findById(id);\n\n if (item.type === \"divider\") return <NavigationTreeItemDividerComponent item={item as NavigationTreeItemDivider} />;\n if (item.type === \"page\") return <NavigationTreeItemPageComponent item={item as NavigationTreeItemPage} />;\n if (item.type === \"group\") return <NavigationTreeItemGroupComponent item={item as NavigationTreeItemGroup} />;\n return null;\n}\n\nfunction NavigationTreeItemDividerComponent({ item }: { item: NavigationTreeItemDivider }) {\n return <NavDivider />;\n}\nfunction NavigationTreeItemGroupComponent({ item }: { item: NavigationTreeItemGroup }) {\n const ctx = useContext(itemsService);\n const Icon = NavigationIcon({ iconName: item.icon });\n const itemChildren = ctx.findChildren(item.id);\n return (\n <NavCategory value={item.id}>\n <NavCategoryItem icon={<Icon />}>{item.label}</NavCategoryItem>\n <NavSubItemGroup>\n {itemChildren.map((child) => {\n const page = child as NavigationTreeItemPage;\n return (\n <NavSubItem key={child.id} value={child.id}>\n {page.label}\n </NavSubItem>\n );\n })}\n </NavSubItemGroup>\n </NavCategory>\n );\n}\nfunction NavigationTreeItemPageComponent({ item }: { item: NavigationTreeItemPage }) {\n const Icon = NavigationIcon({ iconName: item.icon });\n return (\n <NavItem value={item.id} icon={<Icon />}>\n <Text>{item.label}</Text>\n </NavItem>\n );\n}\n\n// -----------------------------------------------------------------------------\n// Gestion des icones\n// -----------------------------------------------------------------------------\n\nconst DashboardIcon = bundleIcon(Board20Filled, Board20Regular);\nconst UsersIcon = bundleIcon(People20Filled, People20Regular);\nconst CustomersIcon = bundleIcon(BookContactsFilled, BookContactsRegular);\nconst EmptyIcon = bundleIcon(CalendarEmptyFilled, CalendarEmptyRegular);\nconst SignOutIcon = bundleIcon(SignOutFilled, SignOutRegular);\nconst SignInIcon = bundleIcon(PersonStarburstFilled, PersonStarburstRegular);\nconst BuildingBankIcon = bundleIcon(BuildingBankFilled, BuildingBankRegular);\nconst NavigationIcon = ({ iconName }: { iconName?: NavigationTreeIconName | null | undefined }): FluentIcon => {\n if (!iconName) return EmptyIcon;\n if (iconName === \"dashboard\") return DashboardIcon;\n if (iconName === \"users\") return UsersIcon;\n if (iconName === \"customers\") return CustomersIcon;\n if (iconName === \"signout\") return SignOutIcon;\n if (iconName === \"signin\") return SignInIcon;\n if (iconName === \"buildingBank\") return BuildingBankIcon;\n return EmptyIcon;\n};\n"],"names":["itemsService","createContext","createNavigationTreeItemServiceImpl","Navigation","items","service","useMemo","topLevelItems","it","jsx","NavigationTreeItemComponent","id","item","useContext","NavigationTreeItemDividerComponent","NavigationTreeItemPageComponent","NavigationTreeItemGroupComponent","NavDivider","ctx","Icon","NavigationIcon","itemChildren","jsxs","NavCategory","NavCategoryItem","NavSubItemGroup","child","page","NavSubItem","NavItem","Text","DashboardIcon","bundleIcon","Board20Filled","Board20Regular","UsersIcon","People20Filled","People20Regular","CustomersIcon","BookContactsFilled","BookContactsRegular","EmptyIcon","CalendarEmptyFilled","CalendarEmptyRegular","SignOutIcon","SignOutFilled","SignOutRegular","SignInIcon","PersonStarburstFilled","PersonStarburstRegular","BuildingBankIcon","BuildingBankFilled","BuildingBankRegular","iconName"],"mappings":";;;;;AAqCA,MAAMA,IAAeC,EAAyCC,EAAoC,CAAA,CAAE,CAAC;AAI9F,SAASC,EAAW;AAAA,EACzB,OAAAC;AACF,GAGG;AACD,QAAMC,IAAUC,EAAQ,MAAMJ,EAAoCE,CAAK,GAAG,CAACA,CAAK,CAAC,GAE3EG,IAAgBF,EAAQ,kBAAA;AAE9B,2BACGL,EAAa,UAAb,EAAsB,OAAOK,GAC3B,YAAc,IAAI,CAACG,MAClB,gBAAAC,EAACC,KAAwC,IAAIF,EAAG,MAAdA,EAAG,EAAe,CACrD,GACH;AAEJ;AAEA,SAASE,EAA4B,EAAE,IAAAC,KAAsB;AAE3D,QAAMC,IADMC,EAAWb,CAAY,EAClB,SAASW,CAAE;AAE5B,SAAIC,EAAK,SAAS,YAAkB,gBAAAH,EAACK,KAAmC,MAAAF,GAAyC,IAC7GA,EAAK,SAAS,SAAe,gBAAAH,EAACM,KAAgC,MAAAH,GAAsC,IACpGA,EAAK,SAAS,UAAgB,gBAAAH,EAACO,KAAiC,MAAAJ,GAAuC,IACpG;AACT;AAEA,SAASE,EAAmC,EAAE,MAAAF,KAA6C;AACzF,2BAAQK,GAAA,EAAW;AACrB;AACA,SAASD,EAAiC,EAAE,MAAAJ,KAA2C;AACrF,QAAMM,IAAML,EAAWb,CAAY,GAC7BmB,IAAOC,EAAe,EAAE,UAAUR,EAAK,MAAM,GAC7CS,IAAeH,EAAI,aAAaN,EAAK,EAAE;AAC7C,SACE,gBAAAU,EAACC,GAAA,EAAY,OAAOX,EAAK,IACvB,UAAA;AAAA,IAAA,gBAAAH,EAACe,KAAgB,MAAM,gBAAAf,EAACU,GAAA,CAAA,CAAK,GAAK,YAAK,OAAM;AAAA,IAC7C,gBAAAV,EAACgB,GAAA,EACE,UAAAJ,EAAa,IAAI,CAACK,MAAU;AAC3B,YAAMC,IAAOD;AACb,aACE,gBAAAjB,EAACmB,KAA0B,OAAOF,EAAM,IACrC,UAAAC,EAAK,SADSD,EAAM,EAEvB;AAAA,IAEJ,CAAC,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;AACA,SAASX,EAAgC,EAAE,MAAAH,KAA0C;AACnF,QAAMO,IAAOC,EAAe,EAAE,UAAUR,EAAK,MAAM;AACnD,SACE,gBAAAH,EAACoB,GAAA,EAAQ,OAAOjB,EAAK,IAAI,MAAM,gBAAAH,EAACU,GAAA,CAAA,CAAK,GACnC,UAAA,gBAAAV,EAACqB,GAAA,EAAM,UAAAlB,EAAK,OAAM,GACpB;AAEJ;AAMA,MAAMmB,IAAgBC,EAAWC,GAAeC,CAAc,GACxDC,IAAYH,EAAWI,GAAgBC,CAAe,GACtDC,IAAgBN,EAAWO,GAAoBC,CAAmB,GAClEC,IAAYT,EAAWU,GAAqBC,CAAoB,GAChEC,IAAcZ,EAAWa,GAAeC,CAAc,GACtDC,IAAaf,EAAWgB,GAAuBC,CAAsB,GACrEC,IAAmBlB,EAAWmB,GAAoBC,CAAmB,GACrEhC,IAAiB,CAAC,EAAE,UAAAiC,QACnBA,IACDA,MAAa,cAAoBtB,IACjCsB,MAAa,UAAgBlB,IAC7BkB,MAAa,cAAoBf,IACjCe,MAAa,YAAkBT,IAC/BS,MAAa,WAAiBN,IAC9BM,MAAa,iBAAuBH,IACjCT,IAPeA;"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Liste des toutes les icones supportées par le menu de navigation
|
|
3
|
+
*/
|
|
4
|
+
export type NavigationTreeIconName = "buildingBank" | "dashboard" | "customers" | "users" | "features" | "permissions" | "signin" | "signout";
|
|
5
|
+
/**
|
|
6
|
+
* Type d'élément de navigation
|
|
7
|
+
*/
|
|
8
|
+
export type NavigationTreeItemType = "group" | "page" | "divider";
|
|
9
|
+
/**
|
|
10
|
+
* Règles d'affichage
|
|
11
|
+
*/
|
|
12
|
+
export type NavigationTreeItemRule = "loggedout" | "loggedin";
|
|
13
|
+
/**
|
|
14
|
+
* Element de menu, c'est ce que l'on doit renseigner pour
|
|
15
|
+
* afficher un menu. Il faut les fournir dans une liste.
|
|
16
|
+
*/
|
|
17
|
+
export type NavigationTreeItem = NavigationTreeItemPage | NavigationTreeItemGroup | NavigationTreeItemDivider;
|
|
18
|
+
export interface NavigationTreeItemBase {
|
|
19
|
+
/** Identifiant unique de l'entrée de menu */
|
|
20
|
+
id: string;
|
|
21
|
+
/** Type */
|
|
22
|
+
type: NavigationTreeItemType;
|
|
23
|
+
/** Règles d'affichage */
|
|
24
|
+
rule?: NavigationTreeItemRule;
|
|
25
|
+
}
|
|
26
|
+
export interface NavigationTreeItemPage extends NavigationTreeItemBase {
|
|
27
|
+
/** Libellé de l'entrée de menu */
|
|
28
|
+
label: string;
|
|
29
|
+
/** Description qui va juste en dessous, n'est pas obligatoire, n'est pas affiché à l'écran */
|
|
30
|
+
description?: string;
|
|
31
|
+
/** Item dans lequel le ranger ou null si c'est à la racine */
|
|
32
|
+
parentId: string | null;
|
|
33
|
+
/** Item path for navigation. If provided, router will be called for this path */
|
|
34
|
+
path?: string;
|
|
35
|
+
/** Si on veut mettre une icône */
|
|
36
|
+
icon?: NavigationTreeIconName;
|
|
37
|
+
}
|
|
38
|
+
export interface NavigationTreeItemGroup extends NavigationTreeItemBase {
|
|
39
|
+
/** Libellé de l'entrée de menu */
|
|
40
|
+
label: string;
|
|
41
|
+
/** Description qui va juste en dessous, n'est pas obligatoire, n'est pas affiché à l'écran */
|
|
42
|
+
description?: string;
|
|
43
|
+
/** Si on veut mettre une icône */
|
|
44
|
+
icon?: NavigationTreeIconName;
|
|
45
|
+
}
|
|
46
|
+
export interface NavigationTreeItemDivider extends NavigationTreeItemBase {
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=Navigation.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Navigation.types.d.ts","sourceRoot":"","sources":["../../../src/lib/navigation/Navigation.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAC9B,cAAc,GACd,WAAW,GACX,WAAW,GACX,OAAO,GACP,UAAU,GACV,aAAa,GACb,QAAQ,GACR,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAClE;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,UAAU,CAAC;AAE9D;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG,uBAAuB,GAAG,yBAAyB,CAAC;AAE9G,MAAM,WAAW,sBAAsB;IACrC,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,WAAW;IACX,IAAI,EAAE,sBAAsB,CAAC;IAC7B,yBAAyB;IACzB,IAAI,CAAC,EAAE,sBAAsB,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;IACpE,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,CAAC,EAAE,sBAAsB,CAAC;CAC/B;AACD,MAAM,WAAW,uBAAwB,SAAQ,sBAAsB;IACrE,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,IAAI,CAAC,EAAE,sBAAsB,CAAC;CAC/B;AACD,MAAM,WAAW,yBAA0B,SAAQ,sBAAsB;CAAG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { NavigationTreeItem } from './Navigation.types';
|
|
2
|
+
export interface NavigationTreeItemService {
|
|
3
|
+
findById(id: string): NavigationTreeItem;
|
|
4
|
+
findChildren(id: string): NavigationTreeItem[];
|
|
5
|
+
findTopLevelItems(): NavigationTreeItem[];
|
|
6
|
+
}
|
|
7
|
+
export declare const createNavigationTreeItemServiceImpl: (items: NavigationTreeItem[]) => NavigationTreeItemService;
|
|
8
|
+
//# sourceMappingURL=NavigationService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavigationService.d.ts","sourceRoot":"","sources":["../../../src/lib/navigation/NavigationService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAA0B,MAAM,oBAAoB,CAAC;AAEhF,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,CAAC;IACzC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAC/C,iBAAiB,IAAI,kBAAkB,EAAE,CAAC;CAC3C;AACD,eAAO,MAAM,mCAAmC,GAAI,OAAO,kBAAkB,EAAE,KAAG,yBAQjF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { keyBy as n, isNil as p } from "lodash-es";
|
|
2
|
+
const a = (r) => {
|
|
3
|
+
const i = n(r, (e) => e.id);
|
|
4
|
+
return {
|
|
5
|
+
findById: (e) => i[e],
|
|
6
|
+
findChildren: (e) => r.filter((t) => t.type === "page" && t.parentId === e),
|
|
7
|
+
findTopLevelItems: () => r.filter((e) => p(e.parentId))
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
export {
|
|
11
|
+
a as createNavigationTreeItemServiceImpl
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=NavigationService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavigationService.js","sources":["../../../src/lib/navigation/NavigationService.ts"],"sourcesContent":["import { isNil, keyBy } from \"lodash-es\";\nimport { NavigationTreeItem, NavigationTreeItemPage } from \"./Navigation.types\";\n\nexport interface NavigationTreeItemService {\n findById(id: string): NavigationTreeItem;\n findChildren(id: string): NavigationTreeItem[];\n findTopLevelItems(): NavigationTreeItem[];\n}\nexport const createNavigationTreeItemServiceImpl = (items: NavigationTreeItem[]): NavigationTreeItemService => {\n const itemsMap = keyBy(items, (it) => it.id);\n return {\n findById: (id: string) => itemsMap[id],\n findChildren: (id: string) =>\n items.filter((it) => it.type === \"page\" && (it as NavigationTreeItemPage).parentId === id),\n findTopLevelItems: () => items.filter((it) => isNil((it as any).parentId)),\n };\n};\n"],"names":["createNavigationTreeItemServiceImpl","items","itemsMap","keyBy","it","id","isNil"],"mappings":";AAQO,MAAMA,IAAsC,CAACC,MAA2D;AAC7G,QAAMC,IAAWC,EAAMF,GAAO,CAACG,MAAOA,EAAG,EAAE;AAC3C,SAAO;AAAA,IACL,UAAU,CAACC,MAAeH,EAASG,CAAE;AAAA,IACrC,cAAc,CAACA,MACbJ,EAAM,OAAO,CAACG,MAAOA,EAAG,SAAS,UAAWA,EAA8B,aAAaC,CAAE;AAAA,IAC3F,mBAAmB,MAAMJ,EAAM,OAAO,CAACG,MAAOE,EAAOF,EAAW,QAAQ,CAAC;AAAA,EAAA;AAE7E;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { InputProps } from '@fluentui/react-components';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
type HTMLInputElementCurated = Omit<React.InputHTMLAttributes<HTMLInputElement>, "value" | "defaultValue" | "onChange" | "type" | "min" | "max" | "children">;
|
|
4
|
+
export interface InputNumberProps extends HTMLInputElementCurated {
|
|
5
|
+
id?: string;
|
|
6
|
+
name?: string;
|
|
7
|
+
value?: number;
|
|
8
|
+
defaultValue?: number;
|
|
9
|
+
min?: number;
|
|
10
|
+
max?: number;
|
|
11
|
+
onValueChange?: (value: number) => void;
|
|
12
|
+
unit?: InputProps["contentAfter"];
|
|
13
|
+
}
|
|
14
|
+
export declare const INPUT_AMOUNT_ALLOWED_DECIMAL_SEPARATORS: string[];
|
|
15
|
+
interface InputNumberCompletProps extends InputNumberProps {
|
|
16
|
+
decimalScale?: number;
|
|
17
|
+
allowNegative?: boolean;
|
|
18
|
+
thousandSeparator?: string | boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare const InputNumber: React.FC<InputNumberCompletProps>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=InputNumber.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputNumber.d.ts","sourceRoot":"","sources":["../../../src/lib/number/InputNumber.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAc,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAA6B,MAAM,OAAO,CAAC;AAElD,KAAK,uBAAuB,GAAG,IAAI,CACjC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAC3C,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,CAC5E,CAAC;AACF,MAAM,WAAW,gBAAiB,SAAQ,uBAAuB;IAC/D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC,IAAI,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,uCAAuC,UAAa,CAAC;AAElE,UAAU,uBAAwB,SAAQ,gBAAgB;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtC;AAoBD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA4FzD,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { jsx as R } from "react/jsx-runtime";
|
|
2
|
+
import { makeStyles as u, Input as y } from "@fluentui/react-components";
|
|
3
|
+
import _, { useMemo as w, useEffect as L } from "react";
|
|
4
|
+
const j = [",", "."], O = (r, c, t) => new RegExp(
|
|
5
|
+
"^" + (r ? "-?" : "") + "\\d*" + (c > 0 ? "((\\.|,)\\d{0," + c + "})?" : "") + "$"
|
|
6
|
+
), T = u({
|
|
7
|
+
root: {
|
|
8
|
+
"> input": {
|
|
9
|
+
textAlign: "right"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}), k = ({
|
|
13
|
+
value: r,
|
|
14
|
+
defaultValue: c,
|
|
15
|
+
onValueChange: t,
|
|
16
|
+
decimalScale: e = 0,
|
|
17
|
+
allowNegative: N = !1,
|
|
18
|
+
thousandSeparator: M = " ",
|
|
19
|
+
min: d,
|
|
20
|
+
max: p,
|
|
21
|
+
size: B = 10,
|
|
22
|
+
unit: A,
|
|
23
|
+
...I
|
|
24
|
+
}) => {
|
|
25
|
+
const [m, f] = _.useState((r == null ? void 0 : r.toString()) ?? ""), S = T();
|
|
26
|
+
r === void 0 && c === void 0 && console.warn("InputNumber must be provided a value or a defaultValue"), r !== void 0 && c !== void 0 && console.warn(
|
|
27
|
+
"InputNumber can not be used as a controlled and uncontrolled component at the same time. You muse provide a value or a defaultValue but not both at the same time."
|
|
28
|
+
);
|
|
29
|
+
const b = w(
|
|
30
|
+
() => O(N, e),
|
|
31
|
+
[N, e, M]
|
|
32
|
+
);
|
|
33
|
+
L(() => {
|
|
34
|
+
f((r == null ? void 0 : r.toString()) ?? "");
|
|
35
|
+
}, [r]);
|
|
36
|
+
const x = (o) => {
|
|
37
|
+
const s = o.target.value;
|
|
38
|
+
if (b.test(s) || s === "") {
|
|
39
|
+
if (f(s), s === "") {
|
|
40
|
+
t == null || t(0);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const n = Number(s);
|
|
44
|
+
if (!isNaN(n)) {
|
|
45
|
+
let i = n;
|
|
46
|
+
d !== void 0 && (i = Math.max(i, d)), p !== void 0 && (i = Math.min(i, p)), i !== r && (t == null || t(i));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}, E = () => {
|
|
50
|
+
if (m === "") {
|
|
51
|
+
t == null || t(0);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const o = Number(m);
|
|
55
|
+
if (isNaN(o))
|
|
56
|
+
t == null || t(0);
|
|
57
|
+
else {
|
|
58
|
+
let s = o;
|
|
59
|
+
d !== void 0 && (s = Math.max(s, d)), p !== void 0 && (s = Math.min(s, p)), f(s.toString()), t == null || t(s);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
return /* @__PURE__ */ R(
|
|
63
|
+
y,
|
|
64
|
+
{
|
|
65
|
+
...I,
|
|
66
|
+
className: S.root,
|
|
67
|
+
type: "number",
|
|
68
|
+
value: m,
|
|
69
|
+
onChange: x,
|
|
70
|
+
onBlur: E,
|
|
71
|
+
inputMode: e > 0 ? "decimal" : "numeric",
|
|
72
|
+
pattern: b.source,
|
|
73
|
+
onFocus: (o) => o.target.select(),
|
|
74
|
+
contentAfter: A
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
};
|
|
78
|
+
export {
|
|
79
|
+
j as INPUT_AMOUNT_ALLOWED_DECIMAL_SEPARATORS,
|
|
80
|
+
k as InputNumber
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=InputNumber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputNumber.js","sources":["../../../src/lib/number/InputNumber.tsx"],"sourcesContent":["import { Input, InputProps, makeStyles } from \"@fluentui/react-components\";\nimport React, { useEffect, useMemo } from \"react\";\n\ntype HTMLInputElementCurated = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"defaultValue\" | \"onChange\" | \"type\" | \"min\" | \"max\" | \"children\"\n>;\nexport interface InputNumberProps extends HTMLInputElementCurated {\n id?: string;\n name?: string;\n value?: number;\n defaultValue?: number;\n min?: number;\n max?: number;\n onValueChange?: (value: number) => void;\n\n unit?: InputProps[\"contentAfter\"];\n}\n\nexport const INPUT_AMOUNT_ALLOWED_DECIMAL_SEPARATORS = [\",\", \".\"];\n\ninterface InputNumberCompletProps extends InputNumberProps {\n decimalScale?: number;\n allowNegative?: boolean;\n thousandSeparator?: string | boolean;\n}\n\nconst createRegexp = (allowNegative: boolean, decimalScale: number, thousandSeparator: string | boolean) => {\n return new RegExp(\n \"^\" +\n (allowNegative ? \"-?\" : \"\") +\n \"\\\\d*\" +\n (decimalScale > 0 ? \"((\\\\.|,)\\\\d{0,\" + decimalScale + \"})?\" : \"\") +\n \"$\",\n );\n};\n\nconst useStyles = makeStyles({\n root: {\n \"> input\": {\n textAlign: \"right\",\n },\n },\n});\n\nexport const InputNumber: React.FC<InputNumberCompletProps> = ({\n value,\n defaultValue,\n onValueChange,\n decimalScale = 0,\n allowNegative = false,\n thousandSeparator = \" \",\n min,\n max,\n size = 10,\n unit,\n ...rest\n}: InputNumberCompletProps) => {\n const [internalValue, setInternalValue] = React.useState<string>(value?.toString() ?? \"\");\n const styles = useStyles();\n\n if (value === undefined && defaultValue === undefined) {\n console.warn(\"InputNumber must be provided a value or a defaultValue\");\n }\n if (value !== undefined && defaultValue !== undefined) {\n console.warn(\n \"InputNumber can not be used as a controlled and uncontrolled component at the same time. You muse provide a value or a defaultValue but not both at the same time.\",\n );\n }\n\n // Toujours permettre d'écrire librement (même vide, -, . etc.)\n const rex = useMemo(\n () => createRegexp(allowNegative, decimalScale, thousandSeparator),\n [allowNegative, decimalScale, thousandSeparator],\n );\n\n useEffect(() => {\n // Synchroniser l'état interne si la prop change de l'extérieur\n setInternalValue(value?.toString() ?? \"\");\n }, [value]);\n\n const handleChange = (ev: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = ev.target.value;\n\n if (rex.test(newValue) || newValue === \"\") {\n setInternalValue(newValue);\n\n if (newValue === \"\") {\n onValueChange?.(0);\n return;\n }\n\n const parsed = Number(newValue);\n if (!isNaN(parsed)) {\n let clamped = parsed;\n if (min !== undefined) clamped = Math.max(clamped, min);\n if (max !== undefined) clamped = Math.min(clamped, max);\n if (clamped !== value) {\n onValueChange?.(clamped);\n }\n }\n }\n };\n\n const handleBlur = () => {\n if (internalValue === \"\") {\n onValueChange?.(0);\n return;\n }\n\n const parsed = Number(internalValue);\n if (!isNaN(parsed)) {\n let clamped = parsed;\n if (min !== undefined) clamped = Math.max(clamped, min);\n if (max !== undefined) clamped = Math.min(clamped, max);\n // IMPORTANT: on recale l'affichage après blur\n setInternalValue(clamped.toString());\n onValueChange?.(clamped);\n } else {\n onValueChange?.(0);\n }\n };\n\n return (\n <Input\n {...rest}\n className={styles.root}\n type=\"number\"\n value={internalValue}\n onChange={handleChange}\n onBlur={handleBlur}\n inputMode={decimalScale > 0 ? \"decimal\" : \"numeric\"}\n pattern={rex.source}\n onFocus={(e) => e.target.select()}\n contentAfter={unit}\n />\n );\n};\n"],"names":["INPUT_AMOUNT_ALLOWED_DECIMAL_SEPARATORS","createRegexp","allowNegative","decimalScale","thousandSeparator","useStyles","makeStyles","InputNumber","value","defaultValue","onValueChange","min","max","size","unit","rest","internalValue","setInternalValue","React","styles","rex","useMemo","useEffect","handleChange","ev","newValue","parsed","clamped","handleBlur","jsx","Input","e"],"mappings":";;;AAmBO,MAAMA,IAA0C,CAAC,KAAK,GAAG,GAQ1DC,IAAe,CAACC,GAAwBC,GAAsBC,MAC3D,IAAI;AAAA,EACT,OACGF,IAAgB,OAAO,MACxB,UACCC,IAAe,IAAI,mBAAmBA,IAAe,QAAQ,MAC9D;AAAA,GAIAE,IAAYC,EAAW;AAAA,EAC3B,MAAM;AAAA,IACJ,WAAW;AAAA,MACT,WAAW;AAAA,IAAA;AAAA,EACb;AAEJ,CAAC,GAEYC,IAAiD,CAAC;AAAA,EAC7D,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAP,IAAe;AAAA,EACf,eAAAD,IAAgB;AAAA,EAChB,mBAAAE,IAAoB;AAAA,EACpB,KAAAO;AAAA,EACA,KAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,MAAAC;AAAA,EACA,GAAGC;AACL,MAA+B;AAC7B,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAAM,UAAiBV,KAAA,gBAAAA,EAAO,eAAc,EAAE,GAClFW,IAASd,EAAA;AAEf,EAAIG,MAAU,UAAaC,MAAiB,UAC1C,QAAQ,KAAK,wDAAwD,GAEnED,MAAU,UAAaC,MAAiB,UAC1C,QAAQ;AAAA,IACN;AAAA,EAAA;AAKJ,QAAMW,IAAMC;AAAA,IACV,MAAMpB,EAAaC,GAAeC,CAA+B;AAAA,IACjE,CAACD,GAAeC,GAAcC,CAAiB;AAAA,EAAA;AAGjD,EAAAkB,EAAU,MAAM;AAEd,IAAAL,GAAiBT,KAAA,gBAAAA,EAAO,eAAc,EAAE;AAAA,EAC1C,GAAG,CAACA,CAAK,CAAC;AAEV,QAAMe,IAAe,CAACC,MAA4C;AAChE,UAAMC,IAAWD,EAAG,OAAO;AAE3B,QAAIJ,EAAI,KAAKK,CAAQ,KAAKA,MAAa,IAAI;AAGzC,UAFAR,EAAiBQ,CAAQ,GAErBA,MAAa,IAAI;AACnB,QAAAf,KAAA,QAAAA,EAAgB;AAChB;AAAA,MACF;AAEA,YAAMgB,IAAS,OAAOD,CAAQ;AAC9B,UAAI,CAAC,MAAMC,CAAM,GAAG;AAClB,YAAIC,IAAUD;AACd,QAAIf,MAAQ,WAAWgB,IAAU,KAAK,IAAIA,GAAShB,CAAG,IAClDC,MAAQ,WAAWe,IAAU,KAAK,IAAIA,GAASf,CAAG,IAClDe,MAAYnB,MACdE,KAAA,QAAAA,EAAgBiB;AAAA,MAEpB;AAAA,IACF;AAAA,EACF,GAEMC,IAAa,MAAM;AACvB,QAAIZ,MAAkB,IAAI;AACxB,MAAAN,KAAA,QAAAA,EAAgB;AAChB;AAAA,IACF;AAEA,UAAMgB,IAAS,OAAOV,CAAa;AACnC,QAAK,MAAMU,CAAM;AAQf,MAAAhB,KAAA,QAAAA,EAAgB;AAAA,SARE;AAClB,UAAIiB,IAAUD;AACd,MAAIf,MAAQ,WAAWgB,IAAU,KAAK,IAAIA,GAAShB,CAAG,IAClDC,MAAQ,WAAWe,IAAU,KAAK,IAAIA,GAASf,CAAG,IAEtDK,EAAiBU,EAAQ,UAAU,GACnCjB,KAAA,QAAAA,EAAgBiB;AAAA,IAClB;AAAA,EAGF;AAEA,SACE,gBAAAE;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGf;AAAA,MACJ,WAAWI,EAAO;AAAA,MAClB,MAAK;AAAA,MACL,OAAOH;AAAA,MACP,UAAUO;AAAA,MACV,QAAQK;AAAA,MACR,WAAWzB,IAAe,IAAI,YAAY;AAAA,MAC1C,SAASiB,EAAI;AAAA,MACb,SAAS,CAACW,MAAMA,EAAE,OAAO,OAAA;AAAA,MACzB,cAAcjB;AAAA,IAAA;AAAA,EAAA;AAGpB;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { InputNumberProps } from './InputNumber';
|
|
2
|
+
export interface InputNumberDecProps extends InputNumberProps {
|
|
3
|
+
/**
|
|
4
|
+
* Unité d'affichage
|
|
5
|
+
*/
|
|
6
|
+
unit?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Si on supprte les valeurs négatiges (par défaut false)
|
|
9
|
+
*/
|
|
10
|
+
allowNegative?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Un input special annee.
|
|
14
|
+
*/
|
|
15
|
+
export declare const InputNumberDec: React.FC<InputNumberDecProps>;
|
|
16
|
+
//# sourceMappingURL=InputNumberDec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputNumberDec.d.ts","sourceRoot":"","sources":["../../../src/lib/number/InputNumberDec.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAaxD,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { InputNumber as i } from "./InputNumber.js";
|
|
3
|
+
const n = (e) => {
|
|
4
|
+
const { unit: t, allowNegative: o, ...a } = e;
|
|
5
|
+
return /* @__PURE__ */ r(
|
|
6
|
+
i,
|
|
7
|
+
{
|
|
8
|
+
decimalScale: 2,
|
|
9
|
+
allowNegative: o ?? !1,
|
|
10
|
+
inputMode: "decimal",
|
|
11
|
+
thousandSeparator: !1,
|
|
12
|
+
size: 9,
|
|
13
|
+
unit: t,
|
|
14
|
+
...a
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
n as InputNumberDec
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=InputNumberDec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputNumberDec.js","sources":["../../../src/lib/number/InputNumberDec.tsx"],"sourcesContent":["import { InputNumber, InputNumberProps } from \"./InputNumber\";\n\nexport interface InputNumberDecProps extends InputNumberProps {\n /**\n * Unité d'affichage\n */\n unit?: string;\n /**\n * Si on supprte les valeurs négatiges (par défaut false)\n */\n allowNegative?: boolean;\n}\n\n/**\n * Un input special annee.\n */\nexport const InputNumberDec: React.FC<InputNumberDecProps> = (props) => {\n const { unit, allowNegative, ...other } = props;\n return (\n <InputNumber\n decimalScale={2}\n allowNegative={allowNegative ?? false}\n inputMode=\"decimal\"\n thousandSeparator={false}\n size={9}\n unit={unit}\n {...other}\n />\n );\n};\n"],"names":["InputNumberDec","props","unit","allowNegative","other","jsx","InputNumber"],"mappings":";;AAgBO,MAAMA,IAAgD,CAACC,MAAU;AACtE,QAAM,EAAE,MAAAC,GAAM,eAAAC,GAAe,GAAGC,MAAUH;AAC1C,SACE,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,cAAc;AAAA,MACd,eAAeH,KAAiB;AAAA,MAChC,WAAU;AAAA,MACV,mBAAmB;AAAA,MACnB,MAAM;AAAA,MACN,MAAAD;AAAA,MACC,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { InputNumberProps } from './InputNumber';
|
|
2
|
+
export interface InputNumberIntProps extends InputNumberProps {
|
|
3
|
+
/**
|
|
4
|
+
* Unité à afficher.
|
|
5
|
+
*
|
|
6
|
+
* Si renseignée, elle est prise en compte sinon on prend la devise du contexte.
|
|
7
|
+
* Pour ne pas afficher du tout la devise, il faut passer une chaîne vide.
|
|
8
|
+
*/
|
|
9
|
+
unit?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Si on supprte les valeurs négatiges (par défaut false)
|
|
12
|
+
*/
|
|
13
|
+
allowNegative?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Un input special annee.
|
|
17
|
+
*/
|
|
18
|
+
export declare const InputNumberInt: React.FC<InputNumberIntProps>;
|
|
19
|
+
//# sourceMappingURL=InputNumberInt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputNumberInt.d.ts","sourceRoot":"","sources":["../../../src/lib/number/InputNumberInt.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAaxD,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { InputNumber as n } from "./InputNumber.js";
|
|
3
|
+
const l = (e) => {
|
|
4
|
+
const { unit: t, allowNegative: o, ...r } = e;
|
|
5
|
+
return /* @__PURE__ */ a(
|
|
6
|
+
n,
|
|
7
|
+
{
|
|
8
|
+
decimalScale: 0,
|
|
9
|
+
allowNegative: o ?? !1,
|
|
10
|
+
inputMode: "numeric",
|
|
11
|
+
thousandSeparator: !1,
|
|
12
|
+
size: 9,
|
|
13
|
+
unit: t,
|
|
14
|
+
...r
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
l as InputNumberInt
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=InputNumberInt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputNumberInt.js","sources":["../../../src/lib/number/InputNumberInt.tsx"],"sourcesContent":["import { InputNumber, InputNumberProps } from \"./InputNumber\";\n\nexport interface InputNumberIntProps extends InputNumberProps {\n /**\n * Unité à afficher.\n *\n * Si renseignée, elle est prise en compte sinon on prend la devise du contexte.\n * Pour ne pas afficher du tout la devise, il faut passer une chaîne vide.\n */\n unit?: string;\n /**\n * Si on supprte les valeurs négatiges (par défaut false)\n */\n allowNegative?: boolean;\n}\n\n/**\n * Un input special annee.\n */\nexport const InputNumberInt: React.FC<InputNumberIntProps> = (props) => {\n const { unit, allowNegative, ...other } = props;\n return (\n <InputNumber\n decimalScale={0}\n allowNegative={allowNegative ?? false}\n inputMode=\"numeric\"\n thousandSeparator={false}\n size={9}\n unit={unit}\n {...other}\n />\n );\n};\n"],"names":["InputNumberInt","props","unit","allowNegative","other","jsx","InputNumber"],"mappings":";;AAmBO,MAAMA,IAAgD,CAACC,MAAU;AACtE,QAAM,EAAE,MAAAC,GAAM,eAAAC,GAAe,GAAGC,MAAUH;AAC1C,SACE,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,cAAc;AAAA,MACd,eAAeH,KAAiB;AAAA,MAChC,WAAU;AAAA,MACV,mBAAmB;AAAA,MACnB,MAAM;AAAA,MACN,MAAAD;AAAA,MACC,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/number/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { InputNumberProps } from '../number/InputNumber';
|
|
3
|
+
export interface InputPercentProps extends InputNumberProps {
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Un input special annee.
|
|
7
|
+
*/
|
|
8
|
+
export declare const InputPercent: React.FC<InputPercentProps>;
|
|
9
|
+
//# sourceMappingURL=InputPercent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputPercent.d.ts","sourceRoot":"","sources":["../../../src/lib/percent/InputPercent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAe,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGtE,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;CAAG;AAE9D;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA2BpD,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { InputNumber as s } from "../number/InputNumber.js";
|
|
3
|
+
import { isNil as u } from "lodash-es";
|
|
4
|
+
const N = (a) => {
|
|
5
|
+
const { min: r, max: m, onValueChange: e, value: t, defaultValue: i, ...d } = a, l = (o) => {
|
|
6
|
+
o == null ? e == null || e(0) : e == null || e(Number((o / 100).toFixed(4)));
|
|
7
|
+
};
|
|
8
|
+
return /* @__PURE__ */ n(
|
|
9
|
+
s,
|
|
10
|
+
{
|
|
11
|
+
...d,
|
|
12
|
+
decimalScale: 2,
|
|
13
|
+
allowNegative: !1,
|
|
14
|
+
inputMode: "decimal",
|
|
15
|
+
thousandSeparator: !1,
|
|
16
|
+
size: 9,
|
|
17
|
+
unit: "%",
|
|
18
|
+
min: r ? Number((r * 100).toFixed(2)) : void 0,
|
|
19
|
+
max: m ? Number((m * 100).toFixed(2)) : void 0,
|
|
20
|
+
value: u(t) ? t : Number((t * 100).toFixed(2)),
|
|
21
|
+
defaultValue: u(i) ? i : Number((i * 100).toFixed(2)),
|
|
22
|
+
onValueChange: l
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
};
|
|
26
|
+
export {
|
|
27
|
+
N as InputPercent
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=InputPercent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputPercent.js","sources":["../../../src/lib/percent/InputPercent.tsx"],"sourcesContent":["import React from \"react\";\nimport { InputNumber, InputNumberProps } from \"../number/InputNumber\";\nimport { isNil } from \"lodash-es\";\n\nexport interface InputPercentProps extends InputNumberProps {}\n\n/**\n * Un input special annee.\n */\nexport const InputPercent: React.FC<InputPercentProps> = (props) => {\n const { min, max, onValueChange, value, defaultValue, ...other } = props;\n\n const handleValueChange = (value: number | null | undefined) => {\n if (value === null || value === undefined) {\n onValueChange?.(0);\n } else {\n onValueChange?.(Number((value / 100).toFixed(4)));\n }\n };\n\n return (\n <InputNumber\n {...other}\n decimalScale={2}\n allowNegative={false}\n inputMode=\"decimal\"\n thousandSeparator={false}\n size={9}\n unit={\"%\"}\n min={min ? Number((min * 100).toFixed(2)) : undefined}\n max={max ? Number((max * 100).toFixed(2)) : undefined}\n value={isNil(value) ? value : Number((value * 100).toFixed(2))}\n defaultValue={isNil(defaultValue) ? defaultValue : Number((defaultValue * 100).toFixed(2))}\n onValueChange={handleValueChange}\n />\n );\n};\n"],"names":["InputPercent","props","min","max","onValueChange","value","defaultValue","other","handleValueChange","jsx","InputNumber","isNil"],"mappings":";;;AASO,MAAMA,IAA4C,CAACC,MAAU;AAClE,QAAM,EAAE,KAAAC,GAAK,KAAAC,GAAK,eAAAC,GAAe,OAAAC,GAAO,cAAAC,GAAc,GAAGC,MAAUN,GAE7DO,IAAoB,CAACH,MAAqC;AAC9D,IAAIA,KAAU,OACZD,KAAA,QAAAA,EAAgB,KAEhBA,KAAA,QAAAA,EAAgB,QAAQC,IAAQ,KAAK,QAAQ,CAAC,CAAC;AAAA,EAEnD;AAEA,SACE,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGH;AAAA,MACJ,cAAc;AAAA,MACd,eAAe;AAAA,MACf,WAAU;AAAA,MACV,mBAAmB;AAAA,MACnB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAKL,IAAM,QAAQA,IAAM,KAAK,QAAQ,CAAC,CAAC,IAAI;AAAA,MAC5C,KAAKC,IAAM,QAAQA,IAAM,KAAK,QAAQ,CAAC,CAAC,IAAI;AAAA,MAC5C,OAAOQ,EAAMN,CAAK,IAAIA,IAAQ,QAAQA,IAAQ,KAAK,QAAQ,CAAC,CAAC;AAAA,MAC7D,cAAcM,EAAML,CAAY,IAAIA,IAAe,QAAQA,IAAe,KAAK,QAAQ,CAAC,CAAC;AAAA,MACzF,eAAeE;AAAA,IAAA;AAAA,EAAA;AAGrB;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LabelPercent.d.ts","sourceRoot":"","sources":["../../../src/lib/percent/LabelPercent.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAE9C,CAAC;AACF,eAAO,MAAM,SAAS;WAHiB,MAAM;EAGR,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as t, Fragment as e } from "react/jsx-runtime";
|
|
2
|
+
import { NumberFormatPercent as o } from "@seij/common-types";
|
|
3
|
+
import { isNil as m } from "lodash-es";
|
|
4
|
+
const n = ({ value: r }) => /* @__PURE__ */ t(e, { children: m(r) ? "" : o.format(r) }), f = n;
|
|
5
|
+
export {
|
|
6
|
+
n as LabelPercent,
|
|
7
|
+
f as LabelRate
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=LabelPercent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LabelPercent.js","sources":["../../../src/lib/percent/LabelPercent.tsx"],"sourcesContent":["import { NumberFormatPercent } from \"@seij/common-types\";\nimport { isNil } from \"lodash-es\";\n\nimport { FC } from \"react\";\n\nexport const LabelPercent: FC<{ value: number }> = ({ value }) => {\n return <>{isNil(value) ? \"\" : NumberFormatPercent.format(value)}</>;\n};\nexport const LabelRate = LabelPercent;\n"],"names":["LabelPercent","value","jsx","Fragment","NumberFormatPercent","LabelRate"],"mappings":";;;AAKO,MAAMA,IAAsC,CAAC,EAAE,OAAAC,QAC7C,gBAAAC,EAAAC,GAAA,EAAG,YAAMF,CAAK,IAAI,KAAKG,EAAoB,OAAOH,CAAK,EAAA,CAAE,GAErDI,IAAYL;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LabelPercentInt.d.ts","sourceRoot":"","sources":["../../../src/lib/percent/LabelPercentInt.tsx"],"names":[],"mappings":"AAGA,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,2CAE3D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as t, Fragment as m } from "react/jsx-runtime";
|
|
2
|
+
import { NumberFormatPercent0 as o } from "@seij/common-types";
|
|
3
|
+
import { isNil as e } from "lodash-es";
|
|
4
|
+
function c({ value: r }) {
|
|
5
|
+
return /* @__PURE__ */ t(m, { children: e(r) ? "" : o.format(r) });
|
|
6
|
+
}
|
|
7
|
+
export {
|
|
8
|
+
c as LabelPercentInt
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=LabelPercentInt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LabelPercentInt.js","sources":["../../../src/lib/percent/LabelPercentInt.tsx"],"sourcesContent":["import { NumberFormatPercent0 } from \"@seij/common-types\";\nimport { isNil } from \"lodash-es\";\n\nexport function LabelPercentInt({ value }: { value: number }) {\n return <>{isNil(value) ? \"\" : NumberFormatPercent0.format(value)}</>;\n}\n"],"names":["LabelPercentInt","value","jsx","Fragment","NumberFormatPercent0"],"mappings":";;;AAGO,SAASA,EAAgB,EAAE,OAAAC,KAA4B;AAC5D,SAAO,gBAAAC,EAAAC,GAAA,EAAG,YAAMF,CAAK,IAAI,KAAKG,EAAqB,OAAOH,CAAK,EAAA,CAAE;AACnE;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export interface InputComboboxProps<T> {
|
|
2
|
+
/**
|
|
3
|
+
* The value of the text input.
|
|
4
|
+
*/
|
|
5
|
+
searchQuery: string;
|
|
6
|
+
/**
|
|
7
|
+
* The placeholder text to display when the input is empty.
|
|
8
|
+
*/
|
|
9
|
+
placeholder: string;
|
|
10
|
+
/**
|
|
11
|
+
* Indicates whether the input is disabled.
|
|
12
|
+
*/
|
|
13
|
+
disabled: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* The list of options to display in the dropdown.
|
|
16
|
+
*/
|
|
17
|
+
options: T[];
|
|
18
|
+
/**
|
|
19
|
+
* The message to display when no option is found.
|
|
20
|
+
*/
|
|
21
|
+
noOptionsMessage?: string;
|
|
22
|
+
/**
|
|
23
|
+
* The function to call when the input value changes.
|
|
24
|
+
*/
|
|
25
|
+
onValueChangeQuery: (value: string) => void;
|
|
26
|
+
/**
|
|
27
|
+
* The function to call when the user selects an option from the dropdown.
|
|
28
|
+
*/
|
|
29
|
+
onValueChange: (value: string) => void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A text input combobox with a dropdown list of options.
|
|
33
|
+
* @returns A textbox component with a dropdown list of options.
|
|
34
|
+
* @example
|
|
35
|
+
* <InputCombobox
|
|
36
|
+
* searchQuery={searchQuery}
|
|
37
|
+
* placeholder="Select an option"
|
|
38
|
+
* disabled={false}
|
|
39
|
+
* options={[{ code: "1", label: "Option 1" }, { code: "2", label: "Option 2" }]}
|
|
40
|
+
* noOptionsMessage="No options found"
|
|
41
|
+
* onValueChangeQuery={(value) => setSearchQuery(value)}
|
|
42
|
+
* onValueChange={(value) => setSelectedOption(value)}
|
|
43
|
+
* />
|
|
44
|
+
*/
|
|
45
|
+
export declare function InputCombobox<T extends {
|
|
46
|
+
code: string;
|
|
47
|
+
label: string;
|
|
48
|
+
}>({ searchQuery, placeholder, disabled, options, noOptionsMessage, onValueChangeQuery, onValueChange, }: InputComboboxProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
49
|
+
//# sourceMappingURL=InputCombobox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputCombobox.d.ts","sourceRoot":"","sources":["../../../src/lib/select/InputCombobox.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,CAAC,EAAE,CAAC;IACb;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C;;OAEG;IACH,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AACD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EACvE,WAAW,EACX,WAAW,EACX,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,GACd,EAAE,kBAAkB,CAAC,CAAC,CAAC,2CA4BvB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import { Combobox as c, useComboboxFilter as a } from "@fluentui/react-components";
|
|
3
|
+
import { useI18n as x } from "../i18n/i18n.react.js";
|
|
4
|
+
function C({
|
|
5
|
+
searchQuery: e,
|
|
6
|
+
placeholder: r,
|
|
7
|
+
disabled: l,
|
|
8
|
+
options: i,
|
|
9
|
+
noOptionsMessage: p,
|
|
10
|
+
onValueChangeQuery: t,
|
|
11
|
+
onValueChange: m
|
|
12
|
+
}) {
|
|
13
|
+
const { t: u } = x(), b = u("InputCombobox_noresult");
|
|
14
|
+
return /* @__PURE__ */ s(
|
|
15
|
+
c,
|
|
16
|
+
{
|
|
17
|
+
style: { width: "100%" },
|
|
18
|
+
value: e,
|
|
19
|
+
onOptionSelect: (o, n) => {
|
|
20
|
+
t(n.optionText ?? ""), m(n.optionValue ?? "");
|
|
21
|
+
},
|
|
22
|
+
onChange: (o) => t(o.target.value),
|
|
23
|
+
clearable: !0,
|
|
24
|
+
placeholder: r,
|
|
25
|
+
disabled: l,
|
|
26
|
+
freeform: !0,
|
|
27
|
+
children: a(
|
|
28
|
+
e,
|
|
29
|
+
i.map((o) => ({ children: o.label, value: o.code })),
|
|
30
|
+
{
|
|
31
|
+
optionToReactKey: (o) => o.value,
|
|
32
|
+
optionToText: (o) => o.children,
|
|
33
|
+
noOptionsMessage: p ?? b
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
export {
|
|
40
|
+
C as InputCombobox
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=InputCombobox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputCombobox.js","sources":["../../../src/lib/select/InputCombobox.tsx"],"sourcesContent":["import { Combobox, useComboboxFilter } from \"@fluentui/react-components\";\nimport { useI18n } from \"../i18n/i18n.react\";\nexport interface InputComboboxProps<T> {\n /**\n * The value of the text input.\n */\n searchQuery: string;\n /**\n * The placeholder text to display when the input is empty.\n */\n placeholder: string;\n /**\n * Indicates whether the input is disabled.\n */\n disabled: boolean;\n /**\n * The list of options to display in the dropdown.\n */\n options: T[];\n /**\n * The message to display when no option is found.\n */\n noOptionsMessage?: string;\n /**\n * The function to call when the input value changes.\n */\n onValueChangeQuery: (value: string) => void;\n /**\n * The function to call when the user selects an option from the dropdown.\n */\n onValueChange: (value: string) => void;\n}\n/**\n * A text input combobox with a dropdown list of options.\n * @returns A textbox component with a dropdown list of options.\n * @example\n * <InputCombobox\n * searchQuery={searchQuery}\n * placeholder=\"Select an option\"\n * disabled={false}\n * options={[{ code: \"1\", label: \"Option 1\" }, { code: \"2\", label: \"Option 2\" }]}\n * noOptionsMessage=\"No options found\"\n * onValueChangeQuery={(value) => setSearchQuery(value)}\n * onValueChange={(value) => setSelectedOption(value)}\n * />\n */\nexport function InputCombobox<T extends { code: string; label: string }>({\n searchQuery,\n placeholder,\n disabled,\n options,\n noOptionsMessage,\n onValueChangeQuery,\n onValueChange,\n}: InputComboboxProps<T>) {\n const { t } = useI18n();\n const noresult = t(\"InputCombobox_noresult\");\n return (\n <Combobox\n style={{ width: \"100%\" }}\n value={searchQuery}\n onOptionSelect={(event, data) => {\n onValueChangeQuery(data.optionText ?? \"\");\n onValueChange(data.optionValue ?? \"\");\n }}\n onChange={(ev) => onValueChangeQuery(ev.target.value)}\n clearable\n placeholder={placeholder}\n disabled={disabled}\n freeform={true}\n >\n {useComboboxFilter(\n searchQuery,\n options.map((o) => ({ children: o.label, value: o.code })),\n {\n optionToReactKey: (option) => option.value,\n optionToText: (option) => option.children,\n noOptionsMessage: noOptionsMessage ?? noresult,\n },\n )}\n </Combobox>\n );\n}\n"],"names":["InputCombobox","searchQuery","placeholder","disabled","options","noOptionsMessage","onValueChangeQuery","onValueChange","t","useI18n","noresult","jsx","Combobox","event","data","ev","useComboboxFilter","option"],"mappings":";;;AA8CO,SAASA,EAAyD;AAAA,EACvE,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,eAAAC;AACF,GAA0B;AACxB,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAWF,EAAE,wBAAwB;AAC3C,SACE,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAO,EAAE,OAAO,OAAA;AAAA,MAChB,OAAOX;AAAA,MACP,gBAAgB,CAACY,GAAOC,MAAS;AAC/B,QAAAR,EAAmBQ,EAAK,cAAc,EAAE,GACxCP,EAAcO,EAAK,eAAe,EAAE;AAAA,MACtC;AAAA,MACA,UAAU,CAACC,MAAOT,EAAmBS,EAAG,OAAO,KAAK;AAAA,MACpD,WAAS;AAAA,MACT,aAAAb;AAAA,MACA,UAAAC;AAAA,MACA,UAAU;AAAA,MAET,UAAAa;AAAA,QACCf;AAAA,QACAG,EAAQ,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,OAAO,EAAE,KAAA,EAAO;AAAA,QACzD;AAAA,UACE,kBAAkB,CAACa,MAAWA,EAAO;AAAA,UACrC,cAAc,CAACA,MAAWA,EAAO;AAAA,UACjC,kBAAkBZ,KAAoBK;AAAA,QAAA;AAAA,MACxC;AAAA,IACF;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface InputSelectOption {
|
|
2
|
+
code: string;
|
|
3
|
+
label: string;
|
|
4
|
+
description?: string | null | undefined;
|
|
5
|
+
}
|
|
6
|
+
export interface InputSelectProps<T extends InputSelectOption> {
|
|
7
|
+
id?: string;
|
|
8
|
+
/** Le code de la valeur sélectionnée. */
|
|
9
|
+
value: string;
|
|
10
|
+
/** Indique si le champ est désactivé */
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
/** La liste des options à afficher dans la liste déroulante. */
|
|
13
|
+
options: T[];
|
|
14
|
+
/** La fonction à appeler lorsque la valeur sélectionnée change. */
|
|
15
|
+
onValueChange: (value: string) => void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Une combobox de sélection d'entrée avec une liste déroulante d'options.
|
|
19
|
+
* @returns Un composant de combobox de sélection (sans saisie de texte possible).
|
|
20
|
+
*/
|
|
21
|
+
export declare function InputSelect<T extends InputSelectOption>({ id, value, disabled, options, onValueChange, }: InputSelectProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=InputSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputSelect.d.ts","sourceRoot":"","sources":["../../../src/lib/select/InputSelect.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACzC;AACD,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,iBAAiB;IAC3D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gEAAgE;IAChE,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,mEAAmE;IACnE,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AACD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,iBAAiB,EAAE,EACvD,EAAE,EACF,KAAK,EACL,QAAgB,EAChB,OAAO,EACP,aAAa,GACd,EAAE,gBAAgB,CAAC,CAAC,CAAC,2CAyBrB"}
|