@brilo/base-blocks 0.1.28 → 0.1.30
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/build/.tsbuildinfo +1 -1
- package/build/blocks/career/career-header/edit.d.ts +6 -0
- package/build/blocks/career/career-header/edit.d.ts.map +1 -0
- package/build/blocks/career/career-header/edit.js +11 -0
- package/build/blocks/career/career-header/factory.d.ts +5 -0
- package/build/blocks/career/career-header/factory.d.ts.map +1 -0
- package/build/blocks/career/career-header/factory.js +24 -0
- package/build/blocks/career/career-header/icon.d.ts.map +1 -0
- package/build/blocks/career/career-header/icon.js +2 -0
- package/build/blocks/career/career-header/index.d.ts +5 -0
- package/build/blocks/career/career-header/index.d.ts.map +1 -0
- package/build/blocks/career/career-header/index.js +4 -0
- package/build/blocks/career/career-header/types.d.ts +10 -0
- package/build/blocks/career/career-header/types.d.ts.map +1 -0
- package/build/blocks/career/job-position-group/JobPositionsSelectModal.d.ts +9 -0
- package/build/blocks/career/job-position-group/JobPositionsSelectModal.d.ts.map +1 -0
- package/build/blocks/career/job-position-group/JobPositionsSelectModal.js +123 -0
- package/build/blocks/career/job-position-group/constants.d.ts +10 -0
- package/build/blocks/career/job-position-group/constants.d.ts.map +1 -0
- package/build/blocks/career/job-position-group/constants.js +9 -0
- package/build/blocks/career/job-position-group/edit.d.ts +6 -0
- package/build/blocks/career/job-position-group/edit.d.ts.map +1 -0
- package/build/blocks/career/job-position-group/edit.js +17 -0
- package/build/blocks/career/job-position-group/factory.d.ts +5 -0
- package/build/blocks/career/job-position-group/factory.d.ts.map +1 -0
- package/build/blocks/career/job-position-group/factory.js +44 -0
- package/build/blocks/career/job-position-group/icon.d.ts +2 -0
- package/build/blocks/career/job-position-group/icon.d.ts.map +1 -0
- package/build/blocks/career/job-position-group/icon.js +2 -0
- package/build/blocks/career/job-position-group/index.d.ts +6 -0
- package/build/blocks/career/job-position-group/index.d.ts.map +1 -0
- package/build/blocks/career/job-position-group/index.js +5 -0
- package/build/blocks/career/job-position-group/types.d.ts +20 -0
- package/build/blocks/career/job-position-group/types.d.ts.map +1 -0
- package/build/blocks/career/job-position-group/types.js +1 -0
- package/build/blocks/document/documents-grid/DocumentsSelectModal.d.ts.map +1 -0
- package/build/blocks/document/documents-grid/constants.d.ts +9 -0
- package/build/blocks/document/documents-grid/constants.d.ts.map +1 -0
- package/build/blocks/document/documents-grid/constants.js +8 -0
- package/build/blocks/document/documents-grid/edit.d.ts +6 -0
- package/build/blocks/document/documents-grid/edit.d.ts.map +1 -0
- package/build/blocks/document/{documents-group → documents-grid}/edit.js +10 -8
- package/build/blocks/document/documents-grid/factory.d.ts +5 -0
- package/build/blocks/document/documents-grid/factory.d.ts.map +1 -0
- package/build/blocks/document/{documents-group → documents-grid}/factory.js +12 -12
- package/build/blocks/document/documents-grid/icon.d.ts +2 -0
- package/build/blocks/document/documents-grid/icon.d.ts.map +1 -0
- package/build/blocks/document/documents-grid/index.d.ts +6 -0
- package/build/blocks/document/documents-grid/index.d.ts.map +1 -0
- package/build/blocks/document/documents-grid/index.js +5 -0
- package/build/blocks/document/documents-grid/types.d.ts +23 -0
- package/build/blocks/document/documents-grid/types.d.ts.map +1 -0
- package/build/blocks/document/documents-grid/types.js +1 -0
- package/build/blocks/post/post-content/edit.d.ts +6 -0
- package/build/blocks/post/post-content/edit.d.ts.map +1 -0
- package/build/blocks/post/post-content/edit.js +9 -0
- package/build/blocks/post/post-content/factory.d.ts +5 -0
- package/build/blocks/post/post-content/factory.d.ts.map +1 -0
- package/build/blocks/post/post-content/factory.js +18 -0
- package/build/blocks/post/post-content/icon.d.ts +2 -0
- package/build/blocks/post/post-content/icon.d.ts.map +1 -0
- package/build/blocks/post/post-content/icon.js +2 -0
- package/build/blocks/post/post-content/index.d.ts +5 -0
- package/build/blocks/post/post-content/index.d.ts.map +1 -0
- package/build/blocks/post/post-content/index.js +4 -0
- package/build/blocks/post/post-content/types.d.ts +5 -0
- package/build/blocks/post/post-content/types.d.ts.map +1 -0
- package/build/blocks/post/post-content/types.js +1 -0
- package/build/blocks/share/share/constants.d.ts +2 -0
- package/build/blocks/share/share/constants.d.ts.map +1 -0
- package/build/blocks/share/share/constants.js +1 -0
- package/build/blocks/share/share/edit.d.ts +6 -0
- package/build/blocks/share/share/edit.d.ts.map +1 -0
- package/build/blocks/share/share/edit.js +18 -0
- package/build/blocks/share/share/factory.d.ts +5 -0
- package/build/blocks/share/share/factory.d.ts.map +1 -0
- package/build/blocks/share/share/factory.js +26 -0
- package/build/blocks/share/share/icon.d.ts +2 -0
- package/build/blocks/share/share/icon.d.ts.map +1 -0
- package/build/blocks/share/share/icon.js +2 -0
- package/build/blocks/share/share/index.d.ts +5 -0
- package/build/blocks/share/share/index.d.ts.map +1 -0
- package/build/blocks/share/share/index.js +4 -0
- package/build/blocks/share/share/types.d.ts +11 -0
- package/build/blocks/share/share/types.d.ts.map +1 -0
- package/build/blocks/share/share/types.js +1 -0
- package/build/index.d.ts +10 -2
- package/build/index.d.ts.map +1 -1
- package/build/index.js +5 -1
- package/package.json +1 -1
- package/src/blocks/career/career-header/edit.tsx +61 -0
- package/src/blocks/career/career-header/factory.tsx +28 -0
- package/src/blocks/career/career-header/icon.tsx +8 -0
- package/src/blocks/career/career-header/index.ts +8 -0
- package/src/blocks/career/career-header/types.ts +11 -0
- package/src/blocks/career/job-position-group/JobPositionsSelectModal.tsx +238 -0
- package/src/blocks/career/job-position-group/constants.ts +11 -0
- package/src/blocks/career/job-position-group/edit.tsx +93 -0
- package/src/blocks/career/job-position-group/factory.tsx +56 -0
- package/src/blocks/career/job-position-group/icon.tsx +7 -0
- package/src/blocks/career/job-position-group/index.ts +15 -0
- package/src/blocks/career/job-position-group/types.ts +23 -0
- package/src/blocks/document/documents-grid/constants.ts +9 -0
- package/src/blocks/document/{documents-group → documents-grid}/edit.tsx +17 -15
- package/src/blocks/document/documents-grid/factory.tsx +63 -0
- package/src/blocks/document/documents-grid/index.ts +15 -0
- package/src/blocks/document/documents-grid/types.ts +31 -0
- package/src/blocks/post/post-content/edit.tsx +18 -0
- package/src/blocks/post/post-content/factory.tsx +22 -0
- package/src/blocks/post/post-content/icon.tsx +9 -0
- package/src/blocks/post/post-content/index.ts +8 -0
- package/src/blocks/post/post-content/types.ts +6 -0
- package/src/blocks/share/share/constants.ts +1 -0
- package/src/blocks/share/share/edit.tsx +57 -0
- package/src/blocks/share/share/factory.tsx +30 -0
- package/src/blocks/share/share/icon.tsx +9 -0
- package/src/blocks/share/share/index.ts +8 -0
- package/src/blocks/share/share/types.ts +12 -0
- package/src/index.ts +21 -7
- package/build/blocks/document/documents-group/DocumentsSelectModal.d.ts.map +0 -1
- package/build/blocks/document/documents-group/constants.d.ts +0 -7
- package/build/blocks/document/documents-group/constants.d.ts.map +0 -1
- package/build/blocks/document/documents-group/constants.js +0 -5
- package/build/blocks/document/documents-group/edit.d.ts +0 -6
- package/build/blocks/document/documents-group/edit.d.ts.map +0 -1
- package/build/blocks/document/documents-group/factory.d.ts +0 -5
- package/build/blocks/document/documents-group/factory.d.ts.map +0 -1
- package/build/blocks/document/documents-group/icon.d.ts.map +0 -1
- package/build/blocks/document/documents-group/index.d.ts +0 -6
- package/build/blocks/document/documents-group/index.d.ts.map +0 -1
- package/build/blocks/document/documents-group/index.js +0 -5
- package/build/blocks/document/documents-group/types.d.ts +0 -22
- package/build/blocks/document/documents-group/types.d.ts.map +0 -1
- package/src/blocks/document/documents-group/constants.ts +0 -7
- package/src/blocks/document/documents-group/factory.tsx +0 -59
- package/src/blocks/document/documents-group/index.ts +0 -15
- package/src/blocks/document/documents-group/types.ts +0 -25
- /package/build/blocks/{document/documents-group → career/career-header}/icon.d.ts +0 -0
- /package/build/blocks/{document/documents-group → career/career-header}/types.js +0 -0
- /package/build/blocks/document/{documents-group → documents-grid}/DocumentsSelectModal.d.ts +0 -0
- /package/build/blocks/document/{documents-group → documents-grid}/DocumentsSelectModal.js +0 -0
- /package/build/blocks/document/{documents-group → documents-grid}/icon.js +0 -0
- /package/src/blocks/document/{documents-group → documents-grid}/DocumentsSelectModal.tsx +0 -0
- /package/src/blocks/document/{documents-group → documents-grid}/icon.tsx +0 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CareerHeaderAttributes, CareerHeaderOptions } from './types';
|
|
2
|
+
export declare function createCareerHeaderEdit(_options: CareerHeaderOptions): ({ attributes, setAttributes, }: {
|
|
3
|
+
attributes: CareerHeaderAttributes;
|
|
4
|
+
setAttributes: (a: Partial<CareerHeaderAttributes>) => void;
|
|
5
|
+
}) => import("react").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=edit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../../src/blocks/career/career-header/edit.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,sBAAsB,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAA;AAExE,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,mBAAmB,oCAI/D;IACD,UAAU,EAAE,sBAAsB,CAAA;IAClC,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,KAAK,IAAI,CAAA;CAC5D,iCAgDF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
|
|
3
|
+
import { PanelBody, ToggleControl } from '@wordpress/components';
|
|
4
|
+
import { __ } from '@wordpress/i18n';
|
|
5
|
+
export function createCareerHeaderEdit(_options) {
|
|
6
|
+
return function Edit({ attributes, setAttributes, }) {
|
|
7
|
+
const { showExcerpt, showLocation, showSalary, showBenefits, showEmploymentType } = attributes;
|
|
8
|
+
const blockProps = useBlockProps({ className: 'wp-block-section' });
|
|
9
|
+
return (_jsxs(_Fragment, { children: [_jsx(InspectorControls, { children: _jsxs(PanelBody, { title: __('Zobrazené údaje', 'brilo-blocks'), initialOpen: true, children: [_jsx(ToggleControl, { label: __('Zobrazit perex', 'brilo-blocks'), checked: showExcerpt, onChange: (value) => setAttributes({ showExcerpt: value }) }), _jsx(ToggleControl, { label: __('Zobrazit lokalitu', 'brilo-blocks'), checked: showLocation, onChange: (value) => setAttributes({ showLocation: value }) }), _jsx(ToggleControl, { label: __('Zobrazit plat', 'brilo-blocks'), checked: showSalary, onChange: (value) => setAttributes({ showSalary: value }) }), _jsx(ToggleControl, { label: __('Zobrazit benefity', 'brilo-blocks'), checked: showBenefits, onChange: (value) => setAttributes({ showBenefits: value }) }), _jsx(ToggleControl, { label: __('Zobrazit typ úvazku', 'brilo-blocks'), checked: showEmploymentType, onChange: (value) => setAttributes({ showEmploymentType: value }) })] }) }), _jsx("div", { ...blockProps, children: _jsxs("div", { className: "components-placeholder", children: [_jsx("div", { className: "components-placeholder__label", children: __('Hlavička kariéry', 'brilo-blocks') }), _jsx("div", { className: "components-placeholder__instructions", children: __('Zobrazí data aktuální pozice — název, perex, lokalitu, plat, benefity a typ úvazku.', 'brilo-blocks') })] }) })] }));
|
|
10
|
+
};
|
|
11
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BlockConfiguration } from '@wordpress/blocks';
|
|
2
|
+
import type { CareerHeaderAttributes, CareerHeaderOptions } from './types';
|
|
3
|
+
export type { CareerHeaderAttributes, CareerHeaderOptions };
|
|
4
|
+
export declare function createCareerHeaderBlock(options: CareerHeaderOptions): BlockConfiguration<CareerHeaderAttributes>;
|
|
5
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/blocks/career/career-header/factory.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAA;AAIzD,OAAO,KAAK,EAAC,sBAAsB,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAA;AAExE,YAAY,EAAC,sBAAsB,EAAE,mBAAmB,EAAC,CAAA;AAEzD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAAC,sBAAsB,CAAC,CAmBhH"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { __ } from '@wordpress/i18n';
|
|
2
|
+
import { createCareerHeaderEdit } from './edit';
|
|
3
|
+
import { icon as defaultIcon } from './icon';
|
|
4
|
+
export function createCareerHeaderBlock(options) {
|
|
5
|
+
var _a, _b, _c;
|
|
6
|
+
return {
|
|
7
|
+
name: options.name,
|
|
8
|
+
title: (_a = options.title) !== null && _a !== void 0 ? _a : __('Hlavička kariéry', 'brilo-blocks'),
|
|
9
|
+
description: options.description,
|
|
10
|
+
category: (_b = options.category) !== null && _b !== void 0 ? _b : 'widgets',
|
|
11
|
+
...(options.parent && { parent: options.parent }),
|
|
12
|
+
icon: (_c = options.icon) !== null && _c !== void 0 ? _c : { src: defaultIcon },
|
|
13
|
+
supports: { html: false, customClassName: false },
|
|
14
|
+
attributes: {
|
|
15
|
+
showExcerpt: { type: 'boolean', default: true },
|
|
16
|
+
showLocation: { type: 'boolean', default: true },
|
|
17
|
+
showSalary: { type: 'boolean', default: true },
|
|
18
|
+
showBenefits: { type: 'boolean', default: true },
|
|
19
|
+
showEmploymentType: { type: 'boolean', default: true },
|
|
20
|
+
},
|
|
21
|
+
edit: createCareerHeaderEdit(options),
|
|
22
|
+
save: () => null,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../src/blocks/career/career-header/icon.tsx"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,6BAOhB,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export const icon = (_jsxs("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("rect", { x: "2", y: "3", width: "16", height: "4", rx: "1", stroke: "black", fill: "none" }), _jsx("line", { x1: "2", y1: "10", x2: "14", y2: "10", stroke: "black" }), _jsx("line", { x1: "2", y1: "13", x2: "18", y2: "13", stroke: "black" }), _jsx("line", { x1: "2", y1: "16", x2: "10", y2: "16", stroke: "black" })] }));
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { CareerHeaderAttributes, CareerHeaderOptions } from './types';
|
|
2
|
+
export { createCareerHeaderBlock } from './factory';
|
|
3
|
+
import type { CareerHeaderOptions } from './types';
|
|
4
|
+
export declare const careerHeaderDefaults: CareerHeaderOptions;
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/blocks/career/career-header/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAC,sBAAsB,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAA;AACxE,OAAO,EAAC,uBAAuB,EAAC,MAAM,WAAW,CAAA;AAEjD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,SAAS,CAAA;AAEhD,eAAO,MAAM,oBAAoB,EAAE,mBAElC,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { BriloBlockType } from '../../../types';
|
|
2
|
+
export interface CareerHeaderAttributes extends Record<string, unknown> {
|
|
3
|
+
showExcerpt: boolean;
|
|
4
|
+
showLocation: boolean;
|
|
5
|
+
showSalary: boolean;
|
|
6
|
+
showBenefits: boolean;
|
|
7
|
+
showEmploymentType: boolean;
|
|
8
|
+
}
|
|
9
|
+
export type CareerHeaderOptions = BriloBlockType;
|
|
10
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/blocks/career/career-header/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AAE3C,MAAM,WAAW,sBAAuB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACrE,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,kBAAkB,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { SelectControlProps } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Manual job_position picker built on @wordpress/dataviews, mirroring
|
|
5
|
+
* DocumentsSelectModal closely (table view, search, sort, checkbox
|
|
6
|
+
* selection, reorderable selection list) but with just title/date columns.
|
|
7
|
+
*/
|
|
8
|
+
export declare function JobPositionsSelectModal({ selectedItems, onChange }: SelectControlProps): React.JSX.Element;
|
|
9
|
+
//# sourceMappingURL=JobPositionsSelectModal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JobPositionsSelectModal.d.ts","sourceRoot":"","sources":["../../../../src/blocks/career/job-position-group/JobPositionsSelectModal.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAqC,MAAM,OAAO,CAAA;AACzD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAA;AA0G/C;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EAAC,aAAa,EAAE,QAAQ,EAAC,EAAE,kBAAkB,qBAuHpF"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import apiFetch from '@wordpress/api-fetch';
|
|
3
|
+
import { Button, Card, CardBody, __experimentalHStack as HStack, Modal, __experimentalVStack as VStack } from '@wordpress/components';
|
|
4
|
+
import { DataViews } from '@wordpress/dataviews/wp';
|
|
5
|
+
import { __ } from '@wordpress/i18n';
|
|
6
|
+
import { arrowDown, arrowUp, close, plusCircle } from '@wordpress/icons';
|
|
7
|
+
// biome-ignore lint/correctness/noUnusedImports: required in scope for classic JSX transform
|
|
8
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
9
|
+
const DEFAULT_VIEW = {
|
|
10
|
+
type: 'table',
|
|
11
|
+
search: '',
|
|
12
|
+
filters: [],
|
|
13
|
+
page: 1,
|
|
14
|
+
perPage: 20,
|
|
15
|
+
sort: { field: 'title', direction: 'asc' },
|
|
16
|
+
fields: ['date'],
|
|
17
|
+
titleField: 'title',
|
|
18
|
+
};
|
|
19
|
+
function useJobPositions() {
|
|
20
|
+
const [positions, setPositions] = useState([]);
|
|
21
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
setIsLoading(true);
|
|
24
|
+
apiFetch({
|
|
25
|
+
path: '/wp/v2/job_position?per_page=100&orderby=title&order=asc&_fields=id,title,date',
|
|
26
|
+
})
|
|
27
|
+
.then((result) => setPositions(result))
|
|
28
|
+
.catch(() => setPositions([]))
|
|
29
|
+
.finally(() => setIsLoading(false));
|
|
30
|
+
}, []);
|
|
31
|
+
return { positions, isLoading };
|
|
32
|
+
}
|
|
33
|
+
function SelectedOrderList({ items, onChange, onRemove, }) {
|
|
34
|
+
if (0 === items.length) {
|
|
35
|
+
return _jsx("p", { className: "i-job-position-select-modal__empty", children: __('Nevybrány žádné pozice.', 'brilo-blocks') });
|
|
36
|
+
}
|
|
37
|
+
const move = (index, direction) => {
|
|
38
|
+
const target = index + direction;
|
|
39
|
+
if (target < 0 || target >= items.length) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const next = [...items];
|
|
43
|
+
[next[index], next[target]] = [next[target], next[index]];
|
|
44
|
+
onChange(next.map((item) => item.id));
|
|
45
|
+
};
|
|
46
|
+
return (_jsx(VStack, { spacing: 2, children: items.map((item, index) => (_jsx(Card, { size: "small", className: "i-job-position-select-modal__item", children: _jsx(CardBody, { children: _jsxs(HStack, { alignment: "center", children: [_jsx("span", { className: "i-job-position-select-modal__item-title", style: {
|
|
47
|
+
flexGrow: 1,
|
|
48
|
+
minWidth: 0,
|
|
49
|
+
textAlign: 'left',
|
|
50
|
+
overflow: 'hidden',
|
|
51
|
+
textOverflow: 'ellipsis',
|
|
52
|
+
whiteSpace: 'nowrap',
|
|
53
|
+
}, children: item.title.rendered || __('(bez názvu)', 'brilo-blocks') }), _jsxs(HStack, { expanded: false, spacing: 1, children: [_jsx(Button, { size: "small", icon: arrowUp, label: __('Posunout výš', 'brilo-blocks'), onClick: () => move(index, -1), disabled: 0 === index }), _jsx(Button, { size: "small", icon: arrowDown, label: __('Posunout níž', 'brilo-blocks'), onClick: () => move(index, 1), disabled: index === items.length - 1 }), _jsx(Button, { size: "small", icon: close, isDestructive: true, label: __('Odebrat', 'brilo-blocks'), onClick: () => onRemove(item.id) })] })] }) }) }, item.id))) }));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Manual job_position picker built on @wordpress/dataviews, mirroring
|
|
57
|
+
* DocumentsSelectModal closely (table view, search, sort, checkbox
|
|
58
|
+
* selection, reorderable selection list) but with just title/date columns.
|
|
59
|
+
*/
|
|
60
|
+
export function JobPositionsSelectModal({ selectedItems, onChange }) {
|
|
61
|
+
const { positions, isLoading } = useJobPositions();
|
|
62
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
63
|
+
const [view, setView] = useState(DEFAULT_VIEW);
|
|
64
|
+
const selectedPositions = useMemo(() => selectedItems.map((id) => positions.find((pos) => pos.id === id)).filter((pos) => undefined !== pos), [selectedItems, positions]);
|
|
65
|
+
const fields = useMemo(() => [
|
|
66
|
+
{
|
|
67
|
+
id: 'title',
|
|
68
|
+
label: __('Název', 'brilo-blocks'),
|
|
69
|
+
enableHiding: false,
|
|
70
|
+
enableSorting: true,
|
|
71
|
+
render: ({ item }) => item.title.rendered || __('(bez názvu)', 'brilo-blocks'),
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: 'date',
|
|
75
|
+
label: __('Datum', 'brilo-blocks'),
|
|
76
|
+
enableSorting: true,
|
|
77
|
+
render: ({ item }) => (item.date ? new Date(item.date).toLocaleDateString() : '—'),
|
|
78
|
+
},
|
|
79
|
+
], []);
|
|
80
|
+
const { data, paginationInfo } = useMemo(() => {
|
|
81
|
+
var _a;
|
|
82
|
+
var _b, _c;
|
|
83
|
+
let filtered = positions;
|
|
84
|
+
if (view.search) {
|
|
85
|
+
const needle = view.search.toLowerCase();
|
|
86
|
+
filtered = filtered.filter((pos) => pos.title.rendered.toLowerCase().includes(needle));
|
|
87
|
+
}
|
|
88
|
+
if ((_a = view.sort) === null || _a === void 0 ? void 0 : _a.field) {
|
|
89
|
+
const { field, direction } = view.sort;
|
|
90
|
+
const sorted = [...filtered];
|
|
91
|
+
sorted.sort((a, b) => {
|
|
92
|
+
var _a, _b;
|
|
93
|
+
const valueA = 'title' === field ? a.title.rendered : ((_a = a[field]) !== null && _a !== void 0 ? _a : '');
|
|
94
|
+
const valueB = 'title' === field ? b.title.rendered : ((_b = b[field]) !== null && _b !== void 0 ? _b : '');
|
|
95
|
+
const result = String(valueA).localeCompare(String(valueB));
|
|
96
|
+
return 'desc' === direction ? -result : result;
|
|
97
|
+
});
|
|
98
|
+
filtered = sorted;
|
|
99
|
+
}
|
|
100
|
+
const perPage = (_b = view.perPage) !== null && _b !== void 0 ? _b : 20;
|
|
101
|
+
const page = (_c = view.page) !== null && _c !== void 0 ? _c : 1;
|
|
102
|
+
const start = (page - 1) * perPage;
|
|
103
|
+
return {
|
|
104
|
+
data: filtered.slice(start, start + perPage),
|
|
105
|
+
paginationInfo: { totalItems: filtered.length, totalPages: Math.ceil(filtered.length / perPage) || 1 },
|
|
106
|
+
};
|
|
107
|
+
}, [positions, view]);
|
|
108
|
+
const toggleSelected = (id) => {
|
|
109
|
+
onChange(selectedItems.includes(id) ? selectedItems.filter((itemId) => itemId !== id) : [...selectedItems, id]);
|
|
110
|
+
};
|
|
111
|
+
return (_jsxs(VStack, { spacing: 3, className: "i-job-position-select-modal", children: [_jsx(Button, { variant: "secondary", icon: plusCircle, onClick: () => setIsOpen(true), children: __('Vybrat pozice', 'brilo-blocks') }), _jsx(SelectedOrderList, { items: selectedPositions, onChange: onChange, onRemove: (id) => onChange(selectedItems.filter((itemId) => itemId !== id)) }), isOpen && (_jsx(Modal, { title: __('Vybrat pozice', 'brilo-blocks'), onRequestClose: () => setIsOpen(false), size: "fill", children: _jsxs(VStack, { spacing: 4, style: { height: '100%' }, children: [_jsx("div", { style: { flexGrow: 1, minHeight: 0 }, children: _jsx(DataViews, { data: data, fields: fields, view: view, onChangeView: setView, paginationInfo: paginationInfo, isLoading: isLoading, defaultLayouts: { table: {} }, getItemId: (item) => String(item.id), selection: selectedItems.map(String), onChangeSelection: (ids) => onChange(ids.map(Number)), actions: [
|
|
112
|
+
{
|
|
113
|
+
id: 'toggle',
|
|
114
|
+
label: (items) => items.length && selectedItems.includes(items[0].id) ? __('Odebrat', 'brilo-blocks') : __('Přidat', 'brilo-blocks'),
|
|
115
|
+
supportsBulk: true,
|
|
116
|
+
callback: (items) => {
|
|
117
|
+
items.forEach((item) => {
|
|
118
|
+
toggleSelected(item.id);
|
|
119
|
+
});
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
] }) }), _jsx(HStack, { justify: "flex-end", children: _jsx(Button, { variant: "primary", onClick: () => setIsOpen(false), children: __('Hotovo', 'brilo-blocks') }) })] }) }))] }));
|
|
123
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const JOB_POSITION_GROUP_MODES: readonly ['selected', 'listing'];
|
|
2
|
+
export declare const JOB_POSITION_GROUP_SORT_BYS: readonly ['date', 'title', 'start_date', 'menu_order'];
|
|
3
|
+
export declare const JOB_POSITION_GROUP_SORT_ORDERS: readonly ['asc', 'desc'];
|
|
4
|
+
export declare const JOB_POSITION_GROUP_MODE: "selected";
|
|
5
|
+
export declare const JOB_POSITION_GROUP_SORT_BY: "date";
|
|
6
|
+
export declare const JOB_POSITION_GROUP_SORT_ORDER: "desc";
|
|
7
|
+
export declare const JOB_POSITION_GROUP_PER_PAGE_MIN = 1;
|
|
8
|
+
export declare const JOB_POSITION_GROUP_PER_PAGE_MAX = 24;
|
|
9
|
+
export declare const JOB_POSITION_GROUP_PER_PAGE = 6;
|
|
10
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/blocks/career/job-position-group/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,YAAI,UAAU,EAAE,SAAS,CAAU,CAAA;AACxE,eAAO,MAAM,2BAA2B,YAAI,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,CAAU,CAAA;AACjG,eAAO,MAAM,8BAA8B,YAAI,KAAK,EAAE,MAAM,CAAU,CAAA;AAEtE,eAAO,MAAM,uBAAuB,YAA8B,CAAA;AAClE,eAAO,MAAM,0BAA0B,QAAiC,CAAA;AACxE,eAAO,MAAM,6BAA6B,QAAoC,CAAA;AAE9E,eAAO,MAAM,+BAA+B,IAAI,CAAA;AAChD,eAAO,MAAM,+BAA+B,KAAK,CAAA;AACjD,eAAO,MAAM,2BAA2B,IAAI,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const JOB_POSITION_GROUP_MODES = ['selected', 'listing'];
|
|
2
|
+
export const JOB_POSITION_GROUP_SORT_BYS = ['date', 'title', 'start_date', 'menu_order'];
|
|
3
|
+
export const JOB_POSITION_GROUP_SORT_ORDERS = ['asc', 'desc'];
|
|
4
|
+
export const JOB_POSITION_GROUP_MODE = JOB_POSITION_GROUP_MODES[0];
|
|
5
|
+
export const JOB_POSITION_GROUP_SORT_BY = JOB_POSITION_GROUP_SORT_BYS[0];
|
|
6
|
+
export const JOB_POSITION_GROUP_SORT_ORDER = JOB_POSITION_GROUP_SORT_ORDERS[1];
|
|
7
|
+
export const JOB_POSITION_GROUP_PER_PAGE_MIN = 1;
|
|
8
|
+
export const JOB_POSITION_GROUP_PER_PAGE_MAX = 24;
|
|
9
|
+
export const JOB_POSITION_GROUP_PER_PAGE = 6;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { JobPositionGroupAttributes, JobPositionGroupOptions } from './types';
|
|
2
|
+
export declare function createJobPositionGroupEdit(options: JobPositionGroupOptions): ({ attributes, setAttributes, }: {
|
|
3
|
+
attributes: JobPositionGroupAttributes;
|
|
4
|
+
setAttributes: (a: Partial<JobPositionGroupAttributes>) => void;
|
|
5
|
+
}) => import("react").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=edit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../../src/blocks/career/job-position-group/edit.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,0BAA0B,EAAE,uBAAuB,EAAC,MAAM,SAAS,CAAA;AAEhF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,uBAAuB,oCAItE;IACD,UAAU,EAAE,0BAA0B,CAAA;IACtC,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,0BAA0B,CAAC,KAAK,IAAI,CAAA;CAChE,iCA0EF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
|
|
3
|
+
import { PanelBody, RangeControl, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption, } from '@wordpress/components';
|
|
4
|
+
import { __ } from '@wordpress/i18n';
|
|
5
|
+
import { JOB_POSITION_GROUP_PER_PAGE, JOB_POSITION_GROUP_PER_PAGE_MAX, JOB_POSITION_GROUP_PER_PAGE_MIN } from './constants';
|
|
6
|
+
export function createJobPositionGroupEdit(options) {
|
|
7
|
+
return function Edit({ attributes, setAttributes, }) {
|
|
8
|
+
var _a;
|
|
9
|
+
const { mode, selectedPositions, perPage, sortBy, sortOrder } = attributes;
|
|
10
|
+
const blockProps = useBlockProps({ className: 'wp-block-section' });
|
|
11
|
+
return (_jsxs(_Fragment, { children: [_jsx(InspectorControls, { children: _jsxs(PanelBody, { title: __('Nastavení výpisu', 'brilo-blocks'), initialOpen: true, children: [_jsxs(ToggleGroupControl, { label: __('Zdroj pozic', 'brilo-blocks'), value: mode, onChange: (value) => setAttributes({ mode: value }), isBlock: true, children: [_jsx(ToggleGroupControlOption, { value: "selected", label: __('Vybrané', 'brilo-blocks') }), _jsx(ToggleGroupControlOption, { value: "listing", label: __('Výpis', 'brilo-blocks') })] }), 'listing' === mode && (_jsxs(_Fragment, { children: [_jsx(RangeControl, { label: __('Počet pozic', 'brilo-blocks'), value: perPage, onChange: (value) => setAttributes({ perPage: value !== null && value !== void 0 ? value : JOB_POSITION_GROUP_PER_PAGE }), min: JOB_POSITION_GROUP_PER_PAGE_MIN, max: JOB_POSITION_GROUP_PER_PAGE_MAX }), _jsxs(ToggleGroupControl, { label: __('Řazení', 'brilo-blocks'), value: sortBy, onChange: (value) => setAttributes({ sortBy: value }), isBlock: true, children: [_jsx(ToggleGroupControlOption, { value: "date", label: __('Datum publikace', 'brilo-blocks') }), _jsx(ToggleGroupControlOption, { value: "title", label: __('Název', 'brilo-blocks') }), _jsx(ToggleGroupControlOption, { value: "start_date", label: __('Datum nástupu', 'brilo-blocks') }), _jsx(ToggleGroupControlOption, { value: "menu_order", label: __('Pořadí', 'brilo-blocks') })] }), _jsxs(ToggleGroupControl, { label: __('Směr řazení', 'brilo-blocks'), value: sortOrder, onChange: (value) => setAttributes({ sortOrder: value }), isBlock: true, children: [_jsx(ToggleGroupControlOption, { value: "desc", label: __('Sestupně', 'brilo-blocks') }), _jsx(ToggleGroupControlOption, { value: "asc", label: __('Vzestupně', 'brilo-blocks') })] })] }))] }) }), _jsxs("div", { ...blockProps, children: ['selected' === mode &&
|
|
12
|
+
((_a = options.renderPositionsControl) === null || _a === void 0 ? void 0 : _a.call(options, {
|
|
13
|
+
selectedItems: selectedPositions,
|
|
14
|
+
onChange: (ids) => setAttributes({ selectedPositions: ids }),
|
|
15
|
+
})), 'listing' === mode && (_jsxs("div", { className: "components-placeholder", children: [_jsx("div", { className: "components-placeholder__label", children: __('Pracovní pozice', 'brilo-blocks') }), _jsx("div", { className: "components-placeholder__instructions", children: `${__('Zobrazí', 'brilo-blocks')} ${perPage} ${__('pracovních pozic.', 'brilo-blocks')}` })] }))] })] }));
|
|
16
|
+
};
|
|
17
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BlockConfiguration } from '@wordpress/blocks';
|
|
2
|
+
import type { JobPositionGroupAttributes, JobPositionGroupOptions } from './types';
|
|
3
|
+
export type { JobPositionGroupAttributes, JobPositionGroupOptions };
|
|
4
|
+
export declare function createJobPositionGroupBlock(options: JobPositionGroupOptions): BlockConfiguration<JobPositionGroupAttributes>;
|
|
5
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/blocks/career/job-position-group/factory.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAA;AAazD,OAAO,KAAK,EAAC,0BAA0B,EAAE,uBAAuB,EAAC,MAAM,SAAS,CAAA;AAEhF,YAAY,EAAC,0BAA0B,EAAE,uBAAuB,EAAC,CAAA;AAEjE,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,uBAAuB,GAAG,kBAAkB,CAAC,0BAA0B,CAAC,CAsC5H"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { __ } from '@wordpress/i18n';
|
|
2
|
+
import { JOB_POSITION_GROUP_MODE, JOB_POSITION_GROUP_MODES, JOB_POSITION_GROUP_PER_PAGE, JOB_POSITION_GROUP_SORT_BY, JOB_POSITION_GROUP_SORT_BYS, JOB_POSITION_GROUP_SORT_ORDER, JOB_POSITION_GROUP_SORT_ORDERS, } from './constants';
|
|
3
|
+
import { createJobPositionGroupEdit } from './edit';
|
|
4
|
+
import { icon as defaultIcon } from './icon';
|
|
5
|
+
export function createJobPositionGroupBlock(options) {
|
|
6
|
+
var _a, _b, _c;
|
|
7
|
+
return {
|
|
8
|
+
name: options.name,
|
|
9
|
+
title: (_a = options.title) !== null && _a !== void 0 ? _a : __('Pracovní pozice', 'brilo-blocks'),
|
|
10
|
+
description: options.description,
|
|
11
|
+
category: (_b = options.category) !== null && _b !== void 0 ? _b : 'widgets',
|
|
12
|
+
...(options.parent && { parent: options.parent }),
|
|
13
|
+
icon: (_c = options.icon) !== null && _c !== void 0 ? _c : { src: defaultIcon },
|
|
14
|
+
supports: { html: false, customClassName: false },
|
|
15
|
+
attributes: {
|
|
16
|
+
mode: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
default: JOB_POSITION_GROUP_MODE,
|
|
19
|
+
enum: [...JOB_POSITION_GROUP_MODES],
|
|
20
|
+
},
|
|
21
|
+
selectedPositions: {
|
|
22
|
+
type: 'array',
|
|
23
|
+
default: [],
|
|
24
|
+
items: { type: 'number' },
|
|
25
|
+
},
|
|
26
|
+
perPage: {
|
|
27
|
+
type: 'number',
|
|
28
|
+
default: JOB_POSITION_GROUP_PER_PAGE,
|
|
29
|
+
},
|
|
30
|
+
sortBy: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
default: JOB_POSITION_GROUP_SORT_BY,
|
|
33
|
+
enum: [...JOB_POSITION_GROUP_SORT_BYS],
|
|
34
|
+
},
|
|
35
|
+
sortOrder: {
|
|
36
|
+
type: 'string',
|
|
37
|
+
default: JOB_POSITION_GROUP_SORT_ORDER,
|
|
38
|
+
enum: [...JOB_POSITION_GROUP_SORT_ORDERS],
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
edit: createJobPositionGroupEdit(options),
|
|
42
|
+
save: () => null,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../src/blocks/career/job-position-group/icon.tsx"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,6BAMhB,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export const icon = (_jsxs("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("rect", { x: "2", y: "6", width: "16", height: "11", rx: "1", stroke: "black", fill: "none" }), _jsx("path", { d: "M7 6V4C7 3.44772 7.44772 3 8 3H12C12.5523 3 13 3.44772 13 4V6", stroke: "black", fill: "none" }), _jsx("line", { x1: "2", y1: "11", x2: "18", y2: "11", stroke: "black" })] }));
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { JobPositionGroupAttributes, JobPositionGroupOptions, JobPositionGroupMode, JobPositionGroupSortBy, JobPositionGroupSortOrder, } from './types';
|
|
2
|
+
export { createJobPositionGroupBlock } from './factory';
|
|
3
|
+
export { JobPositionsSelectModal } from './JobPositionsSelectModal';
|
|
4
|
+
import type { JobPositionGroupOptions } from './types';
|
|
5
|
+
export declare const jobPositionGroupDefaults: JobPositionGroupOptions;
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/blocks/career/job-position-group/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,SAAS,CAAA;AAChB,OAAO,EAAC,2BAA2B,EAAC,MAAM,WAAW,CAAA;AACrD,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAA;AAEjE,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,SAAS,CAAA;AAEpD,eAAO,MAAM,wBAAwB,EAAE,uBAEtC,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { BriloBlockType } from '../../../types';
|
|
2
|
+
import type { JOB_POSITION_GROUP_MODES, JOB_POSITION_GROUP_SORT_BYS, JOB_POSITION_GROUP_SORT_ORDERS } from './constants';
|
|
3
|
+
export type JobPositionGroupMode = (typeof JOB_POSITION_GROUP_MODES)[number];
|
|
4
|
+
export type JobPositionGroupSortBy = (typeof JOB_POSITION_GROUP_SORT_BYS)[number];
|
|
5
|
+
export type JobPositionGroupSortOrder = (typeof JOB_POSITION_GROUP_SORT_ORDERS)[number];
|
|
6
|
+
export interface JobPositionGroupAttributes extends Record<string, unknown> {
|
|
7
|
+
mode: JobPositionGroupMode;
|
|
8
|
+
selectedPositions: number[];
|
|
9
|
+
perPage: number;
|
|
10
|
+
sortBy: JobPositionGroupSortBy;
|
|
11
|
+
sortOrder: JobPositionGroupSortOrder;
|
|
12
|
+
}
|
|
13
|
+
export interface SelectControlProps {
|
|
14
|
+
selectedItems: number[];
|
|
15
|
+
onChange: (ids: number[]) => void;
|
|
16
|
+
}
|
|
17
|
+
export interface JobPositionGroupOptions extends BriloBlockType {
|
|
18
|
+
renderPositionsControl?: (props: SelectControlProps) => JSX.Element;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/blocks/career/job-position-group/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AAC3C,OAAO,KAAK,EAAC,wBAAwB,EAAE,2BAA2B,EAAE,8BAA8B,EAAC,MAAM,aAAa,CAAA;AAEtH,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAA;AAC5E,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAA;AACjF,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,8BAA8B,CAAC,CAAC,MAAM,CAAC,CAAA;AAEvF,MAAM,WAAW,0BAA2B,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,IAAI,EAAE,oBAAoB,CAAA;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,sBAAsB,CAAA;IAC9B,SAAS,EAAE,yBAAyB,CAAA;CACrC;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CAClC;AAED,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,GAAG,CAAC,OAAO,CAAA;CACpE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentsSelectModal.d.ts","sourceRoot":"","sources":["../../../../src/blocks/document/documents-grid/DocumentsSelectModal.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAqC,MAAM,OAAO,CAAA;AACzD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAA;AAgH/C;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,EAAC,aAAa,EAAE,QAAQ,EAAC,EAAE,kBAAkB,qBAiJjF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const DOCUMENTS_GRID_MODES: readonly ['manual', 'category'];
|
|
2
|
+
export declare const DOCUMENTS_GRID_LISTING_STYLES: readonly ['classic', 'group-by-category'];
|
|
3
|
+
export declare const DOCUMENTS_GRID_SORT_BYS: readonly ['menu_order', 'date', 'manual-order'];
|
|
4
|
+
export declare const DOCUMENTS_GRID_COLUMN_OPTIONS: readonly [1, 2, 3, 4, 6];
|
|
5
|
+
export declare const DOCUMENTS_GRID_MODE: "manual";
|
|
6
|
+
export declare const DOCUMENTS_GRID_LISTING_STYLE: "classic";
|
|
7
|
+
export declare const DOCUMENTS_GRID_SORT_BY: "manual-order";
|
|
8
|
+
export declare const DOCUMENTS_GRID_COLUMNS: 1;
|
|
9
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/blocks/document/documents-grid/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,YAAI,QAAQ,EAAE,UAAU,CAAU,CAAA;AACnE,eAAO,MAAM,6BAA6B,YAAI,SAAS,EAAE,mBAAmB,CAAU,CAAA;AACtF,eAAO,MAAM,uBAAuB,YAAI,YAAY,EAAE,MAAM,EAAE,cAAc,CAAU,CAAA;AACtF,eAAO,MAAM,6BAA6B,YAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU,CAAA;AAErE,eAAO,MAAM,mBAAmB,UAA0B,CAAA;AAC1D,eAAO,MAAM,4BAA4B,WAAmC,CAAA;AAC5E,eAAO,MAAM,sBAAsB,gBAA6B,CAAA;AAChE,eAAO,MAAM,sBAAsB,GAAmC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const DOCUMENTS_GRID_MODES = ['manual', 'category'];
|
|
2
|
+
export const DOCUMENTS_GRID_LISTING_STYLES = ['classic', 'group-by-category'];
|
|
3
|
+
export const DOCUMENTS_GRID_SORT_BYS = ['menu_order', 'date', 'manual-order'];
|
|
4
|
+
export const DOCUMENTS_GRID_COLUMN_OPTIONS = [1, 2, 3, 4, 6];
|
|
5
|
+
export const DOCUMENTS_GRID_MODE = DOCUMENTS_GRID_MODES[0];
|
|
6
|
+
export const DOCUMENTS_GRID_LISTING_STYLE = DOCUMENTS_GRID_LISTING_STYLES[0];
|
|
7
|
+
export const DOCUMENTS_GRID_SORT_BY = DOCUMENTS_GRID_SORT_BYS[2];
|
|
8
|
+
export const DOCUMENTS_GRID_COLUMNS = DOCUMENTS_GRID_COLUMN_OPTIONS[0];
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DocumentsGridAttributes, DocumentsGridOptions } from './types';
|
|
2
|
+
export declare function createDocumentsGridEdit(options: DocumentsGridOptions): ({ attributes, setAttributes, }: {
|
|
3
|
+
attributes: DocumentsGridAttributes;
|
|
4
|
+
setAttributes: (a: Partial<DocumentsGridAttributes>) => void;
|
|
5
|
+
}) => import("react").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=edit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../../src/blocks/document/documents-grid/edit.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,uBAAuB,EAAE,oBAAoB,EAAC,MAAM,SAAS,CAAA;AAE1E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,oCAIhE;IACD,UAAU,EAAE,uBAAuB,CAAA;IACnC,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,KAAK,IAAI,CAAA;CAC7D,iCA+EF"}
|
|
@@ -2,19 +2,21 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
|
|
|
2
2
|
import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
|
|
3
3
|
import { PanelBody, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption, } from '@wordpress/components';
|
|
4
4
|
import { __ } from '@wordpress/i18n';
|
|
5
|
-
import
|
|
6
|
-
|
|
5
|
+
import clsx from 'clsx';
|
|
6
|
+
import { DOCUMENTS_GRID_COLUMN_OPTIONS } from './constants';
|
|
7
|
+
export function createDocumentsGridEdit(options) {
|
|
7
8
|
return function Edit({ attributes, setAttributes, }) {
|
|
8
9
|
var _a, _b;
|
|
10
|
+
var _c;
|
|
9
11
|
const { mode, listingStyle, sortBy, columns, selectedDocuments, selectedCategories } = attributes;
|
|
10
|
-
const blockProps = useBlockProps({ className: 'wp-block-section' });
|
|
12
|
+
const blockProps = useBlockProps({ className: clsx((_c = options.blockClassName) !== null && _c !== void 0 ? _c : 'g-documents wp-block-section') });
|
|
11
13
|
return (_jsxs(_Fragment, { children: [_jsx(InspectorControls, { children: _jsxs(PanelBody, { title: __('Nastavení výpisu', 'brilo-blocks'), initialOpen: true, children: [_jsxs(ToggleGroupControl, { label: __('Zdroj dokumentů', 'brilo-blocks'), value: mode, onChange: (value) => {
|
|
12
14
|
const nextMode = value;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
});
|
|
17
|
-
}, isBlock: true, children: [_jsx(ToggleGroupControlOption, { value: "manual", label: __('Ruční výběr', 'brilo-blocks') }), _jsx(ToggleGroupControlOption, { value: "category", label: __('Dle kategorie', 'brilo-blocks') })] }), _jsxs(ToggleGroupControl, { label: __('Styl výpisu', 'brilo-blocks'), value: listingStyle, onChange: (value) => setAttributes({ listingStyle: value }), isBlock: true, children: [_jsx(ToggleGroupControlOption, { value: "classic", label: __('Klasický výpis', 'brilo-blocks') }), _jsx(ToggleGroupControlOption, { value: "group-by-category", label: __('Dle kategorií', 'brilo-blocks') })] }), _jsxs(ToggleGroupControl, { label: __('Řazení', 'brilo-blocks'), value: sortBy, onChange: (value) => setAttributes({ sortBy: value }), isBlock: true, children: [_jsx(ToggleGroupControlOption, { value: "menu_order", label: __('Pořadí', 'brilo-blocks') }), _jsx(ToggleGroupControlOption, { value: "date", label: __('Datum', 'brilo-blocks') }), 'manual' === mode && _jsx(ToggleGroupControlOption, { value: "manual-order", label: __('Dle výběru', 'brilo-blocks') })] }), _jsx(ToggleGroupControl, { label: __('Počet sloupců', 'brilo-blocks'), help: 'group-by-category' === listingStyle ? __('Platí pro seznam dokumentů uvnitř každé kategorie.', 'brilo-blocks') : undefined, value: String(columns), onChange: (value) => setAttributes({ columns: Number(value) }), isBlock: true, children:
|
|
15
|
+
// "manual-order" sorting only makes sense for a manually picked list —
|
|
16
|
+
// fall back to "menu_order" when switching away from manual mode.
|
|
17
|
+
const nextSortBy = 'category' === nextMode && 'manual-order' === sortBy ? 'menu_order' : sortBy;
|
|
18
|
+
setAttributes({ mode: nextMode, sortBy: nextSortBy });
|
|
19
|
+
}, isBlock: true, children: [_jsx(ToggleGroupControlOption, { value: "manual", label: __('Ruční výběr', 'brilo-blocks') }), _jsx(ToggleGroupControlOption, { value: "category", label: __('Dle kategorie', 'brilo-blocks') })] }), _jsxs(ToggleGroupControl, { label: __('Styl výpisu', 'brilo-blocks'), value: listingStyle, onChange: (value) => setAttributes({ listingStyle: value }), isBlock: true, children: [_jsx(ToggleGroupControlOption, { value: "classic", label: __('Klasický výpis', 'brilo-blocks') }), _jsx(ToggleGroupControlOption, { value: "group-by-category", label: __('Dle kategorií', 'brilo-blocks') })] }), _jsxs(ToggleGroupControl, { label: __('Řazení', 'brilo-blocks'), value: sortBy, onChange: (value) => setAttributes({ sortBy: value }), isBlock: true, children: [_jsx(ToggleGroupControlOption, { value: "menu_order", label: __('Pořadí', 'brilo-blocks') }), _jsx(ToggleGroupControlOption, { value: "date", label: __('Datum', 'brilo-blocks') }), 'manual' === mode && _jsx(ToggleGroupControlOption, { value: "manual-order", label: __('Dle výběru', 'brilo-blocks') })] }), _jsx(ToggleGroupControl, { label: __('Počet sloupců', 'brilo-blocks'), help: 'group-by-category' === listingStyle ? __('Platí pro seznam dokumentů uvnitř každé kategorie.', 'brilo-blocks') : undefined, value: String(columns), onChange: (value) => setAttributes({ columns: Number(value) }), isBlock: true, children: DOCUMENTS_GRID_COLUMN_OPTIONS.map((c) => (_jsx(ToggleGroupControlOption, { value: String(c), label: String(c) }, c))) })] }) }), _jsxs("div", { ...blockProps, children: ['category' === mode &&
|
|
18
20
|
((_a = options.renderCategoryControl) === null || _a === void 0 ? void 0 : _a.call(options, {
|
|
19
21
|
selectedItems: selectedCategories,
|
|
20
22
|
onChange: (ids) => setAttributes({ selectedCategories: ids }),
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BlockConfiguration } from '@wordpress/blocks';
|
|
2
|
+
import type { DocumentsGridAttributes, DocumentsGridOptions } from './types';
|
|
3
|
+
export type { DocumentsGridAttributes, DocumentsGridOptions };
|
|
4
|
+
export declare function createDocumentsGridBlock(options: DocumentsGridOptions): BlockConfiguration<DocumentsGridAttributes>;
|
|
5
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/blocks/document/documents-grid/factory.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAA;AAczD,OAAO,KAAK,EAAC,uBAAuB,EAAE,oBAAoB,EAAC,MAAM,SAAS,CAAA;AAE1E,YAAY,EAAC,uBAAuB,EAAE,oBAAoB,EAAC,CAAA;AAE3D,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,oBAAoB,GAAG,kBAAkB,CAAC,uBAAuB,CAAC,CA4CnH"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __ } from '@wordpress/i18n';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { DOCUMENTS_GRID_COLUMN_OPTIONS, DOCUMENTS_GRID_COLUMNS, DOCUMENTS_GRID_LISTING_STYLE, DOCUMENTS_GRID_LISTING_STYLES, DOCUMENTS_GRID_MODE, DOCUMENTS_GRID_MODES, DOCUMENTS_GRID_SORT_BY, DOCUMENTS_GRID_SORT_BYS, } from './constants';
|
|
3
|
+
import { createDocumentsGridEdit } from './edit';
|
|
4
4
|
import { icon as defaultIcon } from './icon';
|
|
5
|
-
export function
|
|
5
|
+
export function createDocumentsGridBlock(options) {
|
|
6
6
|
var _a, _b, _c;
|
|
7
7
|
return {
|
|
8
8
|
name: options.name,
|
|
@@ -15,23 +15,23 @@ export function createDocumentsGroupBlock(options) {
|
|
|
15
15
|
attributes: {
|
|
16
16
|
mode: {
|
|
17
17
|
type: 'string',
|
|
18
|
-
default:
|
|
19
|
-
enum: [
|
|
18
|
+
default: DOCUMENTS_GRID_MODE,
|
|
19
|
+
enum: [...DOCUMENTS_GRID_MODES],
|
|
20
20
|
},
|
|
21
21
|
listingStyle: {
|
|
22
22
|
type: 'string',
|
|
23
|
-
default:
|
|
24
|
-
enum: [
|
|
23
|
+
default: DOCUMENTS_GRID_LISTING_STYLE,
|
|
24
|
+
enum: [...DOCUMENTS_GRID_LISTING_STYLES],
|
|
25
25
|
},
|
|
26
26
|
sortBy: {
|
|
27
27
|
type: 'string',
|
|
28
|
-
default:
|
|
29
|
-
enum: [
|
|
28
|
+
default: DOCUMENTS_GRID_SORT_BY,
|
|
29
|
+
enum: [...DOCUMENTS_GRID_SORT_BYS],
|
|
30
30
|
},
|
|
31
31
|
columns: {
|
|
32
32
|
type: 'number',
|
|
33
|
-
default:
|
|
34
|
-
enum: [
|
|
33
|
+
default: DOCUMENTS_GRID_COLUMNS,
|
|
34
|
+
enum: [...DOCUMENTS_GRID_COLUMN_OPTIONS],
|
|
35
35
|
},
|
|
36
36
|
selectedDocuments: {
|
|
37
37
|
type: 'array',
|
|
@@ -44,7 +44,7 @@ export function createDocumentsGroupBlock(options) {
|
|
|
44
44
|
items: { type: 'number' },
|
|
45
45
|
},
|
|
46
46
|
},
|
|
47
|
-
edit:
|
|
47
|
+
edit: createDocumentsGridEdit(options),
|
|
48
48
|
save: () => null,
|
|
49
49
|
};
|
|
50
50
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../src/blocks/document/documents-grid/icon.tsx"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,6BAQhB,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { DocumentsGridAttributes, DocumentsGridOptions, DocumentsGridListingStyle, DocumentsGridMode, DocumentsGridSortBy, } from './types';
|
|
2
|
+
export { createDocumentsGridBlock } from './factory';
|
|
3
|
+
export { DocumentsSelectModal } from './DocumentsSelectModal';
|
|
4
|
+
import type { DocumentsGridOptions } from './types';
|
|
5
|
+
export declare const documentsGridDefaults: DocumentsGridOptions;
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/blocks/document/documents-grid/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAC,wBAAwB,EAAC,MAAM,WAAW,CAAA;AAClD,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAA;AAE3D,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,SAAS,CAAA;AAEjD,eAAO,MAAM,qBAAqB,EAAE,oBAEnC,CAAA"}
|