@cnamts/synapse 1.0.11 → 1.0.13
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/{DateFilter-QEfKOz0P.js → DateFilter-_EFzsvvM.js} +1 -1
- package/dist/{NumberFilter-C0h7gVzp.js → NumberFilter-CUxEbKJh.js} +1 -1
- package/dist/{PeriodFilter-8dVrKjju.js → PeriodFilter-D5ueqtKy.js} +1 -1
- package/dist/{SelectFilter-BI3QGbqb.js → SelectFilter-BciBNydy.js} +1 -1
- package/dist/{TextFilter-UOp1hcPp.js → TextFilter-DMN_WAQB.js} +1 -1
- package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordion.d.ts +7 -3
- package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.d.ts +2 -0
- package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.d.ts +7 -3
- package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +50 -68
- package/dist/components/Amelipro/AmeliproCard/AmeliproCard.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproIcon/AmeliproIcon.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +5 -5
- package/dist/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproNumberedCard/AmeliproNumberedCard.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.d.ts +24 -32
- package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.d.ts +36 -48
- package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +50 -68
- package/dist/components/Amelipro/AmeliproTable/AmeliproTable.d.ts +4 -0
- package/dist/components/Amelipro/AmeliproTable/types.d.ts +11 -0
- package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +50 -68
- package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +0 -4
- package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +12 -16
- package/dist/components/Captcha/Captcha.d.ts +68 -0
- package/dist/components/Captcha/CaptchaAlert.d.ts +13 -0
- package/dist/components/Captcha/CaptchaBase.d.ts +55 -0
- package/dist/components/Captcha/CaptchaBtn.d.ts +12 -0
- package/dist/components/Captcha/CaptchaForm.d.ts +16 -0
- package/dist/components/Captcha/CaptchaImg.d.ts +12 -0
- package/dist/components/Captcha/CaptchaInformation.d.ts +20 -0
- package/dist/components/Captcha/captchaApi.d.ts +41 -0
- package/dist/components/Captcha/icons/volumeUp.d.ts +2 -0
- package/dist/components/Captcha/locales.d.ts +35 -0
- package/dist/components/Captcha/types.d.ts +2 -0
- package/dist/components/ChipList/ChipList.d.ts +2 -2
- package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +14 -14
- package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +5 -5
- package/dist/components/Customs/SyForm/SyForm.d.ts +6 -3
- package/dist/components/Customs/SyTextField/SyTextField.d.ts +12 -16
- package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +96 -68
- package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +63 -38
- package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +23 -27
- package/dist/components/DatePicker/composables/useDatePickerViewMode.d.ts +2 -1
- package/dist/components/DatePicker/tests/setup.d.ts +816 -520
- package/dist/components/HeaderToolbar/HeaderToolbar.d.ts +10 -10
- package/dist/components/NirField/NirField.d.ts +31 -34
- package/dist/components/NirField/locales.d.ts +1 -3
- package/dist/components/PasswordField/PasswordField.d.ts +2 -0
- package/dist/components/PeriodField/PeriodField.d.ts +192 -128
- package/dist/components/PhoneField/PhoneField.d.ts +13 -17
- package/dist/components/SearchListField/SearchListField.d.ts +5 -5
- package/dist/components/SyTextArea/SyTextArea.d.ts +0 -4
- package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +5 -8
- package/dist/components/Tables/SyTable/SyTable.d.ts +5 -8
- package/dist/components/Tables/common/SyTablePagination.d.ts +5 -5
- package/dist/components/Tables/common/types.d.ts +4 -0
- package/dist/components/Tables/common/usePagination.d.ts +3 -4
- package/dist/components/Tables/common/useTableCheckbox.d.ts +10 -6
- package/dist/components/index.d.ts +1 -0
- package/dist/composables/validation/useFormValidation.d.ts +10 -0
- package/dist/composables/validation/useValidatable.d.ts +10 -2
- package/dist/design-system-v3.js +126 -125
- package/dist/design-system-v3.umd.cjs +265 -265
- package/dist/main-DISHlqcd.js +34217 -0
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/assets/overrides/_forms.scss +2 -0
- package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.stories.ts +7 -4
- package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.vue +2 -0
- package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.vue +1 -0
- package/src/components/Amelipro/AmeliproAccordionFrieze/__tests__/__snapshots__/AmeliproAccordionFrieze.spec.ts.snap +574 -112
- package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.stories.ts +5 -2
- package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +2 -1
- package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.stories.ts +6 -3
- package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.vue +2 -0
- package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.stories.ts +5 -2
- package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +2 -1
- package/src/components/Amelipro/AmeliproCheckbox/__tests__/AmeliproCheckbox.spec.ts +175 -0
- package/src/components/Amelipro/AmeliproCheckbox/__tests__/__snapshots__/AmeliproCheckbox.spec.ts.snap +88 -0
- package/src/components/Amelipro/AmeliproCheckboxGroup/__tests__/AmeliproCheckboxGroup.spec.ts +423 -0
- package/src/components/Amelipro/AmeliproCheckboxGroup/{tests → __tests__}/__snapshots__/AmeliproCheckboxGroup.spec.ts.snap +112 -78
- package/src/components/Amelipro/AmeliproChips/__tests__/AmeliproChips.spec.ts +92 -0
- package/src/components/Amelipro/AmeliproChips/__tests__/__snapshots__/AmeliproChips.spec.ts.snap +81 -0
- package/src/components/Amelipro/AmeliproDialog/__tests__/AmeliproDialog.spec.ts +257 -0
- package/src/components/Amelipro/AmeliproDialog/__tests__/__snapshots__/AmeliproDialog.spec.ts.snap +61 -0
- package/src/components/Amelipro/AmeliproDisclosure/__tests__/AmeliproDisclosure.spec.ts +79 -0
- package/src/components/Amelipro/AmeliproDisclosure/__tests__/__snapshots__/AmeliproDisclosure.spec.ts.snap +89 -0
- package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.vue +6 -7
- package/src/components/Amelipro/AmeliproFooter/__tests__/AmeliproFooter.spec.ts +787 -0
- package/src/components/Amelipro/AmeliproFooter/__tests__/__snapshots__/AmeliproFooter.spec.ts.snap +318 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/AmeliproHeaderBrandSection.spec.ts +167 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +100 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/__tests__/AmeliproHeaderBar.spec.ts +312 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/__tests__/__snapshots__/AmeliproHeaderBar.spec.ts.snap +98 -0
- package/src/components/Amelipro/AmeliproHeader/__tests__/AmeliproHeader.spec.ts +361 -0
- package/src/components/Amelipro/AmeliproHeader/__tests__/__snapshots__/AmeliproHeader.spec.ts.snap +22 -0
- package/src/components/Amelipro/AmeliproMenu/__tests__/AmeliproMenu.spec.ts +168 -0
- package/src/components/Amelipro/AmeliproMenu/__tests__/__snapshots__/AmeliproMenu.spec.ts.snap +295 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/__tests__/AmeliproDropdownMenuBtn.spec.ts +128 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/__tests__/__snapshots__/AmeliproDropdownMenuBtn.spec.ts.snap +67 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/__tests__/AmeliproDropdownMenu.spec.ts +266 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/__tests__/__snapshots__/AmeliproDropdownMenu.spec.ts.snap +134 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/__tests__/AmeliproMessagingMenuBtn.spec.ts +72 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/__tests__/__snapshots__/AmeliproMessagingMenuBtn.spec.ts.snap +71 -0
- package/src/components/Amelipro/AmeliproPageLayout/tests/__snapshots__/AmeliproPageLayout.spec.ts.snap +12 -0
- package/src/components/Amelipro/AmeliproTable/AmeliproTable.stories.ts +81 -9
- package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +139 -61
- package/src/components/Amelipro/AmeliproTable/__tests__/AmeliproTable.spec.ts +10 -0
- package/src/components/Amelipro/AmeliproTable/__tests__/__snapshots__/AmeliproTable.spec.ts.snap +361 -187
- package/src/components/Amelipro/AmeliproTable/types.d.ts +11 -0
- package/src/components/Captcha/Captcha.mdx +72 -0
- package/src/components/Captcha/Captcha.stories.ts +276 -0
- package/src/components/Captcha/Captcha.vue +325 -0
- package/src/components/Captcha/CaptchaAlert.vue +60 -0
- package/src/components/Captcha/CaptchaBase.vue +219 -0
- package/src/components/Captcha/CaptchaBtn.vue +35 -0
- package/src/components/Captcha/CaptchaForm.vue +58 -0
- package/src/components/Captcha/CaptchaImg.vue +41 -0
- package/src/components/Captcha/CaptchaInformation.vue +64 -0
- package/src/components/Captcha/captchaApi.ts +111 -0
- package/src/components/Captcha/icons/volumeUp.vue +11 -0
- package/src/components/Captcha/locales.ts +35 -0
- package/src/components/Captcha/readme.md +5 -0
- package/src/components/Captcha/tests/Captcha.spec.ts +298 -0
- package/src/components/Captcha/tests/__snapshots__/Captcha.spec.ts.snap +716 -0
- package/src/components/Captcha/types.ts +2 -0
- package/src/components/Customs/Selects/SySelect/SySelect.vue +2 -2
- package/src/components/Customs/SyCheckbox/SyCheckbox.vue +4 -0
- package/src/components/Customs/SyForm/SyForm.stories.ts +133 -23
- package/src/components/Customs/SyForm/SyForm.vue +17 -1
- package/src/components/Customs/SyTextField/SyTextField.vue +29 -7
- package/src/components/DatePicker/CalendarMode/DatePicker.vue +32 -9
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +154 -18
- package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +2 -2
- package/src/components/DatePicker/DateTextInput/DateTextInput.vue +35 -4
- package/src/components/DatePicker/composables/tests/useDatePickerViewMode.spec.ts +107 -72
- package/src/components/DatePicker/composables/tests/useMonthButtonCustomization.spec.ts +6 -6
- package/src/components/DatePicker/composables/useDatePickerViewMode.ts +57 -7
- package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +14 -14
- package/src/components/DatePicker/tests/navigation.regression.spec.ts +74 -0
- package/src/components/DatePicker/tests/navigation.simple.spec.ts +137 -0
- package/src/components/NirField/NirField.stories.ts +85 -2
- package/src/components/NirField/NirField.vue +55 -18
- package/src/components/NirField/locales.ts +1 -3
- package/src/components/PasswordField/PasswordField.vue +39 -7
- package/src/components/PhoneField/PhoneField.vue +43 -10
- package/src/components/RangeField/tests/RangeField.spec.ts +0 -3
- package/src/components/Tables/SyServerTable/SyServerTable.mdx +15 -0
- package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +309 -0
- package/src/components/Tables/SyServerTable/SyServerTable.vue +18 -3
- package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +67 -0
- package/src/components/Tables/SyTable/SyTable.mdx +15 -0
- package/src/components/Tables/SyTable/SyTable.stories.ts +228 -0
- package/src/components/Tables/SyTable/SyTable.vue +18 -3
- package/src/components/Tables/SyTable/tests/SyTable.spec.ts +63 -0
- package/src/components/Tables/common/SyTablePagination.vue +10 -8
- package/src/components/Tables/common/types.ts +4 -0
- package/src/components/Tables/common/usePagination.ts +11 -20
- package/src/components/Tables/common/useTableCheckbox.ts +23 -11
- package/src/components/index.ts +1 -0
- package/src/composables/validation/AvecVosComposants.mdx.old +1 -1
- package/src/composables/validation/FormValidation.stories.ts.old +5 -5
- package/src/composables/validation/useFormValidation.ts +46 -8
- package/src/composables/validation/useValidatable.ts +19 -8
- package/src/stories/Accessibilite/Introduction.mdx +1 -1
- package/src/stories/Demarrer/EnrichirLeDesignSystem.mdx +43 -0
- package/src/stories/Demarrer/EnrichirLeDesignSystem.stories.ts +239 -0
- package/src/stories/Demarrer/SignalerUneAnomalie.mdx +39 -0
- package/src/stories/Demarrer/SignalerUneAnomalie.stories.ts +261 -0
- package/dist/main-DyEOPqqn.js +0 -33329
- package/src/components/Amelipro/AmeliproCheckbox/tests/AmeliproCheckbox.spec.ts +0 -19
- package/src/components/Amelipro/AmeliproCheckbox/tests/__snapshots__/AmeliproCheckbox.spec.ts.snap +0 -40
- package/src/components/Amelipro/AmeliproCheckboxGroup/tests/AmeliproCheckboxGroup.spec.ts +0 -46
- package/src/components/Amelipro/AmeliproChips/tests/AmeliproChips.spec.ts +0 -16
- package/src/components/Amelipro/AmeliproChips/tests/__snapshots__/AmeliproChips.spec.ts.snap +0 -97
- package/src/components/Amelipro/AmeliproDialog/tests/AmeliproDialog.spec.ts +0 -24
- package/src/components/Amelipro/AmeliproDialog/tests/__snapshots__/AmeliproDialog.spec.ts.snap +0 -134
- package/src/components/Amelipro/AmeliproDisclosure/tests/AmeliproDisclosure.spec.ts +0 -19
- package/src/components/Amelipro/AmeliproDisclosure/tests/__snapshots__/AmeliproDisclosure.spec.ts.snap +0 -104
- package/src/components/Amelipro/AmeliproFooter/tests/AmeliproFooter.spec.ts +0 -15
- package/src/components/Amelipro/AmeliproFooter/tests/__snapshots__/AmeliproFooter.spec.ts.snap +0 -432
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/tests/AmeliproHeaderBrandSection.spec.ts +0 -15
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/tests/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +0 -131
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/tests/AmeliproHeaderBar.spec.ts +0 -15
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/tests/__snapshots__/AmeliproHeaderBar.spec.ts.snap +0 -172
- package/src/components/Amelipro/AmeliproHeader/tests/AmeliproHeader.spec.ts +0 -159
- package/src/components/Amelipro/AmeliproHeader/tests/__snapshots__/AmeliproHeader.spec.ts.snap +0 -841
- package/src/components/Amelipro/AmeliproMenu/tests/AmeliproMenu.spec.ts +0 -85
- package/src/components/Amelipro/AmeliproMenu/tests/__snapshots__/AmeliproMenu.spec.ts.snap +0 -537
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/tests/AmeliproDropdownMenuBtn.spec.ts +0 -16
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/tests/__snapshots__/AmeliproDropdownMenuBtn.spec.ts.snap +0 -56
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/tests/AmeliproDropdownMenu.spec.ts +0 -28
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/tests/__snapshots__/AmeliproDropdownMenu.spec.ts.snap +0 -300
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/tests/AmeliproMessagingMenuBtn.spec.ts +0 -16
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/tests/__snapshots__/AmeliproMessagingMenuBtn.spec.ts.snap +0 -89
- package/src/components/BackBtn/tests/__snapshots__/BackBtn.spec.ts.snap +0 -45
- package/src/components/RangeField/tests/__snapshots__/RangeField.spec.ts.snap +0 -1270
- package/src/stories/Demarrer/CreerUneIssue.mdx +0 -67
- package/src/stories/Demarrer/components.stories.ts +0 -25
|
@@ -47,6 +47,16 @@ const meta = {
|
|
|
47
47
|
width: string;
|
|
48
48
|
maxWidth: string;
|
|
49
49
|
descriptionId?: string;
|
|
50
|
+
sort?: {
|
|
51
|
+
ascendant?: {
|
|
52
|
+
label: string,
|
|
53
|
+
disabled: boolean,
|
|
54
|
+
},
|
|
55
|
+
descendant?: {
|
|
56
|
+
label: string,
|
|
57
|
+
disabled: boolean,
|
|
58
|
+
},
|
|
59
|
+
};
|
|
50
60
|
}>`,
|
|
51
61
|
},
|
|
52
62
|
},
|
|
@@ -560,7 +570,42 @@ export const PaginationEtTri: Story = {
|
|
|
560
570
|
name: 'Pagination et tri',
|
|
561
571
|
args: {
|
|
562
572
|
dataList,
|
|
563
|
-
headers
|
|
573
|
+
headers: [
|
|
574
|
+
{
|
|
575
|
+
align: 'left',
|
|
576
|
+
maxWidth: '25%',
|
|
577
|
+
minWidth: '20%',
|
|
578
|
+
name: 'name',
|
|
579
|
+
title: 'Nom',
|
|
580
|
+
width: '25%',
|
|
581
|
+
sort: {
|
|
582
|
+
ascendant: {
|
|
583
|
+
label: 'tri de A vers Z',
|
|
584
|
+
disabled: false,
|
|
585
|
+
},
|
|
586
|
+
descendant: {
|
|
587
|
+
label: 'tri de Z vers A',
|
|
588
|
+
disabled: false,
|
|
589
|
+
},
|
|
590
|
+
},
|
|
591
|
+
},
|
|
592
|
+
{
|
|
593
|
+
align: 'left',
|
|
594
|
+
maxWidth: '25%',
|
|
595
|
+
minWidth: '20%',
|
|
596
|
+
name: 'firstname',
|
|
597
|
+
title: 'Prénom',
|
|
598
|
+
width: '25%',
|
|
599
|
+
},
|
|
600
|
+
{
|
|
601
|
+
align: 'left',
|
|
602
|
+
maxWidth: '25%',
|
|
603
|
+
minWidth: '20%',
|
|
604
|
+
name: 'email',
|
|
605
|
+
title: 'E-mail',
|
|
606
|
+
width: '25%',
|
|
607
|
+
},
|
|
608
|
+
],
|
|
564
609
|
title: 'Tableau avec pagination et tri',
|
|
565
610
|
uniqueId: 'table-pagination-tri',
|
|
566
611
|
itemsToDisplayDesktop: 2,
|
|
@@ -597,6 +642,8 @@ export const PaginationEtTri: Story = {
|
|
|
597
642
|
pagination-select-label="Résultats par page"
|
|
598
643
|
pagination-select-placeholder="Sélectionner"
|
|
599
644
|
@change:sort-select="onSortChange"
|
|
645
|
+
@asc-sort="onSortAsc"
|
|
646
|
+
@desc-sort="onSortDesc"
|
|
600
647
|
/>
|
|
601
648
|
</template>
|
|
602
649
|
`,
|
|
@@ -608,7 +655,7 @@ import { ref, computed } from 'vue'
|
|
|
608
655
|
import { AmeliproTable } from '@cnamts/synapse'
|
|
609
656
|
|
|
610
657
|
const headers = [
|
|
611
|
-
{ align: 'left', maxWidth: '25%', minWidth: '20%', name: 'name', title: 'Nom', width: '25%' },
|
|
658
|
+
{ align: 'left', maxWidth: '25%', minWidth: '20%', name: 'name', title: 'Nom', width: '25%', sort: { ascendant: { label: 'Tri de A vers Z', disabled: false }, descedant: {label: 'Tri de Z vers A', disabled: false } } },
|
|
612
659
|
{ align: 'left', maxWidth: '25%', minWidth: '20%', name: 'firstname', title: 'Prénom', width: '25%' },
|
|
613
660
|
{ align: 'left', maxWidth: '25%', minWidth: '20%', name: 'email', title: 'E-mail', width: '25%' },
|
|
614
661
|
]
|
|
@@ -636,8 +683,19 @@ const sortedDataList = computed(() => {
|
|
|
636
683
|
function onSortChange(val: string) {
|
|
637
684
|
sortValue.value = val
|
|
638
685
|
}
|
|
639
|
-
|
|
640
|
-
|
|
686
|
+
|
|
687
|
+
function onSortAsc(event: Event, header: string) {
|
|
688
|
+
if (header === 'name') {
|
|
689
|
+
sortValue.value = 'name-asc'
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
function onSortDesc(event: Event, header: string) {
|
|
694
|
+
if (header === 'name') {
|
|
695
|
+
sortValue.value = 'name-desc'
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
</script>`,
|
|
641
699
|
},
|
|
642
700
|
],
|
|
643
701
|
},
|
|
@@ -658,7 +716,19 @@ function onSortChange(val: string) {
|
|
|
658
716
|
function onSortChange(val: string) {
|
|
659
717
|
sortValue.value = val
|
|
660
718
|
}
|
|
661
|
-
|
|
719
|
+
|
|
720
|
+
function onSortAsc(header: string) {
|
|
721
|
+
if (header === 'name') {
|
|
722
|
+
sortValue.value = 'name-asc'
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
function onSortDesc(header: string) {
|
|
727
|
+
if (header === 'name') {
|
|
728
|
+
sortValue.value = 'name-desc'
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
return { args, sortedDataList, onSortChange, onSortAsc, onSortDesc }
|
|
662
732
|
},
|
|
663
733
|
template: `
|
|
664
734
|
<p class="mb-2">Tableau avec pagination personnalisée et options de tri. Le tri est appliqué via l'événement <code>change:sort-select</code>.</p>
|
|
@@ -666,6 +736,8 @@ function onSortChange(val: string) {
|
|
|
666
736
|
v-bind="args"
|
|
667
737
|
:data-list="sortedDataList"
|
|
668
738
|
@change:sort-select="onSortChange"
|
|
739
|
+
@asc-sort="onSortAsc"
|
|
740
|
+
@desc-sort="onSortDesc"
|
|
669
741
|
/>
|
|
670
742
|
`,
|
|
671
743
|
}),
|
|
@@ -678,9 +750,9 @@ export const LargeurPersonnalisee: Story = {
|
|
|
678
750
|
headers,
|
|
679
751
|
title: 'Tableau largeur personnalisée',
|
|
680
752
|
uniqueId: 'table-largeur',
|
|
681
|
-
tableMinWidth: '
|
|
753
|
+
tableMinWidth: '1200px',
|
|
682
754
|
tableMaxWidth: '900px',
|
|
683
|
-
tableWidth: '
|
|
755
|
+
tableWidth: '100%',
|
|
684
756
|
},
|
|
685
757
|
parameters: {
|
|
686
758
|
sourceCode: [
|
|
@@ -692,9 +764,9 @@ export const LargeurPersonnalisee: Story = {
|
|
|
692
764
|
:headers="headers"
|
|
693
765
|
title="Tableau largeur personnalisée"
|
|
694
766
|
unique-id="table-largeur"
|
|
695
|
-
table-min-width="
|
|
767
|
+
table-min-width="1200px"
|
|
696
768
|
table-max-width="900px"
|
|
697
|
-
table-width="
|
|
769
|
+
table-width="100%"
|
|
698
770
|
/>
|
|
699
771
|
</template>
|
|
700
772
|
`,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import type { AmeliproTableCell, AmeliproTableHeader } from './types'
|
|
3
3
|
import type { IDataListItem, IndexedObject } from '../types'
|
|
4
4
|
import { type PropType, computed, onMounted, onUpdated, ref, watch } from 'vue'
|
|
5
|
+
import AmeliproIconBtn from '../AmeliproIconBtn/AmeliproIconBtn.vue'
|
|
5
6
|
import AmeliproPagination from '../AmeliproPagination/AmeliproPagination.vue'
|
|
6
7
|
import AmeliproSelect from '../AmeliproSelect/AmeliproSelect.vue'
|
|
7
8
|
import type { SelectItem } from '../AmeliproSelect/types'
|
|
@@ -133,6 +134,16 @@
|
|
|
133
134
|
|
|
134
135
|
const currentDataList = computed<IDataListItem[]>(() => currentPageItems(props.dataList))
|
|
135
136
|
|
|
137
|
+
const hasHeaderSorting = computed<boolean>(() => {
|
|
138
|
+
const hasSorting = ref(false)
|
|
139
|
+
props.headers.forEach((header: AmeliproTableHeader) => {
|
|
140
|
+
if (header.sort) {
|
|
141
|
+
hasSorting.value = true
|
|
142
|
+
}
|
|
143
|
+
})
|
|
144
|
+
return hasSorting.value
|
|
145
|
+
})
|
|
146
|
+
|
|
136
147
|
const tableWidthStyles = computed<IndexedObject>(() => {
|
|
137
148
|
const tableStyle: IndexedObject = {
|
|
138
149
|
maxWidth: props.tableMaxWidth,
|
|
@@ -146,7 +157,7 @@
|
|
|
146
157
|
return tableStyle
|
|
147
158
|
})
|
|
148
159
|
|
|
149
|
-
const emit = defineEmits(['click', 'change:sort-select', 'change:pagination-select'])
|
|
160
|
+
const emit = defineEmits(['click', 'change:sort-select', 'change:pagination-select', 'asc-sort', 'desc-sort'])
|
|
150
161
|
const emitClickEvent = (newCurrentPage: number): void => {
|
|
151
162
|
emit('click')
|
|
152
163
|
if (newCurrentPage !== null && newCurrentPage !== undefined) {
|
|
@@ -158,6 +169,16 @@
|
|
|
158
169
|
emit('change:sort-select', sortSelectModel.value)
|
|
159
170
|
}
|
|
160
171
|
|
|
172
|
+
const emitHeaderSortEvent = (order: string, header: string): void => {
|
|
173
|
+
if (order.toLowerCase() === 'ascendant') {
|
|
174
|
+
emit('asc-sort', header)
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
if (order.toLowerCase() === 'descendant') {
|
|
178
|
+
emit('desc-sort', header)
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
161
182
|
const emitPaginationSelectChange = (): void => {
|
|
162
183
|
emit('change:pagination-select')
|
|
163
184
|
updatePagination(props.dataList, paginationSelectModel.value)
|
|
@@ -223,76 +244,113 @@
|
|
|
223
244
|
</div>
|
|
224
245
|
</div>
|
|
225
246
|
<div
|
|
226
|
-
v-if="mdAndUp"
|
|
247
|
+
v-if="mdAndUp || hasHeaderSorting"
|
|
227
248
|
:id="`${uniqueId}-desktop`"
|
|
228
|
-
class="amelipro-table__wrapper--desktop"
|
|
229
249
|
style="overflow-x: auto;"
|
|
230
|
-
:style="tableWidthStyles"
|
|
231
250
|
>
|
|
232
|
-
<
|
|
233
|
-
|
|
234
|
-
:
|
|
235
|
-
class="amelipro-table__table--desktop"
|
|
236
|
-
:class="{
|
|
237
|
-
'vertical-border': verticalBorder
|
|
238
|
-
}"
|
|
251
|
+
<div
|
|
252
|
+
class="amelipro-table__wrapper--desktop"
|
|
253
|
+
:style="tableWidthStyles"
|
|
239
254
|
>
|
|
240
|
-
<
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
:
|
|
256
|
-
|
|
255
|
+
<table
|
|
256
|
+
:id="`${uniqueId}-table`"
|
|
257
|
+
:aria-label="title"
|
|
258
|
+
class="amelipro-table__table--desktop"
|
|
259
|
+
:class="{
|
|
260
|
+
'vertical-border': verticalBorder
|
|
261
|
+
}"
|
|
262
|
+
>
|
|
263
|
+
<thead>
|
|
264
|
+
<tr :id="`${uniqueId}-table-header`">
|
|
265
|
+
<th
|
|
266
|
+
v-for="(header, index) in headers"
|
|
267
|
+
:id="`${uniqueId}-table-header-cell-${index}`"
|
|
268
|
+
:key="index"
|
|
269
|
+
class="bg-ap-grey-lighten-4 font-weight-semibold"
|
|
270
|
+
:class="header.headerClasses"
|
|
271
|
+
scope="col"
|
|
272
|
+
:style="`min-width: ${header.minWidth};
|
|
273
|
+
width: ${header.width};
|
|
274
|
+
max-width: ${header.maxWidth};
|
|
275
|
+
text-align: ${header.align};`"
|
|
257
276
|
>
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
277
|
+
<p
|
|
278
|
+
:aria-describedby="header.descriptionId"
|
|
279
|
+
class="mb-0"
|
|
280
|
+
:class="{ 'd-flex' : header.sort }"
|
|
281
|
+
>
|
|
282
|
+
{{ header.title }}
|
|
283
|
+
|
|
284
|
+
<AmeliproIconBtn
|
|
285
|
+
v-if="header.sort?.ascendant"
|
|
286
|
+
class="ml-2 sort-btn"
|
|
287
|
+
:btn-label="header.sort?.ascendant.label"
|
|
288
|
+
:btn-title="header.sort?.ascendant.label"
|
|
289
|
+
:disabled="header.sort.ascendant.disabled"
|
|
290
|
+
icon="triangleUp"
|
|
291
|
+
icon-bg-color="transparent"
|
|
292
|
+
:icon-color="header.sort.ascendant.disabled ? 'ap-grey-lighten-2' :'ap-grey-darken-1'"
|
|
293
|
+
icon-hover-bg-color="transparent"
|
|
294
|
+
:icon-hover-color="header.sort.ascendant.disabled ? 'ap-grey-lighten-2' :'ap-grey-darken-1'"
|
|
295
|
+
:unique-id="`${uniqueId}-table-header-cell-${index}-asc-sort-btn`"
|
|
296
|
+
size="9px"
|
|
297
|
+
@click="emitHeaderSortEvent('ascendant', header.name)"
|
|
298
|
+
/>
|
|
299
|
+
|
|
300
|
+
<AmeliproIconBtn
|
|
301
|
+
v-if="header.sort?.descendant"
|
|
302
|
+
class="sort-btn"
|
|
303
|
+
:class="{ 'ml-2': !header.sort.ascendant }"
|
|
304
|
+
:btn-label="header.sort.descendant.label"
|
|
305
|
+
:btn-title="header.sort.descendant.label"
|
|
306
|
+
:disabled="header.sort.descendant.disabled"
|
|
307
|
+
icon="triangleDown"
|
|
308
|
+
icon-bg-color="transparent"
|
|
309
|
+
:icon-color="header.sort.descendant.disabled ? 'ap-grey-lighten-2' :'ap-grey-darken-1'"
|
|
310
|
+
icon-hover-bg-color="transparent"
|
|
311
|
+
:icon-hover-color="header.sort.descendant.disabled ? 'ap-grey-lighten-2' :'ap-grey-darken-1'"
|
|
312
|
+
:unique-id="`${uniqueId}-table-header-cell-${index}-desc-sort-btn`"
|
|
313
|
+
size="9px"
|
|
314
|
+
@click="emitHeaderSortEvent('descendant', header.name)"
|
|
315
|
+
/>
|
|
316
|
+
</p>
|
|
317
|
+
</th>
|
|
318
|
+
</tr>
|
|
319
|
+
</thead>
|
|
320
|
+
<tbody>
|
|
321
|
+
<tr
|
|
322
|
+
v-for="(row, rowIndex) in currentDataList"
|
|
323
|
+
:id="`${uniqueId}-table-row-${rowIndex}`"
|
|
324
|
+
:key="rowIndex"
|
|
275
325
|
>
|
|
276
|
-
<
|
|
277
|
-
v-
|
|
278
|
-
|
|
326
|
+
<td
|
|
327
|
+
v-for="(cell, cellIndex) in datas(row)"
|
|
328
|
+
:id="`${uniqueId}-table-row-${rowIndex}-cell-${cellIndex}`"
|
|
329
|
+
:key="cellIndex"
|
|
330
|
+
:class="cell.value !== undefined ? cell.columnClasses : undefined"
|
|
331
|
+
:style="cell !== undefined ? `text-align: ${cell.columnAlign};` : undefined"
|
|
279
332
|
>
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
333
|
+
<p
|
|
334
|
+
v-if="cell.value !== undefined"
|
|
335
|
+
class="mb-0"
|
|
336
|
+
>
|
|
337
|
+
{{ cell.value }}
|
|
338
|
+
</p>
|
|
339
|
+
|
|
340
|
+
<slot
|
|
341
|
+
v-else
|
|
342
|
+
:name="`item-${headers[cellIndex].name}`"
|
|
343
|
+
v-bind="row"
|
|
344
|
+
/>
|
|
345
|
+
</td>
|
|
346
|
+
</tr>
|
|
347
|
+
</tbody>
|
|
348
|
+
</table>
|
|
349
|
+
</div>
|
|
292
350
|
</div>
|
|
293
351
|
|
|
294
352
|
<div
|
|
295
|
-
v-if="!mdAndUp"
|
|
353
|
+
v-if="!mdAndUp && !hasHeaderSorting"
|
|
296
354
|
:id="`${uniqueId}-mobile`"
|
|
297
355
|
class="amelipro-table__wrapper--mobile"
|
|
298
356
|
>
|
|
@@ -396,6 +454,16 @@ td {
|
|
|
396
454
|
}
|
|
397
455
|
}
|
|
398
456
|
|
|
457
|
+
.amelipro-table__wrapper--desktop {
|
|
458
|
+
& th:first-child {
|
|
459
|
+
border-top-left-radius: 8px;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
& th:last-child {
|
|
463
|
+
border-top-right-radius: 8px;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
|
|
399
467
|
.vertical-border {
|
|
400
468
|
td,
|
|
401
469
|
th {
|
|
@@ -424,4 +492,14 @@ tr:last-child td {
|
|
|
424
492
|
border-radius: apTokens.$btn-radius;
|
|
425
493
|
padding: 0.5rem 0.75rem;
|
|
426
494
|
}
|
|
495
|
+
|
|
496
|
+
.sort-btn {
|
|
497
|
+
margin-top: -4px;
|
|
498
|
+
width: 24px !important;
|
|
499
|
+
height: 24px !important;
|
|
500
|
+
|
|
501
|
+
& :deep(.amelipro-custom-icon) {
|
|
502
|
+
vertical-align: unset !important;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
427
505
|
</style>
|
|
@@ -14,6 +14,16 @@ describe('AmeliproTable', () => {
|
|
|
14
14
|
name: 'name',
|
|
15
15
|
title: 'Nom',
|
|
16
16
|
width: '25%',
|
|
17
|
+
sort: {
|
|
18
|
+
ascendant: {
|
|
19
|
+
label: 'tri asc',
|
|
20
|
+
disabled: false,
|
|
21
|
+
},
|
|
22
|
+
descendant: {
|
|
23
|
+
label: 'tri desc',
|
|
24
|
+
disabled: true,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
17
27
|
},
|
|
18
28
|
{
|
|
19
29
|
align: 'left',
|