«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Пак vPermissions

Пак vPermissions

Опубликовано 1 ноября 2024 г.
Просматривать:321

Puck vPermissions

Puck — это визуальный редактор с открытым исходным кодом для React, созданный Measured — автономная альтернатива builder.io, WordPress и другим инструментам WYSIWYG.


Мы отмечаем 5000 звезд на GitHub! Спасибо нашему замечательному сообществу!

Puck v0.16 — это большой релиз, в котором представлен API разрешений для заголовков и, как вы уже догадались, улучшения качества жизни. На создание этого потребовалось некоторое время, и мы ценим ваше терпение и поддержку.

  • Разрешения: переключайте такие функции Puck, как дублирование, перетаскивание и удаление, с помощью новых разрешений и API разрешения разрешений.
  • Переопределение панели действий: создавайте собственные панели действий, используя переопределение actionBar, или расширяйте панель по умолчанию, используя новый компонент .
  • Внедрение стиля iframe: доступ к документу iframe для непосредственного внедрения стилей или внесения других изменений с помощью нового переопределения iframe. Мы также представили плагин кеширования эмоций для общего сценария использования Emotion.
  • Внедрение истории: добавление истории отмены/повтора с помощью ряда новых API
  • Реакция на действия: реакция на действия, отправленные Puck через обратный вызов onAction.
  • Необязательные поля: дополнительные реквизиты больше не требуется определять в полях, поскольку они могут быть определены

Обновите сегодня или начните с:

npx create-puck-app@latest

Разрешения

Разрешения позволяют переключать основные функции Puck глобально, для каждого компонента или динамически. Огромное спасибо @xaviemirmon за его усилия.

export function Editor() {
  return (
    
  );
}

Переопределение панели действий

Новое переопределение actionBar позволяет создавать настраиваемое наложение панели действий или расширять стандартное наложение с помощью компонента :

const overrides = {
  actionBar: ({ children }) => (
    
      {/* Render default actions */}
      {children}

      {/* Render new actions */}
      
         console.log("Clicked!")}>
          ★
        
      
    
  ),
};

внедрение стиля iframe

Переопределение iframe позволяет получить доступ к документу iframe, что позволяет вставлять стили в заголовок:

const overrides = {
  iframe: ({ children, document }) => {
    useEffect(() => {
      if (document) {
        document.body.setAttribute("style", "background: hotpink;");
      }
    }, [document]);

    return {children}>;
  },
};

Новый плагин кеширования эмоций использует этот API для создания кеша эмоций внутри iframe, что упрощает использование Puck с любой библиотекой компонентов на основе эмоций.

Внедрение истории

Используйте новые API-интерфейсы внедрения истории, чтобы предоставить собственную историю отмены/повтора с помощью свойства InitialHistory или динамически с помощью функций setHistories и setHistoryIndex из usePuck().history.

const historyState = {
  data: {
    root: {
      props: { title: "My History" },
    },
  },
};

export function Editor() {
  return (
    
  );
}

Реагировать на действия

API onAction позволяет вам реагировать на внутренние действия Puck по мере их отправки:

export function Editor() {
  return (
     {
        if (action.type === "insert") {
          console.log("New component was inserted", appState);
        }
      }}
    />
  );
}

Критические изменения

History.data теперь называется History.state.

При использовании API истории usePuck данные теперь переименовываются в состояние.

History.id теперь необязателен (TypeScript)

При использовании API истории usePuck идентификатор теперь не является обязательным. Puck всегда генерирует идентификатор, но TypeScript может жаловаться.

LastData теперь возвращается как null вместо {}, если в преобразователях пусто.

При использовании опции LastData, предоставленной для функцийsolveData илиsolveFields, и предыдущих данных нет, значение LastData теперь будет нулевым, а не {}.

Полный список изменений

Функции

  • добавить переопределение actionBar для добавления элементов управления компонентом (48ec0d7)
  • добавить автоматический экспорт RSC, заменив пакет /rsc (d21eba6)
  • добавить свойство isDisabled в Drawer.Item (cad95b8)
  • добавить общий тип для использования крючка UsePuck (01703a9)
  • добавить переопределение iframe для внедрения стилей (7cac376)
  • добавить реквизит InitialHistory в Puck (54b5a87)
  • добавить API onAction для отслеживания и реагирования на изменения состояния (c7007ac)
  • добавить API разрешений (a43914d)
  • добавить плагин для внедрения кеша эмоций (f8a88b9)
  • добавить API разрешения разрешений (f0655f0)
  • добавить параметр waitForStyles в конфигурацию iframe (bc81d9c)
  • вызовитеsolveData при вставке нового элемента (3298831)
  • не указывать поля для необязательных реквизитов (5a219ef)
  • экспортировать компонент ActionBar для использования в переопределениях (04fd6c5)
  • определить тип данных из конфигурации пользователя (50045bb)
  • сделать идентификатор необязательным в типе истории (КРАТКОЕ ИЗМЕНЕНИЕ) (d917229)
  • предоставьте сборку модуля ES (ff9076b)
  • переименуйте History.data в History.state (КРАТКОЕ ИЗМЕНЕНИЕ) (b09244c)
  • показывать счетчик, если загрузка iframe превышает 500 мс (cfecf54)
  • оптимизировать API истории использования Puck (c8b2807)
  • обновить "следующий" рецепт до [email protected] (60fe631)

Исправления ошибок

  • добавьте значок к следующему рецепту, чтобы предотвратить Puck 404 (2c52d27)
  • добавить отсутствующее состояние readOnly во внешние поля (bf1449d)
  • всегда записывать историю при вставке компонента (88c5ab6)
  • не кэшировать/редактировать маршрут в следующем рецепте (94f16b2)
  • не отправлять кнопки, если в форме используется Puck (f761e5f)
  • убедитесь, что демонстрационные типы удовлетворяют требованиям TypeScript@5 (958dc25)
  • экспортировать отсутствующий тип плагина (eb42734)
  • исправлен сбой, если компонент в данных отсутствует в конфигурации (0daf478)
  • улучшение устойчивости CSS iframe для некоторых фреймворков, таких как Mantine (538cb05)
  • сделать типы конфигурации и данных более надежными (6bcf555)
  • предотвратить бесконечный цикл при использовании плагинов с некоторыми фреймворками (3870871)
  • предотвратить конфликт Tailwind с выбором масштабирования видового экрана (9151255)
  • удалить поля тела в рецепте ремикса (0898b26)
  • изменить размер области просмотра при изменении состояния приложения (14419ec)
  • разрешить поля при переключении между элементами одного типа (a3518ca)
  • возвратить LastData как нулевой вместо пустого объекта в преобразователях (КРАТКОЕ ИЗМЕНЕНИЕ) (648eb92)
  • показывать предупреждение, если стили анализатора заголовков не загружены (4e7110b)
  • используйте правильный цвет в метках FieldLabel (b0469a1)

Новые участники

  • @mkilpatrick внесли свой первый вклад в https://github.com/measuredco/puck/pull/505
  • @nova4u сделали свой первый вклад в https://github.com/measuredco/puck/pull/538
  • @antonmalyavkin сделали свой первый вклад в https://github.com/measuredco/puck/pull/585

Полный журнал изменений: https://github.com/measuredco/puck/compare/v0.15.0...v0.16.0

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/chrisvxd/puck-v016-permissions-3p5d?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3